On 05/13/2014 04:32 PM, Harald Hoyer wrote:
On 13.05.2014 16:21, Hannes Reinecke wrote:
On 05/13/2014 02:10 PM, Harald Hoyer wrote:
On 13.05.2014 12:42, Hannes Reinecke wrote:
On 05/13/2014 12:39 PM, Harald Hoyer wrote:
for systemd:
modules.d/98systemd/rootfs-generator.sh:
[ "${root%%:*}" = "block" ] && generator_wait_for_dev "${root#block:}"
for non-systemd:
modules.d/95rootfs-block/parse-block.sh:
[ "${root%%:*}" = "block" ] && wait_for_dev "${root#block:}"
What is your kernel command line?
BOOT_IMAGE=/boot/vmlinuz-3.12.18-4-default \
root=UUID=7b90aa11-62ba-4260-81c6-bcf43914e97e \
console=tty0 console=ttyS1,57600 sysrq_always_enabled \
panic=100 ignore_loglevel unknown_nmi_panic \
resume=/dev/disk/by-uuid/7be10c24-f0fe-4ecd-b04f-c307b0370c48 \
splash=silent quiet showopts crashkernel=166M-:83M \
rd.break=pre-mount
(The pre-mount thingie is inserted by me so that I have a chance to debug & fix
things)
Cheers,
Hannes
do a rd.break=initqueue and look in the
/lib/dracut/hooks/initqueue/finished
directory.
If you use systemd in the initramfs, you should have:
/usr/lib/systemd/system-generators/dracut-rootfs-generator
in the initramfs, which transforms root=UUID=... into the finished hook.
You should be able to test it in the dracut shell with:
# bash -x /usr/lib/systemd/system-generators/dracut-rootfs-generator
Which seems to be the problem; the generator is present, but apparently not
called.
Once I execute the above line the 'finished' entry for the root fs is there.
From which I surmise that the generator hasn't been called.
Hmm.
Does it have the executable bits set?
Argl. Totally stupid.
Look at modules.d/99base/module_setup.sh:
## save host_devs which we need bring up
if [[ $hostonly_cmdline == "yes" ]]; then
if [[ -f "$initdir/lib/dracut/need-initqueue" ]] || !
dracut_module_included "systemd"; then
(
if dracut_module_included "systemd"; then
DRACUT_SYSTEMD=1
fi
PREFIX="$initdir"
. "$moddir/dracut-lib.sh"
for _dev in ${host_devs[@]}; do
[[ "$_dev" == "$root_dev" ]] && continue
_pdev=$(get_persistent_dev $_dev)
case "$_pdev" in
/dev/?*) wait_for_dev $_pdev;;
*) ;;
esac
done
)
fi
fi
So if /etc/fstab contains just the root device (or if the swap
device resides on a different device which is initialized earlier)
the initqueue will _never_ run, and the worker scripts will never
be executed.
Once I remove the '[[ "$_dev" == "$root_dev" ]] && continue'
line the system boots.
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@xxxxxxx +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html