initrd.img missing block-devices sda

08/12/2012 - 19:13 von hlehmann | Report spam
Moinmoin,

Ich habe einen Rechner mit 2 Debian-Instanzen (lenny,squeeze).
Die Kernelversion ist identisch. (selbst kompiliert)

Nachdem wechsel auf squeeze bootet das System noch, aber
nachdem erzeugen einer neuen initrd bootet das System nicht mehr.

Ursache: Es fehlen die Devices fuer sda.
Die Ursache dafuer scheint in mkinitramfs zu liegen,
welches wiederum auf udev zurueckgreift.

Ich habe schon einiges probiert:
- mit/ohne udevd
- debug: sh -x `which mkinitramfs`
- Auszug s.u.

Hat jemand eine Idee wie man den Fehler (systematisch) einkreisen kann?

Lt. [3] koennte es ein Bug sein, aber selbst die Querverweise fuehrten nicht in die Naehe des Ziels.


Danke.
Glueck Auf. Heiko


Hier noch ein paar Details:

- boot msg
sd 0:2:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DP
sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 >
...
Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/sda5 does not exist. Dropping to a shell!


(initramfs) ls /dev/sd*
/dev/sdb /dev/sdd /dev/sdf1 /dev/sdh /dev/sdj /dev/sdl
/dev/sdb1 /dev/sde /dev/sdf2 /dev/sdh1 /dev/sdj1
/dev/sdc /dev/sdf /dev/sdg /dev/sdi /dev/sdk

- alle device da, ausser sda?!

sq:/tmp# uname -a
Linux sq 2.6.32.56-xen0 #6 SMP Thu Dec 6 19:43:14 CET 2012 x86_64 GNU/Linux

- test cmp cfg

# egrep "^[A-Z]" /etc/initramfs-tools/initramfs.conf | grep MODULES
MODULES=most

- scheinbar o.Befund

- test cmp initrd le/sq
## check initrd
dirtmp=/tmp
dirinit=initsq
initrd=/boot/initrd.img-2.6.32.56-xen0

cd $dirtmp
echo "$dirinit $initrd `pwd`"
[ -d $dirinit ] && rm -fR $dirinit
mkdir $dirinit && cd $dirinit && gunzip -c $initrd | cpio -id && cd -
echo "found $dirinit .dev: `ls -la $dirinit/etc/udev/ | grep '\.dev' | wc -l`"
echo "found $dirinit rules: `ls -l $dirinit/etc/udev/ | grep rules | wc -l`"

- so sah es bei lenny aus:
found initle .dev: 1
found initle rules: 4

- so sieht es bei squeeze aus:
found initsq .dev: 0
found initsq rules: 0

-> /etc/udev enthaelt weder .dev noch foo.rules
- allerdings ist .dev (in lenny) auch nur ein leeres Verzeichnis.

-
- test udevadm

sq# udevadm trigger --verbose | grep block | wc -l
0
le# udevadm trigger --verbose | grep block | wc -l
109
le# udevadm trigger --verbose | grep block | grep sda | wc -l
9

-> lenny findet 109 block-devices, squeeze: 0

- test debug mkinitramfs

sh -x `which mkinitramfs` -v -o /boot/initrd.img-$VERlin$extra $VERlin > $mkout 2>&1

le:/tmp# egrep "sda|sdb" $mkout
+ RESUME=/dev/sda2

sq:/tmp# egrep "sda|sdb" $mkout
+ RESUME=/dev/sda2

-> Ausgabe identisch
- findet nur resume (hibernate?)
- enthaelt weder sda,sdb etc. , d.h. mkinitramfs fuer weitere diag ungeeignet



[1] http://bugs.debian.org/cgi-bin/bugr...i?bugf8616
Subject: initramfs-tools: for root /boot/rootfs missing /boot/rootfs /sys/block/ entry
virtual machine with few space on /boot
mkinitramfs: workaround is MODULES=most
dep_add_modules
-> nicht zutreffend


[2] http://wiki.ubuntuusers.de/udev
ubuntuusers.de # Wiki # udev
udevadm info --query=all


[3] http://bugs.debian.org/cgi-bin/bugr...i?bugR0198
Debian Bug report logs - #520198 mkinitramfs: cannot build initrd with rootfs on mmcblk
kernel-img.conf
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
08/12/2012 - 20:38 | Warnen spam
Am 08.12.2012 19:13, schrieb Heiko L.:



Moinmoin,

Ich habe einen Rechner mit 2 Debian-Instanzen (lenny,squeeze).
Die Kernelversion ist identisch. (selbst kompiliert)

Nachdem wechsel auf squeeze bootet das System noch, aber
nachdem erzeugen einer neuen initrd bootet das System nicht mehr.

Ursache: Es fehlen die Devices fuer sda.
Die Ursache dafuer scheint in mkinitramfs zu liegen,
welches wiederum auf udev zurueckgreift.

Ich habe schon einiges probiert:
- mit/ohne udevd
- debug: sh -x `which mkinitramfs`
- Auszug s.u.

Hat jemand eine Idee wie man den Fehler (systematisch) einkreisen kann?

Lt. [3] koennte es ein Bug sein, aber selbst die Querverweise fuehrten nicht in die Naehe des Ziels.


Danke.
Glueck Auf. Heiko



Ich kann dir da immo nicht helfen, aber ich frage mich gerade, ob es für
so was nicht einen Err-Tree gibt, angefangen beim Kernel<?>, wo dann der
Fehler entsprechend "eingehàngt" ist.
Dann wàr's doch ziemlich easy <denke ich mal so> ...

Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen