Beim Aufräumen im Keller habe ich ein älteres Mainboard, ein VIA EPIA ME6000 gefunden. Da ich mir schon länger einen kleinen Homeserver, als Druckserver, Nameserver, Zeitserver und Mailserver aufsetzen wollte, kam es mir gerade recht. Allerdings finde ich es störend, wenn ständig ein PC mit Lüfter, Festplatte, CD-ROM, etc. hinter mir brummt. Einmal ganz abgesehen vom Stromverbrauch. Daher möchte ich den Server nur mit einem USB-Stick und dem Mainboard, sowie einem externen Netzteil betreiben.
Der erste Schritt ist es also eine Gentoo Linux Installation nur mit Mainboard und USB-Stick hin zu bekommen. Dabei soll es keine Live-CD-Demo Variante sein, sondern eine vollwertige Linux Installation.
Gentoo bietet eine ausgezeichnete Anleitung zur Installation. In diesem Artikel beschreibe ich daher nur die Arbeitsschritte, die verändert werden müssen oder neu hin zu kommen, wenn man Gentoo Linux auf einem USB-Stick installieren möchte.
Verwendet habe ich die Gentoo Minimal CD 10.0. Das Image der Minimal CD kann von einem der Mirrorserver herunter geladen werden. Während der Installation habe ich ein CD-Laufwerk an das Mainboard angeschlossen und vor dem Starten den USB-Stick eingesteckt.
Also los geht’s. Die CD einlegen und den Rechner starten. Am Boot-Prompt habe ich mit
gentoo-nofb nodmraid nosata
den Kernel ohne Frambufferunterstützung, sowie ohne Raid und SATA gestartet.
Während des Bootvorgangs wird die gewünschte Tastaturbelegung abgefragt. Ich habe 10 für de = deutsche Tastaturbelegung ausgewählt. Wer diesen Punkt der Eingabe verpasst, kann auch hinterher
loadkeys de
eingeben. Damit wird die deutsche Tastaturbelegung ebenfalls geladen.
Jetzt folgt man dem oben genannten Leitfaden zur Gentoo Linux Installation.
Die erste Anpassung wird bei der Vorbereitung der Festplatten bzw. des USB-Sticks notwendig.
Bei der Aufteilung des USB-Sticks (bei mir /dev/sda) legt man folgende Partitionen an:
sda1 primär fat16 100MB
sda2 primär swap 512MB
sda3 primär ext2 Rest
Ist die Partitionstabelle angelegt bereitet, man die Dateisysteme vor.
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext2 /dev/sda3
mkfs.vfat /dev/sda1
Dann folgt man weiter der Anleitung (Abschnitt 4.e Mounten).
Für die Compileroptionen im Abschnitt 5.d wählt man:
CHOST="i586-pc-linux-gnu"
CFLAGS="-march=c3 -m3dnow -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
Unter „Auswahl des richtigen Profils“ habe ich das Standardprofil mit der Nummer 1 verwendet. Versuche mit anderen, fortgeschrittenen Profilen, waren erfolglos, da es beim installieren weiterer Pakete häufig zu Compile-Fehlern kam.
Die richtige Konfiguration des Kernels ist wichtig, um einen lauffähigen Bootvorgang von einem USB-Stick aus zu gewährleisten. Daher gibt es meine Konfiguration hier zum Download.
Nach dem Download kopiert die Datei einfach in das Verzeichnis /usr/src.
Den Kernel erzeugt man am Einfachsten mit genkernel.
emerge genkernel
cd /usr/src/linux
genkernel --kernel-config=../kernelconfig3 all
Der Vorgang den Kernel zu erzeugen dauert dann doch ein bisserl. Der richtige Zeitpunkt eine Pause zu machen.
Von ganz entscheidender Bedeutung ist die Einstellung:
Device Drivers -->
Generic Driver Options -->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
Sind diese Optionen nicht aktiv, dann wird der USB-Stick zwar erkannt, aber er kann nicht aus dem initrd Skript heraus angesprochen werden. D.h., man kommt ohne die Optionen immer nur in den Maintenance-Mode, kann aber nie richtig booten.
Nur der Vollständigkeit halber hier die Datei /etc/fstab:
# /etc/fstab: static file system information.
#
/dev/sda1 /boot vfat noauto,noatime 1 2
/dev/sda3 / ext2 noatime 0 1
/dev/sda2 none swap sw 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Bis zur Einrichtung des Bootloaders geht jetzt alles nach Anleitung.
Als Bootloader verwendet man syslinux, um den USB-Stick zu booten.
Die Installation von syslinux geschieht wie folgt:
emerge syslinux
syslinux /dev/sda1
Abschließend legt man jetzt noch die Datei /boot/syslinux.cfg an, die dem Bootloader mitteilt, wo er den Kernel findet und mit welchen Parametern dieser zu starten ist.Eine Erklärung der verschiedenen Parameter findet man auf dieser Seite.
DEFAULT linux
LABEL linux
SAY Now booting the kernel from SYSLINUX...
KERNEL kernel-genkernel-x86-2.6.34-gentoo-r6
INITRD initramfs-genkernel-x86-2.6.34-gentoo-r6
APPEND rootwait root=/dev/ram0 real_root=/dev/sda3 init=/linuxrc
Die Dateinamen für den KERNEL und den INITRD Parameter sind ggf. anzupassen. Die Dateien stehen unter /boot.
Beim nun bevorstehenden Reboot muss man nur noch daran denken die Bootreihenfolge im BIOS anzupassen.
Bei meinem USB-Stick hat USB-HDD als erstes Bootdevice und die weiteren Bootdevices auf Disabled einstellen bestens funktioniert.
Als nächstes werde ich versuchen diese Installation energieoptimiert zu betreiben. Ich stelle mir vor, das Gerät geht in den Tiefschlaf nach einer bestimmten Anzahl von Minuten und wird durch ein ping oder Ähnliches wieder aufgeweckt. Ich werde darüber berichten.