initrd Problem (gelöst)
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
initrd Problem (gelöst)
Hallo,
hab hier ein massives Problem am Server.
Nach Ausfall einer Platte am Software Raid haben wir beide Platten erneuert.
Dabei habe ich die Partitionen gegenüber vorher geändert.
Das / Verzeichnis ist in /dev/md0 das aber nicht wie vorher aus /dev/hda1 und /dev/hdb1 besteht sondern /dev/hda2 und /dev/hdb2.
Nun findet die initrd beim Start natürlich md0 nicht.
Gibt es eine Möglichkeit die initrd so zu mounten, das man sie editieren kann?
Auch die id von md0 ist nun die falsche. Ist das sehr schlimm oder kommt dann beim booten nur ein Warnhinweis.
Im vorraus Danke für eure Hilfe
Peter
hab hier ein massives Problem am Server.
Nach Ausfall einer Platte am Software Raid haben wir beide Platten erneuert.
Dabei habe ich die Partitionen gegenüber vorher geändert.
Das / Verzeichnis ist in /dev/md0 das aber nicht wie vorher aus /dev/hda1 und /dev/hdb1 besteht sondern /dev/hda2 und /dev/hdb2.
Nun findet die initrd beim Start natürlich md0 nicht.
Gibt es eine Möglichkeit die initrd so zu mounten, das man sie editieren kann?
Auch die id von md0 ist nun die falsche. Ist das sehr schlimm oder kommt dann beim booten nur ein Warnhinweis.
Im vorraus Danke für eure Hilfe
Peter
Zuletzt geändert von sysoptiger am 23.05.2006 10:35:19, insgesamt 1-mal geändert.
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
Also mit
greift er immer noch auf die Module von Knoppix zurück.
Wie kann ich das ändern?
Gruß
Peter
Code: Alles auswählen
mount /dev/md0 /mnt/md0
mount -o bind /dev/ /mnt/md0/dev
mount -o bind /proc/ /mnt/md0/proc
chroot /mnt/md0 /bin/bash
mkinitrd -o neueinitrd.img
Wie kann ich das ändern?
Gruß
Peter
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
Die Knoppix Module kann es doch aus dem chroot doch gar nicht sehen. Er kann höchstens die Namen der geladenen Module sehen und die sind ja gleich. Außerdem kann man tatsächlich eine initrd nachträglich mit der Hand modifizieren. Die initrd ist erstmal nur eine komprimierte Datei.
An meinem System zum Beispiel.
Nun kannst du ändern was du meinst ändern zu müssen. Es gibt auch ander initrd's die zum Besipiel mit compress gemacht wurden. Das Prinzip ist aber allen gleich. Nachem du fertig bist baust du schön alles wieder zusammen. Allerdings rate ich dir deine original initrd nicht zu überschreiben sondern eine mit neuem Namen zu machen. Ein neuer Eintrag in die menu.lst von Grub sollte kein problem darstellen.
Viel Erfolg
An meinem System zum Beispiel.
Code: Alles auswählen
file /boot/initrd-2.6.16
/boot/initrd-2.6.16: gzip compressed data, from Unix, last modified: Fri Apr 21 17:56:04 2006, max compression
cp /boot/initrd-2.6.16 /tmp/initrd-2.6.16.gz
gunzip /tmp/initrd-2.6.16.gz
file /tmp/initrd-2.6.16
/tmp/initrd-2.6.16: ASCII cpio archive (SVR4 with no CRC)
mkdir /tmp/i
cd !$
cpio -i < ../tmp/initrd-2.6.16
Viel Erfolg
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
Das sieht doch gut aus!
Wahrscheinlich genau das was ich gesucht habe.
Werde das morgen gleich ausprobieren. Die entsprechende Stelle die ich ändern muss (eine Datei namens Script oder so ähnlich) habe ich schon gefunden und dort den falschen Eintrag der zu bootenden Partition. Theoretisch müsste nach ändern dieses Eintrags das Raid device wieder gefunden werden.
Sag euch morgen Bescheid, Danke erst mal!
Gruß
Peter
Wahrscheinlich genau das was ich gesucht habe.
Werde das morgen gleich ausprobieren. Die entsprechende Stelle die ich ändern muss (eine Datei namens Script oder so ähnlich) habe ich schon gefunden und dort den falschen Eintrag der zu bootenden Partition. Theoretisch müsste nach ändern dieses Eintrags das Raid device wieder gefunden werden.
Sag euch morgen Bescheid, Danke erst mal!
Gruß
Peter
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
@init 0
Noch ein Nachtrag, hab dein beispiel mal bei mir probiert, aber meine initrd ist via cramfs gepackt.
Ne Idee wie man das entpackt?
Gruß
Peter
Noch ein Nachtrag, hab dein beispiel mal bei mir probiert, aber meine initrd ist via cramfs gepackt.
Code: Alles auswählen
(file /boot/initrd.img-2.6.8-2-686
/boot/initrd.img-2.6.8-2-686: Linux Compressed ROM File System data, little endian size 7077888 version #2 sorted_dirs CRC 0xa0da368e, edition 0, 4098 blocks, 368 files)
Gruß
Peter
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
- me
- Beiträge: 868
- Registriert: 30.10.2005 00:14:23
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Paderborn
-
Kontaktdaten:
du solltest mal versuchen, dein initrd image auf folgende art und weise zu erstellen:
Wenn du die module nicht mit angibst, benutzt er die vom aktuell laufendem kernel, die du ja nicht haben willst.
kann sein dass ich die beiden pfade wieder evrtauscht habe, tu ich jedesmal![Wink ;)](./images/smilies/icon_wink.gif)
Code: Alles auswählen
mkinitrd -o /boot/initrd.img.kernelver /lib/modules/kernelver
kann sein dass ich die beiden pfade wieder evrtauscht habe, tu ich jedesmal
![Wink ;)](./images/smilies/icon_wink.gif)
Anytime if we think we were right,
we were maybe wrong.
we were maybe wrong.
mkinitrd hat auch eine Option um den Kernel anzugeben. Ich kenne initrd nicht weil er mit schon 2x Probleme bereitet hat. Ich benutze yaird, aber das ist ein anderes Thema.
cramfs wird nicht enpackt im üblichen Sinn. Es ist ein Dateisystem und kann auch gemountet werden.
Wieder vom meinem System aus:ok cramfs ist da.
Ansonsten wirdst du dazu das Modul cramfs laden müssen.
Dannach kannst du die Datei mounten. Ungefähr so:
Das loop Device sollte falls es nicht im Kernel ist auch geladen werden:
cramfs wird nicht enpackt im üblichen Sinn. Es ist ein Dateisystem und kann auch gemountet werden.
Wieder vom meinem System aus:
Code: Alles auswählen
cat /proc/filesystems |grep cram
cramfs
Ansonsten wirdst du dazu das Modul cramfs laden müssen.
Dannach kannst du die Datei mounten. Ungefähr so:
Code: Alles auswählen
mkdir /tmp/c
mount -l loop /tmp/initrd... /tmp/c
Code: Alles auswählen
modprobe loop
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.
- sysoptiger
- Beiträge: 349
- Registriert: 08.09.2004 09:08:38
- Wohnort: Griesheim
-
Kontaktdaten:
@meme hat geschrieben:du solltest mal versuchen, dein initrd image auf folgende art und weise zu erstellen:Wenn du die module nicht mit angibst, benutzt er die vom aktuell laufendem kernel, die du ja nicht haben willst.Code: Alles auswählen
mkinitrd -o /boot/initrd.img.kernelver /lib/modules/kernelver
Danke, das hat geholfen.
Server läuft nun wieder.
Vielen Dank nochmal an alle für die Hilfe
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Gruß
Peter