zentyal 2.2-2 unter xen installieren

Dieser Artikel erklärt die Installation von zentyal, einem Linux Small Business Server in eine xen Instanz.

Da der Zentyal kernel 2.6.32-38-generic von Zentyal 2.2-2 kein xen-kernel ist, müssen wir die initrd des Installers anpassen und die passenden Kernelmodule hinzufügen.

Ausserdem gilt es die korrekte kernel commandline zu nutzen,  damit das preseed file der Ubunut-Installation zum Tragen kommt.

Anpassen der initrd

Die initrd befindet sich auf der CD unter /install zusammen mit dem kernel. Die ISO wird auf der dom0 nach /mnt/cdrom gemounted und dann mit folgenden Kommandos die initrd in /root/xen neu angelegt:

# uname -r
2.6.32-5-xen-amd64
# mkdir /root/xen
# mkdir initrd-zentyal-2.2-2-amd64-new
# cd initrd-zentyal-2.2-2-amd64-new
# zcat /mnt/cdrom/install/initrd.gz | cpio -i
37493 blocks
# cp -r /lib/modules/$(uname -r) lib/modules/
# find . | cpio -o -H newc -O /root/xen/initrd-zentyal-2.2-2-amd64-new.gz
219449 blocks

Konfiguration von xen

Meine minimale xen-Konfiguration schaut dann wie folgt aus, das iso-File der Zentyal-Installation liegt in /root/xen/.

memory   = 512
maxmem   = 1212

kernel   = '/boot/vmlinuz-2.6.32-5-xen-amd64'
ramdisk  = '/root/xen/initrd-zentyal-2.2-2-amd64-new.gz'
extra    = 'file=/cdrom/preseed/ubuntu-server.seed  quiet --'

name     = 'zentyal'

#boot iso image for installation!
boot     = 'd'

vif         = [
                'mac=00:00:00:10:11:12,bridge=br0,vifname=zentyal.eth0',
              ]

disk = [
       'phy:/dev/vg0/xen_zentyal_rootfs,xvda1,w',
       'phy:/dev/vg0/xen_zentyal_swap,xvda4,w',
       'file:/root/xen/zentyal-2.2-2-amd64.iso,xvdb:cdrom,r'
        ]
root       = '/dev/xvda1'

apic     = 1
acpi     = 1
pae      = 1

# serial = "pty" # enable serial console
on_reboot   = 'destroy'
on_crash    = 'destroy'
# If you want to use vnc add the following lines - useful for the installed system,
# the installer of zentyal boots up in textmode on vnc console anyway.
#
# >>>Thank you Seba for the hints here!<<<
# 
# yes, it still uses xen als hypervisor, although the dm of qemu:
#device_model    = '/usr/lib64/xen-4.0/bin/qemu-dm'
# 
#vfb = [ 'type=vnc,videoram=32,keymap=de' ]
#
#vncviewer= 0
#vnc      = 1
#vncunused= 1
#usb      = 1
#usbdevice= "tablet"

Der Installer ist textbasiert, erst das laufende System macht daher Sinn per vnc angesprochen zu werden, daher verzichten wir hier auf vnc für die Installation. Wenn die Installation nicht klappt, bietet vnc aber die Möglichkeit die Textkonsole zu wechseln und bei laufender Installation nachzusehen wo es klemmt.

Wichtig ist die Angabe der korrekten pre-seed-Datei unter extra=, damit der Installer das manuelle auswählen der Partitionen ermöglicht. Wir haben hier direkt logical volumes angegeben, daher gibt es keinen Eintrag für die Festplatte unter /dev, nur die Partitionen. Das automatische Partitionieren, wie im auto-preseed-File angegeben, würde daher fehlschlagen und zu einer Endlosschleife im Installer führen.

Nachdem das System installiert ist, wird die boot-Zeile auskommentiert und die vnc-Zeilen einkommentiert, damit man dem installierten System beim booten zusehen kann. Zudem wird ein X gestartet, in dem man das System per Browser konfigurieren kann, falls keine Netzwerkkonfiguration vorhanden ist.

Installation des Systems

Nach dem Anlegen der Logical Volumes in der dom0 starte ich die Installation mittels:

 xm create zentyal_install_2.2-2.cfg -c

Auf Grund des abweichenden Kernels und der Textkonsole funktinieren einige Dinge leicht anders:

  • Detect Keyboard Layout funktioniert nur per vnc, nicht per Textkonsole.
  • Es werden angeblich keine Module gefunden, da es kein Installerpaket dafür gibt. Wir haben sie aber manuell alle in die initrd kopiert, daher stehen sie zur Verfügung. Man kann also „ohne“ Kernelmodule installieren, die Warnung kann ignoriert werden.
  • dm-mod kann nicht geladen werden. Auch das ist okay – wir bauen kein RAID im Gast.
  • Gleiches gilt für den Logical Volume Manager (LVM)
  • Die Partitionierung erfolgt ‚Manual‘ – wir haben die Volumes in der dom0 schon konfiguriert.
  • Eventuell ist noch ‚format the partition‘ anzugeben, damit keine alten Daten übrigbleiben.
  • Achtung: Erase Data dauert lange, da es die Partition aktiv überschreibt, format ist nur ein mkfs.
  • Grub lässt sich natürlich nicht auf der Festplatte installieren, aber auch das ist in unserem Fall harmlos, ‚Continue without Bootloader‘ ist die Option der Wahl.

Die weitere Installation erfolgt dann relativ unspektakulär.

Nach der Installation

Nach der Installation  wird on_reboot  auf restart gesetzt, das Installationiso auskommentiert und vnc aktiviert, um das System beim Start zu beobachten und direkt die Konfiguration abzuschliessen sowie die Kernel-Kommandozeile und initrd angepasst:

extra    = ' quiet --'
ramdisk  = '/boot/initrd.img-2.6.32-5-xen-amd64-domU'
disk = [
       'phy:/dev/vg0/xen_zentyal_rootfs,xvda1,w',
       'phy:/dev/vg0/xen_zentyal_swap,xvda4,w',
        ]
on_reboot   = 'restart'device_model    = '/usr/lib64/xen-4.0/bin/qemu-dm'
vfb = [ 'type=vnc,videoram=32,keymap=de' ]
vncviewer= 0
vnc      = 1
vncunused= 1
usb      = 1
usbdevice= "tablet"

Alles andere bleibt unverändert.

Schließlich will man noch die Module des xen-Kernels in das installierte System kopieren – da mein Hostsystem ein debian ist und Zentyal auf ubuntu aufsetzt und ich zu faul war nach passenden Paketen zu suchen, kopiere ich bei runtergefahrenem System manuell:

  # mount /dev/vg0/xen_zentyal_rootfs /mnt/zentyal/ && \
  cp -r /lib/modules/2.6.32-5-xen-amd64 /mnt/zentyal/lib/modules/ && \
  umount /mnt/zentyal/

Ohne die Module kann man zwar eine X-Session mit Firefox bewundern, aber weder Tastatur noch Maus im X benutzen.

Der Login erfolgt mit dem Benutzernamen und Passwort, das bei der Installation angegeben wurde.

fertig.