[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#620814: initramfs-tools: fails to include essential module for other leg of md0



Package: initramfs-tools
Version: 0.98.8
Severity: normal

(resending manually because exim hadn't been configured yet)

This is a new Wheezy install on an old server machine. The machine has four
PATA disks, tied to two controllers. The four disks are combined into a SW-raid
volume using mdadm:

ladmin@fury:/tmp$ sudo mdadm --detail /dev/md0|grep /dev/
/dev/md0:
       0       8       36        0      active sync   /dev/sdc4
       1       8       52        1      active sync   /dev/sdd4
       2       8        4        2      active sync   /dev/sda4
       4       8       20        3      active sync   /dev/sdb4

[ 1.145853] scsi0 : pata_sil680
[ 1.146143] scsi1 : pata_sil680
[ 1.147018] ata1: PATA max UDMA/133 cmd 0xc400 ctl 0xc000 bmdma 0xb000 irq 23
[ 1.147085] ata2: PATA max UDMA/133 cmd 0xb800 ctl 0xb400 bmdma 0xb008 irq 23
[ 1.148407] scsi2 : pata_serverworks
[ 1.148835] scsi3 : pata_serverworks
[ 1.156965] ata3: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14
[ 1.157034] ata4: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15


During installation, I configured initramfs-tools to determine the required
modules automatically, which resulted in a non-booting system (notice that
the sil680 module is missing):

ladmin@fury:/tmp$ lsinitramfs /boot/initrd.img-2.6.32-5-686 |grep ata
lib/udev/ata_id
lib/modules/2.6.38-2-686/kernel/drivers/ata
lib/modules/2.6.38-2-686/kernel/drivers/ata/ata_generic.ko
lib/modules/2.6.38-2-686/kernel/drivers/ata/pata_serverworks.ko
lib/modules/2.6.38-2-686/kernel/drivers/ata/libata.ko


As a workaround, I've now added both pata_ modules to /e/i-t/modules,
but that is about as far as my knowledge of initramfs-tools will go.
I'll be glad to try other suggestions, or provide more info.


--
(regarding the below: I apologize, I can get carried away sometimes...
I'll leave solving this up to you :)

From my reading of sh -x output, it appears that there is just one level too  
much indirection going on. We have a
  + readlink -f /dev/mapper/fury-root
  /dev/dm-0
Which finds the correct dm device. Following the trace, 
  + ls -1 /sys/block/dm-0/slaves
  + block=md0
md0 is identified as the correct md device underlying the lvm VG. But this is
also where it breaks down; the sed expression following it reduces /proc/mdstat
to just a single block device:
  + block=sdc
  [...]
  + readlink -f /sys/block/sdc/device

This code maps to dep_add_modules() in hook-functions, particularly the sed
expression on line 288 (preceded by comment "lvm on md"). The code surely
doesn't look like it's designed to handle more than one block device per
invocation, but that is probably what's needed here.  It's trivial to modify
the sed expression to that end (replacing the last -e argument):
  sed [...] -e 's/\[[0-9]\+\]//g' -e '/^'${block}' :/s/^[^[]*\[ //p'
But that still leaves the issue that the rest of the code expects $block to
only represent a single block device. At the very least, the "#Error out" and
"# sys walk ATA" code blocks (line 350+) would need a loop.



-- Package-specific info:
-- initramfs sizes
-rw-r--r-- 1 root root 4.2M Apr  3 21:37 /boot/initrd.img-2.6.32-5-686
-rw-r--r-- 1 root root 4.3M Apr  3 21:37 /boot/initrd.img-2.6.38-2-686
-- /proc/cmdline
BOOT_IMAGE=/vmlinuz-2.6.38-2-686 root=/dev/mapper/fury-root ro

-- resume
RESUME=/dev/mapper/sda3_crypt
-- /proc/filesystems
	btrfs
	ext4
	ext3

-- lsmod
Module                  Size  Used by
ext3                   98001  1 
jbd                    40818  1 ext3
dm_mirror              17249  1 
dm_region_hash         13072  1 dm_mirror
dm_log                 13269  3 dm_mirror,dm_region_hash
loop                   17805  0 
sha256_generic         16709  8 
aes_i586               16608  16 
aes_generic            37066  1 aes_i586
cbc                    12659  8 
dm_crypt               17809  4 
snd_pcm                52774  0 
snd_timer              22171  1 snd_pcm
ohci_hcd               21928  0 
ehci_hcd               34889  0 
snd                    38153  2 snd_pcm,snd_timer
usbcore                99058  3 ohci_hcd,ehci_hcd
soundcore              12878  1 snd
snd_page_alloc         12841  1 snd_pcm
tpm_tis                12949  0 
tpm                    17454  1 tpm_tis
tg3                   103807  0 
pcspkr                 12515  0 
tpm_bios               12799  1 tpm
aic7xxx                97720  0 
i2c_piix4              12480  0 
libphy                 18279  1 tg3
evdev                  13084  2 
processor              26983  0 
nls_base               12649  1 usbcore
i2c_core               18989  1 i2c_piix4
thermal_sys            17667  1 processor
scsi_transport_spi     19032  1 aic7xxx
button                 12866  0 
ext4                  251726  3 
mbcache                12810  2 ext3,ext4
jbd2                   55701  1 ext4
crc16                  12327  1 ext4
dm_mod                 56394  37 dm_mirror,dm_log,dm_crypt
raid456                51595  1 
async_raid6_recov      12459  1 raid456
async_pq               12503  2 raid456,async_raid6_recov
raid6_pq               86733  2 async_raid6_recov,async_pq
async_xor              12390  3 raid456,async_raid6_recov,async_pq
xor                    21454  1 async_xor
async_memcpy           12363  2 raid456,async_raid6_recov
async_tx               12510  5 raid456,async_raid6_recov,async_pq,async_xor,async_memcpy
raid10                 25891  1
md_mod                 80674  4 raid456,raid10
btrfs                 419245  1 
zlib_deflate           21186  1 btrfs
crc32c                 12576  1 
libcrc32c              12394  1 btrfs
sd_mod                 34941  20 
crc_t10dif             12332  1 sd_mod
ata_generic            12439  0 
pata_serverworks       12869  8 
pata_sil680            12646  8 
libata                131904  3 ata_generic,pata_serverworks,pata_sil680
scsi_mod              134369  4 aic7xxx,scsi_transport_spi,sd_mod,libata

-- /etc/initramfs-tools/modules
pata_sil680
pata_serverworks

-- /etc/kernel-img.conf
# Kernel image management overrides
# See kernel-img.conf(5) for details
do_symlinks = yes
do_bootloader = no
do_initrd = yes
link_in_boot = no

-- /etc/initramfs-tools/initramfs.conf
MODULES=most
BUSYBOX=y
KEYMAP=n
COMPRESS=gzip
BOOT=local
DEVICE=
NFSROOT=auto

-- /etc/initramfs-tools/update-initramfs.conf
update_initramfs=yes
backup_initramfs=no

-- /etc/crypttab
sda3_crypt /dev/sda3 /dev/urandom
cipher=aes-cbc-essiv:sha256,size=256,swap
sdb3_crypt /dev/sdb3 /dev/urandom
cipher=aes-cbc-essiv:sha256,size=256,swap
sdc3_crypt /dev/sdc3 /dev/urandom
cipher=aes-cbc-essiv:sha256,size=256,swap
sdd3_crypt /dev/sdd3 /dev/urandom
cipher=aes-cbc-essiv:sha256,size=256,swap

-- /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4] 
md1 : active raid10 sdc5[0] sdb5[3] sda5[2] sdd5[1]
      307062784 blocks super 1.2 512K chunks 2 offset-copies [4/4] [UUUU] 
md0 : active raid5 sdc4[0] sdb4[4] sda4[2] sdd4[1]
      18869760 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] 
unused devices: <none>

-- mkinitramfs hooks
/etc/initramfs-tools/hooks/:

/usr/share/initramfs-tools/hooks:
btrfs
busybox
cryptgnupg
cryptkeyctl
cryptopenct
cryptopensc
cryptpassdev
cryptroot
dmsetup
keymap
klibc
lvm2
mdadm
thermal
udev


-- System Information:
Debian Release: wheezy/sid
  APT prefers stable
  APT policy: (900, 'stable'), (600, 'testing'), (300, 'unstable'), (200, 'experimental') Architecture: i386 (i686)

Kernel: Linux 2.6.38-2-686 (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_GB.UTF-8) Shell: /bin/sh linked to /bin/dash

Versions of packages initramfs-tools depends on:
ii  cpio                          2.11-7     GNU cpio -- a program to manage ar
ii  findutils                     4.4.2-1+b1 utilities for finding files--find,
ii  klibc-utils                   1.5.21-1   small utilities built with klibc f
ii  module-init-tools             3.12-1     tools for managing Linux kernel mo
ii  udev                          166-1      /dev/ and hotplug management daemo

Versions of packages initramfs-tools recommends:
ii  busybox                      1:1.17.1-10 Tiny utilities for small and embed

Versions of packages initramfs-tools suggests:
ii  bash-completion               1:1.3-1    programmable completion for the ba

-- no debconf information



Reply to: