Brak oczekiwania na dyski w initrd.

Łukasz Krotowski lukasz.krotowski at gmail.com
Sat Jun 22 17:18:45 CEST 2013


Cześć,
po zmianie jądra na 3.9 z 3.7 restart z wygenerowanym initrd kończył się
paniką z powodu braku root device. Wynika to z tego że z jakiegoś powodu
(zakładam, że ważnego) 3.9 chce koniecznie resetować SATA na starcie:

$ dmesg
...
[    1.137889] ata4: SATA link down (SStatus 0 SControl 300)
[    1.137974] ata3: SATA link down (SStatus 0 SControl 300)
[    1.304443] ata2: softreset failed (device not ready)
[    1.304491] ata2: applying PMP SRST workaround and retrying
[    1.304550] ata1: softreset failed (device not ready)
[    1.304599] ata1: applying PMP SRST workaround and retrying
[    1.471041] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    1.471114] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    1.481719] ata1.00: ATA-8: WDC WD10EFRX-68JCSN0, 01.01A01, max UDMA/133
[    1.481763] ata1.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth
31/32), AA
[    1.481809] ata1.00: SB600 AHCI: limiting to 255 sectors per cmd
[    1.482434] ata2.00: ATA-8: WDC WD10EFRX-68JCSN0, 01.01A01, max UDMA/133
[    1.482477] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth
31/32), AA
[    1.482522] ata2.00: SB600 AHCI: limiting to 255 sectors per cmd
[    1.482842] ata1.00: SB600 AHCI: limiting to 255 sectors per cmd
[    1.482884] ata1.00: configured for UDMA/133

Wygląda to na jakąś poprawkę dla southbridge AMD SB600. Sam reset
trochę trwa (trochę to pewnie < 1,5 sek).

Niestety nasz linuxrc (nie ma znaczenia czy z udev czy nie) próbuje od
razu złożyć macierz (md raid1) a na niej lvm na którym jest root device.
Co kończy się oczywiście brakiem urządzeń fizycznych i paniką.

Moja lokalna poprawka to dorzucenie do linuxrc usleep 2 sek:
$ cat linuxrc
...
mkdir /dev/pts
mkdir /dev/shm
usleep 2000000
mount -t sysfs none /sys
mount -t tmpfs run /run

Co powoduje, że jądro ma wystarczająco dużo czasu na reset SATA
i odpowiednie dyski dla macierzy są znajdowane.

Pominąłem jakiś parametr / obejście w geninitrd czy po prostu jest to
błąd geninitrd?

Pozdrawiam,
Łukasz

PS Podobne zachowanie opisane jest np. tu:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=707286


More information about the pld-devel-pl mailing list