Installation von Gentoo

:!: Achtung, älterer Beitrag (nach Update, falls benötigt entfernen)

Zuerst partitonieren und formatieren wir unsere virtuelle Festplatte /dev/vdaX. Danach hängen wir sie in der Live-CD ein.

mount /dev/vda1 /mnt/gentoo/  

Um Zeit und Datum zu überprüfen, führen Sie date aus: Wenn Zeit oder Datum falsch angezeigt wird, passen Sie die Einstellung mit der date MMDDhhmmYYYY Syntax (Month, Day, hour, minute und Year) an. Zu diesem Zeitpunkt sollten Sie UTC-Zeit verwenden. Sie werden später die Gelegenheit dazu haben Ihre lokale Zeitzone anzugeben. Um die Zeiteinstellung auf den 29. März 2005, 16:21 Uhr zu setzen, führen Sie zum Beispiel folgenden Befehl aus:

date 102522392010

Nun laden wir uns die aktuell Stage3 herunter. Hierzu wechseln wir in unser zuvor eingehängtes Laufwerk.

cd /mnt/gentoo
wget -c http://mirrors.kernel.org/gentoo/releases/amd64/autobuilds/current-stage3/stage3-amd64-20101021.tar.bz2
wget -c http://mirrors.kernel.org/gentoo/releases/amd64/autobuilds/current-stage3/stage3-amd64-20101021.tar.bz2.DIGESTS
wget -c http://mirrors.kernel.org/gentoo/releases/amd64/autobuilds/current-stage3/stage3-amd64-20101021.tar.bz2.CONTENTS

Jetzt überprüfen wir noch unseren Download.

md5sum -c stage3-amd64-20101021.tar.bz2.DIGESTS

Ist alles OK, können wir das Archiv entpacken.

tar xvjpf stage3-*.tar.bz2

Sie müssen einen Snapshot des Portage-Tree installieren, eine Sammlung von Dateien, die Portage informieren, welche Porgramme installiert werden können, welche Profile es gibt, etc. Wechseln Sie zu dem Mountpoint, an den Sie Ihre Dateisystem gemountet haben (meistens /mnt/gentoo):

wget -c http://gentoo.inode.at/snapshots/portage-latest.tar.bz2 && wget -c http://gentoo.inode.at/snapshots/portage-latest.tar.bz2.md5sum && wget -c http://gentoo.inode.at/snapshots/portage-latest.tar.bz2.gpgsig

Jetzt überprüfen wir noch unseren Download.

md5sum -c portage-latest.tar.bz2.md5sum

Ist alles OK, können wir das Archiv entpacken.

tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

Um Gentoo zu optimieren, können Sie einige Variablen setzen, die Einfluss auf das Verhalten von Portage nehmen. Alle diese Variablen können als Umgebungsvariablen (mit export) gesetzt werden, dies ist aber keine dauerhafte Lösung. Um Ihre Einstellungen zu behalten, bietet Portage Ihnen /etc/make.conf, eine Konfigurationsdatei für Portage. Diese Datei werden wir nun bearbeiten.

nano /mnt/gentoo/etc/make.conf
#PORTAGE_ELOG_CLASSES="log warn error info"
#PORTAGE_ELOG_SYSTEM="echo save"
PORTAGE_NICENESS="10"


CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"

USE="ssse3 bonjour zeroconf avahi symlink -X"

FEATURES="ccache"
#FEATURES="ccache -pid-sandbox" # For CT's, LXC
CCACHE_SIZE="2G"
MAKEOPTS="-j3"

INPUT_DEVICES="evdev"

LINGUAS="de"
ACCEPT_LICENSE="*"

Um einen aktuellen Spiegelserver zu benutzen suchen wir uns einen aus:

mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

Kopieren der DNS-Informationen

cp -L /etc/resolv.conf /mnt/gentoo/etc/
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev

Nachdem nun alle Partitionen initialisiert und das Basissystem installiert ist, können Sie nun Ihre neue Installationsumgebung betreten, indem Sie in die Umgebung chrooten. Das bedeutet, dass Sie von der aktuellen Installationsumgebung (die Installations-CD oder ein anderes Installationsmedium) in Ihr zu installierendes System (nämlich das der initialisierten Partitionen) wechseln. Das chrooting erfolgt in 3 Schritten. Als erstes werden wir das root von / (auf dem Installationsmedium) nach /mnt/gentoo (auf Ihren Partitionen) mittels chroot wechseln. Sie müssen nun eine neue Umgebung anlegen, indem Sie env-update benutzen, was hauptsächlich neue Umgebungsvariablen anlegt. Zu guter Letzt laden Sie diese Variablen durch den Befehl source in den Speicher.

chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"

Sie sollten nun Ihren Portage-Tree auf den aktuellsten Stand bringen. emerge –sync macht dies für uns. Zunächst ist eine kleine Defintion notwendig. Ein Profil ist existenziell für ein Gentoo-System. Es definiert nicht nur Standardwerte für USE, CFLAGS und andere wichtige Variablen, es beschränkt das System auch auf eine definierte Masse an Paketversionen. Dies alles wird von Gentoo-Entwicklern betreut. Bisher hatten Benutzer mit Profilen wenig zu tun. Jedoch kann es bestimmte Umstände geben in denen ein Profilwechsel möglicherweise notwendig ist. Sie können das aktuell verwendete Profil mit dem folgenden Befehl anzeigen:

eselect profile list

Unseren Fall bleiben wir bei dem Standardprofil.

cp /usr/share/zoneinfo/Europe/Vienna /etc/localtime
nano -w /etc/conf.d/hwclock (sollte auf UTC stehen)
nano /etc/timezone

und dies eintragen:

Europe/Vienna

Jetzt kann man schon mal mit „date“ die Zone überprüfen. Es wird empfohlen die Zeit mit Hilfe eines Zeitservers abzugleichen. Jetzt noch die Datei /etc/env.d/02locale und die gewünschte Codierung eintragen.

nano /etc/env.d/02locale

und

LANG="de_AT.utf8"
LC_COLLATE="C"

und

nano /etc/locale.gen

Folgende Dinge eintragen:

#en_US ISO-8859-1
en_US UTF-8
#de_DE ISO-8859-1
de_DE UTF-8
de_AT UTF-8

eintragen. Damit die Änderungen auch wirksam werden muss man die locale generieren und die ENV neu einlesen.

locale-gen
env-update && source /etc/profile && export PS1="(chroot) $PS1"
locale -a
eselect locale list
eselect locale set <your number>

neu einlesen.

So das System ist jetzt auf Deutsch localisiert. Das heist aber noch lange nicht das die Programm auch auf Deutsch sind. Hierzu muss man natürlich die Deutschen Sprachpakete nachinstallieren. Möchte man auch das Tastaturenlayout auf Deutsche Tastatur umstellen, geht man wie folgt vor. Das von der Konsole verwendete Tastaturlayout wird in /etc/conf.d/keymaps durch die Variable KEYMAP gesetzt. Gültige Werte können /usr/share/keymaps/{arch}/ entnommen werden. i386 hat weitere Unterteilungen nach dem Layout (qwerty/, azerty/, usw.). Einige Sprachen haben mehrere Optionen, daher müssen Sie möglicherweise etwas experimentieren, um entscheiden zu können, welche davon Ihren Bedürfnissen am ehesten entspricht.

nano /etc/conf.d/keymaps

Und folgendes eintragen:

KEYMAP="de"
KEYMAP="de-latin1"
KEYMAP="de-latin1-nodeadkeys"
A C H T U N G
Das Rootpasswort mit passwd nicht vergessen zu setzen!!!

Zuerst erstellt man sich die richtigen Useflags:

nano /etc/portage/package.use

edia-libs/gd jpeg png
net-dns/avahi mdnsresponder-compat autoipd howl-compat dbus python
net-misc/ntp caps -zeroconf
media-libs/gd truetype fontconfig
www-client/elinks ftp
net-nds/openldap minimal
app-portage/layman cvs git mercurial subversion
#app-admin/webmin apache2 mysql
net-analyzer/nagios-plugins ipv6 nagios-ssh ssl
net-analyzer/nagios-nrpe command-args
net-fs/nfs-utils -nfsv3

Webmin freischalten:

echo "app-admin/webmin" >> /etc/portage/package.unmask
nano /etc/portage/package.keywords

app-admin/webmin **
>=dev-perl/Authen-Libwrap-0.220.0 ~amd64

Am einfachsten kommt man über das Tool genkernel zu einem lauffähigen Kernel für das neu zu installierende System. Es konfiguriert und kompiliert die Kernel-Quellen. Da es nicht per Default installiert ist, müssen wir es an dieser Stelle einspielen.

emerge -av sys-kernel/genkernel app-portage/portage-utils gentoo-sources sys-boot/grub ccache net-misc/dhcpcd 
app-portage/gentoolkit app-portage/portage-utils eix avahi htop nmap net-misc/ntp acpid layman pciutils nagios-plugins
vixie-cron app-admin/syslog-ng elogv lsof mlocate app-misc/screen sys-auth/nss-mdns games-misc/cowsay

Um nun wirklich den einfachsten Weg zu wählen, machen wir uns zu Nutze, dass der Kernel der LiveDVD auf dem gerade zu installierenden System funktioniert. Ließ sich der Rechner erfolgreich von der Boot-DVD starten, muss die Konfiguration des Kernels auf der DVD für das entsprechende System passen. Entsprechend können wir die Konfiguration des aktuell über laufenden Kernels aus /proc/config.gz unbesehen übernehmen und so die Tücken einer vollständigen Kernel-Konfiguration erst einmal umgehen:

zcat /proc/config.gz > /usr/src/linux/.config

Mit dieser Basiskonfiguration ist genkernel in der Lage, den Kernel automatisiert zu übersetzen und zu installieren:

genkernel --dmraid --bootloader=grub --oldconfig --menuconfig all

Hierfür muss man zuerst mal die Datei

nano /etc/genkernel.conf

und folgendes am Ende eintragen.

MODULES_KVM="virtio virtio_balloon virtio_ring virtio_pci virtio_blk virtio_net"

Danach muss man vor dem Kernel kompilieren noch folgende Dinge als Modul konfigurieren:

genkernel --bootloader=grub --oldconfig --menuconfig all

Device Drivers --> Block devices --> Virtio block driver
Device Drivers --> Network device support --> Virtio network driver

cat .config | grep VIRTIO
CONFIG_VIRTIO_BLK=m
CONFIG_VIRTIO_NET=m
# CONFIG_VIRTIO_CONSOLE is not set
# CONFIG_HW_RANDOM_VIRTIO is not set
CONFIG_VIRTIO=m
CONFIG_VIRTIO_RING=m
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_BALLOON=m

Nach dem Kompilieren muss man in der nano grub/menu.lst noch folgende Kerneloption anhängen:

doload=virtio_pci,virtio_blk
cd /etc && echo "127.0.0.1 gnagios.darkwolf.local gnagios localhost" > hosts && sed -i -e 's/HOSTNAME.*/HOSTNAME="gnagios"/' conf.d/hostname && hostname gnagios && hostname -f

In Openrc sollte man in der Konfiguratonsdatei noch folgende Änderungen vornehmen und Datensatze ein-kommentieren.

nano /etc/rc.conf
rc_hotplug="*"
rc_sys=""
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

/dev/sda1               /boot           ext3            noauto          0 0
/dev/sda2               /               ext4            noatime,discard,acl    0 1
/dev/sdb1               /var/tmp/portage     ext4       noatime,auto    0 0
/dev/sdb3               /mnt/daten      jfs             noatime,auto    0 2
/dev/sdb4               /mnt/system     ext4            noatime,auto,acl    0 3
/dev/cdrom3             /media/cdrom      auto            noauto,user     0 0
#/dev/sdc1              /mnt/backup-ztor ext4           noauto,user,noatime 0 0
# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0
#virtualbox USB fix
#none /proc/bus/usb usbfs devgid=1017,devmode=664 0 0

#none /proc/bus/usb usbfs devgid=85,devmode=664 0 0
nano /boot/grub/menu.lst

title Gentoo Linux 2.6.34-gentoo-r12
root (hd0,0)
kernel /boot/kernel-genkernel-x86_64-2.6.34-gentoo-r12 root=/dev/ram0 real_root=/dev/vda1
initrd /boot/initramfs-genkernel-x86_64-2.6.34-gentoo-r12

Grub installieren:

grep -v rootfs /proc/mounts > /etc/mtab

Wegen eines Bugs Grub >2.0 muss folgende Datei bearbeiten:

nano /boot/grub/device.map

(hd0) /dev/vda

Jetzt kann man mit folgenden Befehl Grub wie gewohnt installieren:

grub-install --no-floppy /dev/vda

Nun steht dem Reboot ins neue System nichts mehr entgegen.

Ist alles richtig hochgefahren muss man folgende Dinge in die „init.d“ eintragen. Vorher kann man noch die aktuellen Einträge mit rc-status aufrufen.

rc-update add ntp-client default
rc-update add avahi-daemon default
rc-update add avahi-dnsconfd default
rc-update add dbus default
rc-update add udev-postmount default
rc-update add sshd default
rc-update add net.eth0 default
rc-update add vixie-cron default
rc-update add acpid default
rc-update add syslog-ng default

Sollte es Probleme mit dem Zeitstempel Timestamp geben, kann dies wie folgt begeben.

touch /etc/{conf.d,init.d}/*

Crontab konfigurieren, mit dem Befehl

crontab -e

und dann folgendes eintragen:

# Diese Datei wurde von KCron generiert Donnerstag 05 August 2010 15:51.
# Shell variable for cron
SHELL=/bin/bash
# PATH variable for cron
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11

Nun sollte man das System von auf den aktuellen Stand bringen und das Basesystem mit Optimierung neu bauen.

emerge -qeauDN world

Und das wars auch schon.