Initrd bearbeiten und neu erstellen
Hallo zusammen,
ich stehe vor einem Problem bei dem ihr mir sicherlich helfen könnt. Ziel ist es, eine Backup-DVD (IsoLinux mit PartImage) für meine Zwecke umzuschreiben.
Jetzt hänge ich bei dem Problem, das beim booten folgende Meldung kommt:
VFS: Cannot open root device "<NULL>"
Gemacht habe ich bisher folgendes um die initrd zu bearbeiten und neu zu erstellen
-von CD gebootet bis zum Backup-Menü
-neue Konsole geöffnet (Alt-F2)
-nacheinander folgenden Befehle eingegeben
An dieser Stelle konnte ich dann die Scripts die normalerweise beim booten erscheinen modifizieren. Für den ersten Test habe ich die Menüpunkte im Script nur umbenannt und keine Änderungen am eigentlichen Code vorgenommen.
Um nun die modifizierte initrd zu erstellen ging es wie folgt weiter:
Anschließend habe ich die alte initrd durch die neu erstellte im Iso ausgetauscht und das Image wieder gebrannt. Nun hängt der Bootvorgang mit der Meldung "VFS: Cannot open root device "<NULL>"
Da ich eher ein Linux Newbie bin, musste ich mir den Code aus dem inet suchen.
Hat jemand eine Idee was ich anders machen muss/kann??
ich stehe vor einem Problem bei dem ihr mir sicherlich helfen könnt. Ziel ist es, eine Backup-DVD (IsoLinux mit PartImage) für meine Zwecke umzuschreiben.
Jetzt hänge ich bei dem Problem, das beim booten folgende Meldung kommt:
VFS: Cannot open root device "<NULL>"
Gemacht habe ich bisher folgendes um die initrd zu bearbeiten und neu zu erstellen
-von CD gebootet bis zum Backup-Menü
-neue Konsole geöffnet (Alt-F2)
-nacheinander folgenden Befehle eingegeben
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount /dev/sda1 /mnt/usb
cp /mnt/cdrom/boot/loader/initrd /mnt/usb
mv initrd initrd.gz
gzip -d initrd.gz
mount -o loop initrd /mnt/usb/initrd
Um nun die modifizierte initrd zu erstellen ging es wie folgt weiter:
dd if=/dev/zero of=newinitrd bs=1K count=64536 (count = ramdisk_size aus der isolinux.cfg???)
losetup /dev/loop1 newinitrd
mke2fs /dev/loop1
mount /dev/loop1 /mnt/newinitrd
cp -r /mnt/usb/initrd /mnt/newinitrd
umount /mnt/newinitrd
losetup -d /dev/loop1
gzip newinitrd
mv newinitrd.gz initrd
Da ich eher ein Linux Newbie bin, musste ich mir den Code aus dem inet suchen.
Hat jemand eine Idee was ich anders machen muss/kann??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159587
Url: https://administrator.de/forum/initrd-bearbeiten-und-neu-erstellen-159587.html
Ausgedruckt am: 28.04.2025 um 01:04 Uhr
7 Kommentare
Neuester Kommentar

Was mich wundert: ist die INITRD nicht schon seit etlichen Kernelversionen ein CPIO-Archiv? Was spezielles wird da bei Dir um alles in der Welt verwendet? (Würde mir das gerne interessehalber ansehen.)
Typischerweise packe ich das so aus:
Und so wieder ein:
Achja, Nachtrag: das habe ich immer von einem anderen Linux aus gemacht, nicht von dem, dessen INITRD ich ändern wollte.
MfG, FM_81
Typischerweise packe ich das so aus:
# gzip -d initrd.img.gz
# mkdir files
# cd files
# cpio --extract < ../initrd.img
# cd files
# find . > ../file.list
# cpio --create --format=newc < ../file.list > ../initrd-patch.img
# cd ..
# gzip -9 initrd-patch.img
Achja, Nachtrag: das habe ich immer von einem anderen Linux aus gemacht, nicht von dem, dessen INITRD ich ändern wollte.
MfG, FM_81

Hab' mich wohl getäuscht! Scheint kein CPIO-Archiv zu sein!
MfG, FM_81
MfG, FM_81

Weils's ja nun kein CPIO-Archiv ist: schon mal folgende simple Sequenz versucht?
MfG, FM_81
root@linux# gzip -d /public/work/initrd.gz
root@linux# mount -o loop /public/work/initrd /mnt/tmp/
# HIER EIGENTLICHE ÄNDERUNGEN VORNEHMEN!
root@linux# umount /mnt/tmp
root@linux# gzip -9 /public/work/initrd
MfG, FM_81