blog · git · desktop · images · contact & privacy · gopher


Arch Linux auf einem vServer bei Hetzner – Reloaded

Etwa bei Sternzeit -312175.882196 (oder so) postete encbladexp, wie man Arch Linux auf einem vServer bei Hetzner installieren kann. Tja, das klingt doch verlockend. Den Spaß ließ ich mir nicht nehmen. Mein Blogpost hier wäre aber eigentlich recht überflüssig -- doch bei mir hat seine Vorgehensweise nicht ganz klappt. Daher beschreibe ich hier jetzt eine kleine Variante.

– Nachtrag 2012-09-12: Wie in den Kommentaren schon vor einiger Zeit angemerkt wurde, gibt es GRUB (Legacy) nicht mehr in Arch Linux. Sollte ich irgendwann mal in die Verlegenheit kommen, meinen Server neu aufsetzen zu müssen, werde ich diese Anleitung hier aktualisieren und (höchstwahrscheinlich) Syslinux verwenden. Ich hoffe, der folgende Text ist dennoch ein bisschen hilfreich und liefert Ideen.

Damit ich auch einen echten Ansporn hatte, das tatsächlich zum Laufen zu bringen, habe ich meinen Server gleich ohne Betriebssystem bestellt. Dann kann ich auch nicht auf die Idee kommen, für den Notfall ein Image des vorinstallierten Systems zu machen. ;) Als ich die Mail erhielt, dass der Server fertig sei, konnte ich zwar per SSH drauf, aber dort lief wie bestellt nur das "Rescue System".

Damit man sich davon ein besseres Bild machen kann: Der Provider stellt einem vorallem zwei wichtige Tools zur Verfügung, das ist zum einen das Rescue System und zum anderen VNC-Zugriff (zumindest bei vServern -- wie das bei echten Root-Servern heute ist, weiß ich nicht). Das Rescue System ist ein kleines GNU/Linux, was auf dem Server über das Netzwerk gebootet wird (PXE oder so). Egal, was man mit seiner Kiste anstellt, man kann somit immer den Reset-Knopf drücken (das geht über das zentrale Webinterface "Robot") und hat dann ein laufendes System, mit dem man das installierte System reparieren oder sonstwie bearbeiten kann. In der Regel greift man also über SSH auf das Rescue System zu.

Über VNC sitzt man dann quasi direkt vor der Kiste. Man kann ihr beim Booten zusehen und so weiter und so fort. Dadurch unterscheidet sich die Installation eigentlich kaum von einer "normalen" Installation. Bis auf die Tatsache, dass man kein CD-Laufwerk hat. Und das ist auch die primäre Hürde, die man überwinden muss.

Ich begann also genau wie encbladexp im Rescue System. Meine "Festplatte" war komplett leer, also erst einmal ein paar Partitionen angelegt:

/dev/sda1: 4GB Swap
/dev/sda2: 256MB für netinstall-Image von Arch
/dev/sda3: 128MB für /boot während des Setups
/dev/sda4: Rest für / des späteren Systems

Das Installationsimage habe ich dann auch direkt in die Partition geladen:

# wget -O /dev/sda2 http://www.../archlinux-2010.05-netinstall-...iso

(An dieser Stelle ein kleiner Stop.)

Danach habe ich "nach Anleitung" weitergemacht. Ergebnis: Grub wollte nicht von diesem Image booten. Den genauen Grund habe ich nicht rausgefunden, aber ich vermute, dass es am UDF-Dateisystem im Image liegt -- das scheint Grub nicht zu mögen. Außerdem gibt es für UDF keinen Partitionstyp, was nochmal eine Hürde für Grub ist. Also, kurzum, Grub wollte das nicht.

Okay, was kann man da machen? Meine Lösung war letztendlich, Kernelimage und initrd aus dem Installationsimage herauszuholen und direkt auf die Platte zu legen. Zum Beispiel in die /boot-Partition. Diese Partition kann Grub dann problemlos lesen und den Kernel starten, da es eine normale ext2-Partition ist. Wenn der Kernel mit dem Booten fertig ist, muss das System aber irgendwie zum Installationsmedium finden. Der "Trick" ist nun, das System direkt von /dev/sda2 lesen zu lassen -- fast so, als wäre es die CD.

Also, weiter geht's: Wie oben beschrieben das Image mit wget nach /dev/sda2 laden. Dann die Bootpartition mit einem Dateisystem versehen, mounten, die beiden Dateien kopieren, Grub installieren und so weiter:

# mke2fs -L Boot /dev/sda3
# mount /dev/sda3 /boot
# mkdir /boot/setup
# cp vmlinuz26 archiso.img /boot/setup      # siehe Bemerkung unten
# grub-install /dev/sda
# cat > /boot/grub/menu.lst <<EOF
title Arch Setup
root (hd0,2)
kernel /setup/vmlinuz26 archisolabel=ARCH_201005
initrd /setup/archiso.img
EOF

Was muss man beachten:

Hiernach alles unmounten und schonmal die VNC-Konsole vom Provider starten. Nicht mit der "VNC-Installation" verwechseln (mir zuerst passiert) -- darüber kann man nur andere fertige Images installieren (CentOS, Fedora, ...). Wenn die VNC-Konsole läuft, dann im Rescue System ein beherztes "reboot". Man kann dann dem Server beim Booten zusehen. Wenn alles gut geht, landet man im soeben installierten Grub -- und das dortige "Arch Setup" sollte starten.

Wenn der Kernel durchgebootet ist, möchte er /dev/disk/by-label/ARCH_201005 als Root-Dateisystem mounten. Und ein Device mit diesem Label findet er unter /dev/sda2. Im Endeffekt habe ich also nur diesen Mount-Vorgang nach hinten verlagert, sodass nicht mehr Grub das machen muss sondern nur noch Linux. Scheint wohl besser zu funktionieren.

So, der Rest ist kalter Kaffee. Arch wird dann in der VNC-Konsole ganz wie gewohnt installiert.