/scripts/local: Waiting for root file system...
Hello Maximilian.
I've ran into issue with initramfs-tools which
you support. Let me explain the problem.
I'm installing sarge on a md0 raid1 which consists of
/dev/sda2 and /dev/sdb2.
Here's the snippet from console when the system
boots up.
Begin: Mounting root file system... ...
Begin: Running /scripts/local-top ...
target1:0:6: Ending Domain Validation
Begin: Loading MD modules ...
md: raid1 personality registered for level 1
Success: loaded module raid1.
Done.
Begin: Assembling all MD arrays ...
mdadm: No devices listed in conf file were found.
Failure: failed to assemble all arrays.
Done.
Done.
Begin: Waiting for root file system... ...
SCSI device sda: 71687372 512-byte hdwr sectors (36704 MB)
sda : Write Protect is off
SCSI device sda : write cache: enabled, read cache: enabled, supports DPO
...
Further sdb comes up.
As you see /scripts/local-top/mdadm is run when
SCSI subsystem hasn't yet brought SCSI devices up.
When I'm dropped into initramfs shell if I run
/scripts/local-premount/mdadm then md devices
are started and I can boot into my system.
Obviously this is some kernel related issue but
it can be easily workarounded.
In /scripts/local you have a wait cycle while
"Waiting for root file system...":
while [ ! -e "${ROOT}" ] \
|| ! $(get_fstype "${ROOT}" >/dev/null); do
/bin/sleep 0.1
slumber=$(( ${slumber} - 1 ))
[ ${slumber} -gt 0 ] || break
done
I suggest to change it:
while [ ! -e "${ROOT}" ] \
|| ! $(get_fstype "${ROOT}" >/dev/null); do
+ [ $(( ${slumber} % 100 )) -eq 0 ] && run_scripts
/scripts/local-top
/bin/sleep 0.1
slumber=$(( ${slumber} - 1 ))
[ ${slumber} -gt 0 ] || break
done
So slow drivers finish and we will
successfully fetch root and boot into it.
Regards,
Petya.
ps: described situation happens with linux-image-2.6.20-1-686-bigmem
and doesn't happen with linux-image-2.6.20-1-686 (old backports.org
kernels).
Reply to: