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

Bug#544592: linux-image-2.6.30-1-686: sometimes failed to boot



Ben Hutchings wrote:
On Tue, 2009-09-01 at 20:44 +0200, Davide Prina wrote:
Package: linux-image-2.6.30-1-686
Version: 2.6.30-6
Severity: important

Are you actually using the above packaged kernel or a custom kernel?

normally I use a custom kernel.

sometimes the boot fail: after grub I see: "Loading, please wait ...", but the hard disk is not used. After a while busybox appear; here I can see that /proc/cmdline try to start something in directory /dev/disk/by-id, but this directory don't exists.

The problem there appeared to be that your custom kernel included two
different drivers that both supported your disk controller.  In this
case the kernel effectively chooses one driver at random.  In packaged
kernel images we try to avoid this by avoiding such duplication or
blacklisting alternate drivers by default.

I don't know that a module can cause these problems. I have always think that a module is loaded only if needed and this process is deterministic.

How can you found when a module is a duplication of another one?

I have done the following steps:

$ lspci
[...]
00:11.0 Mass storage controller: Promise Technology, Inc. PDC20265 (FastTrak100 Lite/Ultra100) (rev 02)
[...]

$ cat /sys/bus/pci/devices/0000\:00\:11.0/vendor
0x105a
$ cat /sys/bus/pci/devices/0000\:00\:11.0/device
0x0d30

$ grep -i "0x105a\|0x0d30" /usr/src/linux/include/linux/pci_ids.h | sort
#define PCI_DEVICE_ID_PROMISE_20265	0x0d30
#define PCI_VENDOR_ID_PROMISE		0x105a

$ grep -Rl "PCI_DEVICE_ID_PROMISE_20265\|PCI_VENDOR_ID_PROMISE" \
  /usr/src/linux
/usr/src/linux/arch/powerpc/platforms/powermac/pci.c
/usr/src/linux/drivers/ata/pata_pdc202xx_old.c
/usr/src/linux/drivers/block/sx8.c
/usr/src/linux/drivers/ide/pdc202xx_old.c
/usr/src/linux/drivers/message/i2o/pci.c
/usr/src/linux/include/linux/pci_ids.h

in file /usr/src/linux/drivers/ata/pata_pdc202xx_old.c I have found:
static const struct pci_device_id pdc202xx[]

in file /usr/src/linux/drivers/ide/pdc202xx_old.c I have found:
static const struct pci_device_id pdc202xx_pci_tbl[] = {

$ find /usr/src/linux/ -type f -name Makefile | xargs grep pdc202xx \
  | grep CONFIG_ | sed "s/\/usr\/src\/linux\///"
drivers/ata/Makefile:obj-$(CONFIG_PATA_PDC_OLD)	+= pata_pdc202xx_old.o
drivers/ide/Makefile:obj-$(CONFIG_BLK_DEV_PDC202XX_OLD)	+= pdc202xx_old.o
drivers/ide/Makefile:obj-$(CONFIG_BLK_DEV_PDC202XX_NEW)	+= pdc202xx_new.o

$ grep "CONFIG_PATA_PDC_OLD\|CONFIG_BLK_DEV_PDC202XX_OLD" \
  /boot/config-2.6.30-1-686
CONFIG_BLK_DEV_PDC202XX_OLD=m
# CONFIG_PATA_PDC_OLD is not set

$ grep "CONFIG_PATA_PDC_OLD\|CONFIG_BLK_DEV_PDC202XX_OLD" \
  /boot/config-2.6.30-1-custom
CONFIG_BLK_DEV_PDC202XX_OLD=m
CONFIG_PATA_PDC_OLD=m

I have recompiled and now I have
$ grep "CONFIG_PATA_PDC_OLD\|CONFIG_BLK_DEV_PDC202XX_OLD" \
  /boot/config-2.6.30-1-custom
CONFIG_BLK_DEV_PDC202XX_OLD=m
# CONFIG_PATA_PDC_OLD is not set

but still have problems. I noted that good boots have greatly increased over bad boots (I have made few reboots and nearly all are good now). When I have a bad boot I have the message saying that it is impossible to remove the SCSI_WAIT_SCAN module (I have disable the "module unloading" option). When busybox appear I see the same problem (directory /dev/disk/by-id is missing).

$ grep "SCSI_WAIT_SCAN" /boot/config-2.6.30-custom CONFIG_SCSI_WAIT_SCAN=m
$ grep "SCSI_WAIT_SCAN" /boot/config-2.6.30-1-686
CONFIG_SCSI_WAIT_SCAN=m

I have done some wrong steps?
What else could I have done wrong?

Many thanks for your help

Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Perché microsoft continua a compiere azioni illegali?:
http://linguistico.sf.net/wiki/doku.php?id=traduzioni:ms_illegal
GNU/Linux User: 302090: http://counter.li.org
Non autorizzo la memorizzazione del mio indirizzo su outlook




Reply to: