initrd Problem (gelöst)

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

initrd Problem (gelöst)

Beitrag von sysoptiger » 22.05.2006 15:48:41

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
Zuletzt geändert von sysoptiger am 23.05.2006 10:35:19, insgesamt 1-mal geändert.

C167
Beiträge: 468
Registriert: 06.04.2006 08:55:20
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von C167 » 22.05.2006 16:18:32

vielleicht lässt sich mit "mkinitrd-kpkg" eine neue erstellen?

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 22.05.2006 16:30:00

Ich hab aber nur die Chance mit Knoppix zu booten!
Mein Debian startet ja nun nicht mehr!

Gruß

Peter

init 0
Beiträge: 673
Registriert: 21.10.2003 19:40:28

Beitrag von init 0 » 22.05.2006 16:42:37

Schau dir mal die Anleitung zu chroot an.
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 22.05.2006 17:26:56

Also mit

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
greift er immer noch auf die Module von Knoppix zurück.
Wie kann ich das ändern?

Gruß

Peter

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 22.05.2006 18:24:31

Wäre es ev. sinnvoller einen Kernel zu kompilieren ohne diese initrd?
Habe extra ne /boot Partition für sowas freigehalten.

Gruß

Peter

init 0
Beiträge: 673
Registriert: 21.10.2003 19:40:28

Beitrag von init 0 » 22.05.2006 18:54:12

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.

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
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
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 22.05.2006 18:59:27

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

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 22.05.2006 19:30:36

@init 0
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)
Ne Idee wie man das entpackt?

Gruß

Peter

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 22.05.2006 19:43:00

sysoptiger hat geschrieben: greift er immer noch auf die Module von Knoppix zurück.
Wie kann ich das ändern?
Damit meinte ich, er bringt ne Fehlermeldung can't find /lib/modules/2.6.11.
Und die existieren in meinem System nicht, aber auf Knoppix.

Gruß

Peter

Benutzeravatar
me
Beiträge: 868
Registriert: 30.10.2005 00:14:23
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Paderborn
Kontaktdaten:

Beitrag von me » 22.05.2006 19:55:09

du solltest mal versuchen, dein initrd image auf folgende art und weise zu erstellen:

Code: Alles auswählen

mkinitrd -o /boot/initrd.img.kernelver /lib/modules/kernelver
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 ;)
Anytime if we think we were right,
we were maybe wrong.

init 0
Beiträge: 673
Registriert: 21.10.2003 19:40:28

Beitrag von init 0 » 22.05.2006 20:01:04

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:

Code: Alles auswählen

cat /proc/filesystems |grep cram
        cramfs
ok cramfs ist da.
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
Das loop Device sollte falls es nicht im Kernel ist auch geladen werden:

Code: Alles auswählen

modprobe loop
Ach ja, und nix schrotten.
Ich habe einen schlechten Stil, ich weiss, Danke, wurde mir bereits gesagt.

Benutzeravatar
sysoptiger
Beiträge: 349
Registriert: 08.09.2004 09:08:38
Wohnort: Griesheim
Kontaktdaten:

Beitrag von sysoptiger » 23.05.2006 10:37:17

me hat geschrieben:du solltest mal versuchen, dein initrd image auf folgende art und weise zu erstellen:

Code: Alles auswählen

mkinitrd -o /boot/initrd.img.kernelver /lib/modules/kernelver
Wenn du die module nicht mit angibst, benutzt er die vom aktuell laufendem kernel, die du ja nicht haben willst.
@me

Danke, das hat geholfen.
Server läuft nun wieder.

Vielen Dank nochmal an alle für die Hilfe :D

Gruß

Peter

Antworten