[Eisfair] eisfair-1 Xen DomU Kernelupdate

Alexander Dahl lespocky at web.de
Do Feb 4 23:20:35 CET 2016


Hallo zusammen,

Thomas Zweifel schrieb Donnerstag,  4. Februar 2016, 19:50 (CET):
> Nach xvda1 hat der ohnehin nichts zu schreiben, nur nach xvda (bootblock)!

Guter Punkt, das hat mich dazu gebracht nochmal bisschen rumzuprobieren.
Die Idee ist folgende: lilo soll fehlerfrei durchlaufen bei der
Installation eines eiskernel-virt Pakets, aber nichts anrichten, was den
Boot mit pygrub verhindert. Daher wird eine separate Boot-Partition
benutzt und zusätzlich eine kleine Dummy-Platte für lilo. Ich benutze
einzelne LVM volumes, um eine mögliche Wartung der Partitionen im Wirt
zu erleichtern. Es funktioniert, so:

Zunächst mal die Xen-Config im Host:

    bootloader = '/usr/lib/xen-4.4/bin/pygrub'
    memory  = 256
    vcpus   = 1
    root    = '/dev/xvda2 ro'
    boot    = 'c'
    extra   = 'ro quiet xencons=tty1 console=hvc0'
    disk    = [
            'format=raw, vdev=xvda1, target=/dev/heaven/methusalix_boot',
            'format=raw, vdev=xvda2, target=/dev/heaven/methusalix_root',
            'format=raw, vdev=xvda3, target=/dev/heaven/methusalix_swap',
            'format=raw, vdev=xvda4, target=/dev/heaven/methusalix_home',
            'format=raw, vdev=xvdb, target=/dev/heaven/methusalix_lilo',
    ]
    name    = 'methusalix'
    vif  = [ 'mac=00:16:3e:2e:a3:4b, bridge=xenbr0' ]

Wichtig ist, dass /boot vorne ist, weil pygrub (vermutlich) die erste
disk liest. Auf /boot liegen neben kernel, initrd und Zeug von lilo noch
der Ordner 'grub' mit der Datei 'menu.lst', die von pygrub eingelesen
wird und so aussieht:

    default 0
    timeout 5

    title   eisfair-1
    root    (hd0,0)
    kernel  /kernel root=/dev/xvda2 ro
    initrd  /initrd.gz

    title   eisfair-1 (old)
    root    (hd0,0)
    kernel  /old-kernel root=/dev/xvda2 ro
    initrd  /old-initrd.gz

Kommen wir zu den interessanten Dateien im System, zunächst /etc/fstab

    /dev/xvda1   /boot         ext4     defaults 0 2
    /dev/xvda2   /         ext3     defaults,errors=remount-ro 0 1
    proc        /proc     proc     defaults                   0 0
    devpts      /dev/pts  devpts   defaults                   0 0
    /dev/xvda3 none swap sw 0 0
    #usbfs       /proc/bus/usb  usbfs     defaults                 0 0
    /dev/xvda4  /home   ext3    defaults 0 2
    /sys        /sys           sysfs     defaults                 0 0
    tmpfs       /dev/shm       tmpfs     rw,nosuid,nodev          0 0

Wie man leicht sieht, wird /dev/xvdb hier nicht gemountet. pygrub stört
sich auch nicht an xvdb. Angelegt ist das als 20 MB großes Logical
Volume (mit 4 MB hatte ich Probleme, weil lilo dann wegen inkompatiblen
Cylindern und Sektoren mault) mit Partitionstabelle und einer
Dummy-Partition, hier die Ausgabe von fdisk -l

    Festplatte /dev/xvdb: 20 MiB, 20971520 Bytes, 40960 Sektoren
    Einheiten: Sektoren von 1 * 512 = 512 Bytes
    Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
    E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
    Festplattenbezeichnungstyp: dos
    Festplattenbezeichner: 0x218f8e17

    Gerät      Boot Anfang  Ende Sektoren Größe Kn Typ
    /dev/xvdb1        2048 40959    38912   19M 83 Linux

Da darf lilo dann nach Belieben schreiben, zum Schluss also noch die
/etc/lilo.conf so wie das eiskernel-virt Paket sie umgeschrieben hat:

    lba32
    disk = /dev/xvdb
    bios = 0x80
    boot = /dev/xvdb
    read-only
    prompt
    timeout = 50
    vga = normal
    menu-scheme = wr:bw:wr:Yr
    image = /boot/kernel
    root = /dev/xvda2
    label = eis
    initrd = /boot/initrd.gz
    append = "raid=noautodetect"
    image = /boot/old-kernel
    root = /dev/xvda2
    label = oldeis
    initrd = /boot/old-initrd.gz
    append = "raid=noautodetect"

Wo ich noch unsicher bin, aber was wohl im laufenden Betrieb keinen
Einfluss hat, in /proc/cmdline sind dann einige Einträge doppelt:

    # cat /proc/cmdline 
    root=/dev/xvda2 ro root=/dev/xvda2 ro ro quiet xencons=tty1 console=hvc0

Ergebnis ist jedenfalls, dass ich jetzt bei der eiskernel-virt
Installation keine Warnungen wegen separater /boot Partition bekomme,
pygrub bootet ungestört und lilo darf auf xvdb so viele neue
Bootsektoren schreiben, wie es möchte. \o/

Grüße
Alex

-- 
***** http://blog.antiblau.de/ *****************************
GnuPG-FP: 02C8 A590 7FE5 CA5F 3601  D1D5 8FBA 7744 CC87 10D0


Mehr Informationen über die Mailingliste Eisfair