Early-Bird: openSUSE 12.2 aus SUSE Studio auf Hetzner-Dedi-Server

Heute Abend habe ich mich spontan dazu entschlossen, auf einem meiner Dedicated Server bei meinem Provider Hetzner nun doch Ubuntu LTS 12.04 zu löschen und openSUSE mit dem brandneuen openSUSE 12.2 noch eine Chance zu geben. Ich bin vor einiger Zeit umgestiegen, weil ich die ewigen Distributions-Updates satt hatte. Ubuntu LTS bietet eine stabile und gepflegte Basis für Jahre – für mich schien es genau richtig, denn ich lasse einige virtuelle Maschinen darauf laufen und hatte keine Lust mehr, „Beta-Tester“ für neue Versionen zu spielen. Mittlerweile muss ich jedoch sagen, dass Ubuntu openSUSE für meine Zwecke nicht das Wasser reichen kann. Ich spare mir an dieser Stelle die Details. Ich hab nämlich was anderes vor:

Hetzner bietet Server-Kunden die Möglichkeit, aus dem Admin-Panel heraus einen Server mit einem gewünschten Betriebssystem neu zu betanken. Hier hätte ich auch openSUSE 12.2 auswählen können. Da ich aber eine Festplatten-Konfiguration mit LVM bevorzuge, boote ich meine Server lieber in den Rescue-Modus und führe die Installation dann mittels „installimage“-Skript durch.

Leider bietet das „installimage“-Skript noch nicht die Version 12.2 von openSUSE an und die ältere 12.1-Version wollte ich natürlich nicht. Glücklicherweise gibt es noch die Möglichkeit, ein „custom-image“ für die Installation zu wählen. Das ist nichts anderes als ein tar.gz-Archiv mit den Verzeichnissen und Dateien eines fertigen Linux-Systems. „installimage“ bekommt hier die Festplatten-/LVM-Konfiguration vorgegeben und entpackt dann das Image selbstständig von einem HTTP- oder FTP-Server.

dister-waiterDer Clou an der ganzen Sache ist, dass ich mir das Image nicht selbst zusammenbaue, sondern es mir aus dem SUSE Studio generieren lasse. Das SUSE Studio ist ein Appliance Toolkit, mit dem man sich sein maßgeschneidertes (open)SUSE-Linux zusammen-klickern kann, um es dann für verschiedene Ziele zu deployen. Ich erkläre hier jetzt mal auf die Schnelle, wie ich das alles angestellt habe. Dies soll keine Anleitung für Dummies darstellen – die sollten einfach warten, bis Hetzner soweit ist. Aber für die Admins unter Euch, die wissen, wovon ich spreche, können vielleicht davon profitieren, dass ich über die ein oder andere Hürde zunächst gestolpert bin. Vielleicht weicht Ihr auch von der Anleitung ab, weil’s bei Euch Sinn macht, aber die Grundidee bleibt. Los geht’s:

  1. SUSE Studio: openSUSE-12.2-Image nach eigenenen Wünschen mit fester LAN-Konfiguration (passend zum Server) erstellen und als „USB Stick / hard disk image“ bauen lassen.
  2. Nach Fertigstellung wird das tar.gz-Image mit „wget“ auf einen Linux-Server im Hetzner-Netz temporär heruntergeladen und ausgepackt.
  3. Die ausgepackte raw-Datei beinhaltet eine einzige Partition. Diese wird mit „kpartx -a /irgendwo/image-xyz-0.0.1.raw“ mountbar gemacht.
  4. Mit „mount /dev/mapper/loop0p1 /mnt“ wird das Image dann eingehangen. Jetzt wird in das „/mnt“-Verzeichnis gewechselt.
  5. tar czf /irgendwo/opensuse-12.2.tar.gz * .kconfig .profile“ erstellt dann ein echtes komprimiertes Tarball-Archiv. Wichtig scheint zu sein, im Namen „suse“ unterzubringen, da ansonsten die Hetzner-Skripte nicht richtig laufen.
  6. Nach Fertigstellung können der Mountpunkt und das Mapper-Device wieder entfernt werden („cd /„, „umount /mnt„, „kpartx -d /irgendwo/image-xyz-0.0.1.raw„).
  7. Jetzt wird das Archiv auf den zu jedem Hetzner-Server gehörenden Backup-Space hochgeladen, z.B. mit sftp.
  8. Dann kann der Zielserver in den Rescue-Modus gebootet werden. Danach wieder per SSH einloggen (das Passwort in der Admin-Konsole gut merken!).
  9. Jetzt ruft man das Kommando „installimage“ auf und hangelt sich durch den Assistenten bis zur Bearbeitung der Konfigurationsdatei. Zwischendurch muss natürlich „custom image“ als Image-Typ gewählt werden.
  10. Meine Konfiguration sieht so aus:
    DRIVE1 /dev/sda
    DRIVE2 /dev/sdb
    SWRAID 1
    SWRAIDLEVEL 1
    BOOTLOADER grub
    HOSTNAME meinhostname
    PART /boot ext2 512M
    PART lvm data all
    LV data root / ext4 10G
    LV data var /var ext4 10G
    LV data tmp /tmp ext4 10G
    LV data home /home ext4 10G
    LV data swap swap swap 32G
    IMAGE ftp://user:password@xyz.your-backup.de/opensuse-12.2.tar.gz
  11. In der Zeile IMAGE müssen natürlich noch die Daten des „Image-Servers“ angepasst werden. Dann fährt man mit dem Assistenten fort, bis die Installation startet. Ein paar Mal trat eine Fehlermeldung („integer expression expected“) auf, die scheint aber keine Probleme zu bereiten.
  12. Am Ende heißt es dann hoffentlich „INSTALLATION COMPLETE“. Jetzt ist es fast geschafft. Es fehlt nur noch das neue root-Passwort. Man kann es zwar bereits im SUSE Studio setzen, aber ich habe während des installimage-Durchlaufs gesehen, dass es dort scheinbar nochmal überschrieben wird.
  13. Die Neuerstellung des Passworts erfolgt in einer chroot-Umgebung:
    mount /dev/data/root /mnt
    mount -o bind /dev/ /mnt/dev/
    chroot /mnt
    passwd
    Changing password for root.
    New Password:
    Reenter New Password:
    Password changed.
    exit
    umount /mnt/dev
    umount /mnt
  14. Und das war’s bei mir auch schon. Ich konnte das System rebooten und kurze Zeit später war der Login in meinem neuen openSUSE 12.2 – Hetzner-Server möglich.

Ich hoffe, ich habe jetzt im Eifer des Gefechts keine Info unterschlagen, es handelt sich hier nämlich weitestgehend um ein Gedächtnis-Protokoll. Dieser Installationsweg ist natürlich nicht auf openSUSE 12.2 beschränkt, sondern kann natürlich mit einer Vielzahl von SUSE Studio Appliances durchgeführt werden.

Abschließend bleibt noch zu sagen, dass ich mir wünschen würde, SUSE Studio würde zusätzlich zur RAW-Partition auch den Typ Tarball-Archiv anbieten. Dadurch würde man sich den Zwischenschritt auf dem Linux-Server sparen… es hat ja nicht jeder von uns gleich mehrere Büchsen zur Verfügung. :-)