Das Rootserver-Experiment

Erlebnisse eines Rootserver (Beinahe-) Neulings

Verantwortlich für den Inhalt dieser Seite ist Mattias Schlenker, Inhaber Mattias Schlenker IT-Consulting Mattias Schlenker work Dietrich-Bonhoeffer-Str. 3, 40667 Meerbusch. Germany work Fon +49 341 39290767. Meine USt-ID (VATIN) lautet: DE240998538. http://www.mattiasschlenker.de

Diese Seite läuft unter Wordpress 2.x.x. News und Kommentare können als RSS-2.0-Feed abonniert werden.

Ubuntu als DomU (Xen) “debootstrappen”

Hier geht es lang: Neue Version dieser Anleitung für Ubuntu 10.04 (Lucid Lynx) und folgende auf Xen 3.4 oder 4.0 (oder höher)

Dieser Text ist veraltet und dürfte nur noch für Softwarearchäologen sinnvoll sein:

Mit Version 6-06 LTS (Long Term Support) und der erstmals erhältlichen Variante für den Servereinsatz wird Ubuntu auch für Web- und Mailserver zu einer echten Alternative zu Debian, Suse und Redhat. Doch ein Feature fehlt: Unterstützung für Xen. Wie Sie schlanke Ubuntu-XenU-Domains einrichten, zeigt dieser Artikel.

Sie haben Xen als Domain 0 auf einem Debian oder Ubuntu-System bereits am Laufen und möchten nun schlanke unpriviligierte Domains einrichten. RPM basierten Distributionen sollten das unter news.mattiasschlenker.de verlinkte Image einer minimalen DomU verwenden, das auch dazu verwendet werden kann, neue DomUs zu “bootstrappen”.

Tipp: Wenn Sie Suse oder eine andere RPM-basierte Distribution verwenden, können Sie die Schritte 1 bis 13 mit einer Knoppix- oder Kanotix-CD durchführen. Um die neue Ubuntu-DomU auszuprobieren booten Sie dann wieder Ihr auf Platte installiertes Linux.

Achtung, Werbung: Eine vierseitige Einführung in Xen habe ich für die Ausgabe 3/2006 von PC Magazin Linux geschrieben. Der Artikel erklärt die Funktionsweise allgemein, die Parallelinstallation des Xen-dom0 auf einem normalen Linux und die Umwandlung beliebiger Linux-Distributionen in Xen-DomUs. Das Heft kann für 7,90 Euro im Wekashop nachbestellt werden.

