When using an nbd root, wait-for-root blocks for 30 seconds before booting continues successfully.
Using Ubuntu Natty, related packages versions:
nbd-client 1:2.9.16-6ubuntu1
initramfs-tools 0.98.1ubuntu9
The wait-for-root call from /usr/share/initramfs-tools/scripts/local:
while [ -z "${FSTYPE}" ]; do
FSTYPE=$(wait-for-root "${ROOT}" ${ROOTDELAY:-30})
# Run failure hooks, hoping one of them can fix up the system
# and we can restart the wait loop. If they all fail, abort
# and move on to the panic handler and shell.
if [ -z "${FSTYPE}" ] && ! try_failure_hooks; then
break
fi
done
I replaced wait-for-root with a sh script that did `set >&2`, here are the relevant environment variables at the time wait-for-root was called:
ROOT='/dev/nbd0'
ROOTDELAY=''
ROOTFLAGS=''
ROOTFSTYPE=''
nbdroot='192.168.0.1,2011'
It's probably worth noting that "nbd0: unknown partition table" was displayed asynchronously 1-2 seconds after wait-for-root was invoked and while it was still waiting. But I tried adding a "sleep 5" as the last line of local-top/nbd, so that the nbd message was displayed a lot before wait-for-root was called, and it didn't make a difference. So I don't think a race condition is involved in this problem.
Temporarily I'm passing rootdelay=1 in the kernel command line to work around the problem.
When using an nbd root, wait-for-root blocks for 30 seconds before booting continues successfully.
Using Ubuntu Natty, related packages versions:
nbd-client 1:2.9.16-6ubuntu1
initramfs-tools 0.98.1ubuntu9
The wait-for-root call from /usr/share/ initramfs- tools/scripts/ local: $(wait- for-root "${ROOT}" ${ROOTDELAY:-30})
while [ -z "${FSTYPE}" ]; do
FSTYPE=
# Run failure hooks, hoping one of them can fix up the system
# and we can restart the wait loop. If they all fail, abort
# and move on to the panic handler and shell.
if [ -z "${FSTYPE}" ] && ! try_failure_hooks; then
break
fi
done
I replaced wait-for-root with a sh script that did `set >&2`, here are the relevant environment variables at the time wait-for-root was called: '192.168. 0.1,2011'
ROOT='/dev/nbd0'
ROOTDELAY=''
ROOTFLAGS=''
ROOTFSTYPE=''
nbdroot=
It's probably worth noting that "nbd0: unknown partition table" was displayed asynchronously 1-2 seconds after wait-for-root was invoked and while it was still waiting. But I tried adding a "sleep 5" as the last line of local-top/nbd, so that the nbd message was displayed a lot before wait-for-root was called, and it didn't make a difference. So I don't think a race condition is involved in this problem.
Temporarily I'm passing rootdelay=1 in the kernel command line to work around the problem.