initrd modifizieren

Software besorgen und anwenden
Antworten
Nachricht
Autor
Gogogo

initrd modifizieren

#1 Beitrag von Gogogo » 10. Dez 2007 11:38

Hi,

ich möchte meine initrd modifizieren (einen Treiber hinzufügen, der zum Bootzeitpunkt geladen werden muss) was allerdings nicht klappt. Meine Schritte:

initrd.img nach initrd.img.gz umbenennen und entpacken
mkdir tmp
mount -o loop initrd.img /path/to/tmp

Dann bekomme ich diese Fehlermeldung:

mount: Sie müssen den Dateisystemtyp angeben

Was geht hier schief?

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#2 Beitrag von jochen » 10. Dez 2007 15:28

Ganz einfach: Deine initrd ist aller Wahrscheinlichkeit nach kein Filesystem-Image mehr, sondern ein CPIO-Archiv. Auspacken geschieht mittels

Code: Alles auswählen

cpio -ivd <ungezippte-initrd
Allerdings würde ich auf die Distributionsmittel für diesen Zweck greifen. Normalerweise reicht es, in eine Datei wie /etc/modules die zu ladenden Module einzutragen und dann ein update-initrd (Debian/*buntu) bzw. mkinitrd (RH/SuSE) auszuführen. Unter SuSE oder RedHat würde ich auch noch mal unter /etc/sysconfig nachsehen, da müsste man auch dafür sorgen können, dass bestimmte Module immer in der initrd laden & beim Boot geladen werden.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Gogogo

#3 Beitrag von Gogogo » 10. Dez 2007 16:41

Hm, und wie kann ich bei der Methode und einem neuen Kernel überprüfen ob in einer bestimmten initrd jetzt schon das Modul aus /etc/modules drin ist? Ich würde den server jetzt nämlich ungern ohne die passende initrd neustarten und dann im Regen stehen...

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#4 Beitrag von jochen » 10. Dez 2007 19:01

Wenn Du schon eine funktionierende initrd hast: Sichere diese :). Einfach unter /boot unter dem Namen "initrd-safe" o.ä. ablegen. Mit grub kannst Du am Bootprompt den Eintrag mittels "e" editieren und bei Fehlversuch als initrd die initrd-safe angeben.

Weiterhin kannst Du die neu erstellte initrd mit dem o.a. cpio-Kommando natürlich auch auspacken und auf das benötigte Modul hin checken. Wenn Dir die Liste der Datein im Archiv reicht, dann lautet das Kommando

Code: Alles auswählen

cpio -itv <ungezippte-initrd-datei
Natürlich sollte man aber den Rechner suchen lassen statt selbst zu kramen:

Code: Alles auswählen

cpio -itv <ungezippte-initrd-datei | fgrep meinmodul.ko
Wird das Modul aufgelistet, steckt es im Archiv.

Ich hoffe, das hilft weiter.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Antworten