Re: check_finished() syntax weirdness

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

 



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




[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux