[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