Forumneues initrd auf zweiter, nicht gebooteter Partition generieren
Thomas Knebel – Freitag, 19. Januar 2007 21:31 Uhr

Hallo Community,

Ziel ist ein physikalisches System mit SLES10 per Image zu clonen und dann in einer virtuelle Maschine unter ESX3.0 Server hochzufahren.
Dazu wurde eine VM mit einer virtuellen LSI Festplatte erstellt, der ehemals physische SLES10 per Image auf diese Platte übertragen. Das System wieder heruntergefahren.
Parallel ein bestehender, virtueller SLES10 gebootet und die zuvor zurückgespielte, virtuelle Platte mit dem ehemals physischen SLES10 mittels mount /dev/sdb /urhdd gemountet.
Die Variable INITRD_MODULES=’…’ in der Datei /urhdd/etc/sysconfig/kernel um den Eintrag sym53c8xx ergänzt. (dabei ist sym53c8xx.ko in /urhdd/lib/modules/2.6.16.21-0.8-smp/kernel/drivers/scsi/sym53c8xx_2 zu finden)
Als nächstes wurde versucht mit /urhdd/sbin/mkinitrd ein neues initrd Image zu erstellen, welches u.a. den Symbios Logic Treiber berücksichtigt und eine neue, virtuelle Maschine mit dieser Festplatte den MBR findet und daher booten könnte.

Unglücklicherweise wird stets ein Bezug zum aktuell von /dev/sda gebooteten System geschaffen.
Die Funktion der Parameter -k -i -b, auch nach Lektüre der manPage,kann ich nicht wirklich eindeutig interpretieren und anwenden.

Daher die Frage, wie man bei einer zweiten, gemounteten Festplatte mit eigenem (aber eben nicht gebooteten) Linux, das initrd neu erstellt? (Bevor Rückfragen kommen – nein, am physikalischen System kann man das initrd vorher nicht erstellen…)

Danke schon mal im Voraus für Euren Support.

1 Antwort
Bernd Seidler – Samstag, 20. Januar 2007 07:19 Uhr

Probiere mal (man beachte die Leerzeichen vor und nach /urhdd)

chroot /urhdd /sbin/depmod

chroot /urhdd /sbin/mkinitrd

Das depmod dient lediglich dazu, sicherzustellen, dass er die Module auch wirklich findet…

Liebe Grüße
Bernd

Thomas Knebel – Samstag, 20. Januar 2007 22:25 Uhr

Hallo Bernd,
“chroot /urhdd /sbin/depmod” fördert folgende Fehlermeldung zu Tage:
*******************************************
asterisk:/ # chroot /urhdd /sbin/depmod
WARNING: Couldn’t open directory /lib/modules/2.6.16.21-0.8-default: No such file or directory
FATAL: Could not open /lib/modules/2.6.16.21-0.8-default/modules.dep.temp for writing: No such file or directory
*******************************************
wobei >>2.6.16.21-0.8-default>vmlinuz-2.6.16.21-0.8-smp also mit Endung >>smp>default

Tobias Hunger – Sonntag, 21. Januar 2007 11:36 Uhr

chroot verbiegt das Dateisystem so wie es ein Programm sieht: mit
chroot /urhdd /sbin/depmod verbiegst Du / nach /urhdd. Alles ausserhalb
von /urhdd ist damit unsichtbar und /sbin/depmod ist im
Wirklichkeit /urhdd/sbin/depmod. Das (mkinitrd) findet dann natürlich auch die
Module in (/urhdd)/lib/modules/irgendwo und erzeugt dann eine initrd in
(/urhdd)/boot.

Aber: Auch wenn Du Dein Dateisystem beschneidest und nur die Dateien und
Verzeichnisse unter /urhdd sichtbar hast, dann ist Dein Kernel immernoch
2.6.16.21-0.8-default und dafür versucht (/urhdd)/depmod dann die
Abhängigkeiten neu zu berechnen.

Zumindest bei depmod kannst Du aber auch die Kernelversion vorgeben. Dann
nimmt er nicht die des laufenden Kernels.