Gehen Sie wie folgt vor:

  1. Laden Sie das aktuellste DEB-Paket herunter. Da es sich bei debootstrap um eine Sammlung von Shellscripten handelt, passt ein Paket für alle Architekturen:

    http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/

    und installieren Sie es mit

    dpkg -i debootstrap-version.deb

    Es steht nun der Befehl debootstrap zur Verfügung, mit dem Sie ein komplettes Ubuntu-System in ein Verzeichnis installieren können.

  2. Erstellen Sie ein Festplattenimage und formatieren Sie dieses. Das folgende Beispiel ist 4096 Megabyte (oder echte 4 Gigabyte) groß, als Dateisystem verwenden wir “ext3″:

    dd if=/dev/zero of=hda1.img bs=1048576 count=4096
    mkfs.ext3 hda1.img

    Für die Installation wird nun ein Mountpoint erstellt und das Image dort eingehängt:

    mkdir /tmp/minibuntu
    mount -o loop hda1.img /tmp/minibuntu

    Sollen eigene Images – oder reale Partitionen für /usr oder /var zum Einsatz kommen, erstellen Sie die Images ebenso, und mounten Sie diese, beispielsweise:

    mkdir /tmp/minibuntu/var
    mount -o loop hda2.img /tmp/minibuntu/var

  3. Mit debootstrap installieren Sie jetzt das Basissystem:

    debootstrap --arch i386 dapper /tmp/minibuntu http://archive.ubuntu.com/ubuntu

  4. Die eigentliche Installation der DomU ist jetzt abgeschlossen, es kann ans Konfigurieren gehen. Am besten ist hierfür ein chroot in das neu installierte System. Das muss vorbereitet werden:

    mount -t proc none /tmp/minibuntu/proc
    mount -t devpts none /tmp/minibuntu/dev/pts

    Jetzt folgt der Wechsel des Wurzelverzeichnisses:

    LANG=C chroot /tmp/minibuntu /bin/bash

  5. Im “Käfig” setze ich zunächst das Root-Passwort

    passwd

    Sie können auch mit adduser gleich Nutzerkonten anlegen und ggf. sudo konfigurieren. Auf Servern bevorzuge ich jedoch die klare Trennung mit separatem Superuser-Passwort und erlaube SSH-Login mit Public Key.

  6. Konfigurieren Sie nun das Netzwerk der DomU zunächst statisch. Passen Sie dazu die /etc/network/interfaces an (die Zeilen address, netmask, gateway bitte einrücken!):

    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet static
    address 192.168.1.58
    netmask 255.255.255.0
    gateway 192.168.1.252

    Sie benötigen zwingend eine Datei /etc/hosts, in der wenigstens localhost vorhanden sein muss:

    echo '127.0.0.1 localhost' > /etc/hosts

    Und auch den Hostnamen sollten Sie gleich setzen:

    echo 'meinrechnername' > /etc/hostname

    Wenn wir schon dabei sind, wird gleich der primäre Nameserver gesetzt, damit die Namensauflösung funktioniert:

    echo 'nameserver 192.168.1.252' > /etc/resolv.conf

  7. Die beim Systemstart einzubindenden Dateisysteme definiert die /etc/fstab. Wenn Sie ein eigenes Partitionsimage mit Swap-Signatur versehen haben (mkswap) und der DomU übergeben, können Sie die dritte Zeile aktivieren:

    proc /proc proc defaults 0 0
    /dev/hda1 / ext3 defaults 0 1
    # /dev/hda2 none swap sw 0 0

  8. Arge Performance-Probleme hat Xen, wenn die TLS-Bibliotheken vorhanden sind. Verschieben Sie diese einfach:

    mv /lib/tls /lib/tls.unused

  9. Damit spätere Updates und die Installation von Software funktioniert, benötigen Sie eine gültige /etc/apt/sources.list. Ich habe beim Hostsystem abgeschaut, die komplette Datei sieht so aus:

    deb http://de.archive.ubuntu.com/ubuntu/ dapper main restricted
    deb-src http://de.archive.ubuntu.com/ubuntu/ dapper main restricted

    deb http://de.archive.ubuntu.com/ubuntu/ dapper-updates main restricted
    deb-src http://de.archive.ubuntu.com/ubuntu/ dapper-updates main restricted

    deb http://de.archive.ubuntu.com/ubuntu/ dapper universe
    deb-src http://de.archive.ubuntu.com/ubuntu/ dapper universe

    deb http://security.ubuntu.com/ubuntu dapper-security main restricted
    deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted

  10. Da Xen nur eine virtuelle Konsole öffnen kann, müssen die anderen in der /etc/inittab auskommentiert werden:

    # [...]
    1:2345:respawn:/sbin/getty 38400 tty1
    # 2:23:respawn:/sbin/getty 38400 tty2
    # 3:23:respawn:/sbin/getty 38400 tty3
    # 4:23:respawn:/sbin/getty 38400 tty4
    # 5:23:respawn:/sbin/getty 38400 tty5
    # 6:23:respawn:/sbin/getty 38400 tty6
    # [...]

  11. Verlassen Sie die Chroot-Umgebung mit exit.
  12. Damit der Start problemlos verläuft, müssen die zum Kernel passenden Module vorhanden sein. Ich verwende einen eigenen Kernel für DomU (den ich auch zum Download anbiete). Rsync erscheint mir am geeignetsten, Sie können aber auch tar oder cp verwenden:

    mkdir -p /tmp/minibuntu/lib/modules/2.6.16.13-xenU/
    rsync -avP /lib/modules/2.6.16.13-xenU/ \
    /tmp/minibuntu/lib/modules/2.6.16.13-xenU/

  13. Unmounten Sie /proc, /dev/pts und schließlich das Festplattenimage:

    umount /tmp/minibuntu/proc
    umount /tmp/minibuntu/dev/pts
    umount /tmp/minibuntu

  14. Eine einfache Konfigurationsdatei für die neue Xen-Domain ist schnell erstellt, ich lege diese Konfigurationsdatei als ubuntu-minimal.cfg zusammen mit Kernel und Images unter /usr/local/xendomains/ubuntu-minimal ab:

    kernel = "/usr/local/xendomains/ubuntu-minimal/vmlinuz-2.6.16.13-xenU"
    memory = 128
    name = "ubuntu-minimal"
    vif = [ 'mac=00:16:00:00:00:07' ]
    disk = [ 'file:/usr/local/xendomains/ubuntu-minimal/hda1.img,hda1,w' ]
    root = "/dev/hda1 rw"

    Sollten Sie mehrere Festplattenimages übergeben, erledigen Sie das in einem Array, vergessen Sie das Leerzeichen zwischen einfachem Anführungszeichen und eckiger Klammer nicht:

    disk = [ 'file:/usr/local/xendomains/ubuntu-debootstrap/hda1.img,hda1,w',
    'file:/usr/local/xendomains/ubuntu-debootstrap/hda2.img,hda2,w' ]

  15. Los geht’s. Starten Sie die neue Domain und verbinden Sie die Systemkonsole mit dem aktuellen Terminal:

    xm create -c ubuntu-minimal.cfg

    Am folgenden Login-Prompt melden Sie sich als root mit dem vorher vergebenen Passwort an.

  16. Aktivieren Sie zunächst Shadow-Passwörter:

    shadowconfig on

  17. Aktualisieren Sie zunächst die Paketquellen und spielen Sie dann nötige Sicherheitsupdates ein:

    apt-get update
    apt-get upgrade

  18. Noch fehlt der SSH-Server:

    apt-get install ssh

  19. Passen Sie die Datei /etc/ssh/sshd_config so an, dass Root-Login gar nicht oder nur via Public-Key möglich ist und legen Sie ggf. mit adduser einen unpriviligierten Nutzer an.
  20. Das war es! Wenn Sie wünschen, können Sie die Netzwerkkonfiguration in der /etc/network/interfaces auf DHCP umstellen

    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet dhcp

    und die nicht mehr benötigten Debs in /var/cache/apt/archives löschen. Rebooten Sie anschließend die DomU um zu sehen, ob alle benötigten Dienste aktiviert werden.

13 Antworten auf “Ubuntu als DomU (Xen) “debootstrappen””

  1. Das Rootserver-Experiment » Blog Archive » Ubuntu 10.04 als DomU (Xen) “debootstrappen” (September 1st, 2010 um 11:54 am)

    [...] vier Jahren ist es mal wieder Zeit für ein kleines Tutorial zur Installation von Ubuntu-domUs via debootstrap. [...]