* check_finished() syntax weirdness
@ 2014-05-13 9:44 Hannes Reinecke
[not found] ` <5371E992.1080802-l3A5Bk7waGM@public.gmane.org>
0 siblings, 1 reply; 12+ messages in thread
From: Hannes Reinecke @ 2014-05-13 9:44 UTC (permalink / raw)
To: Harald Hoyer; +Cc: initramfs
Hi all,
I'm trying to figure out why my initqueue scripts are never called.
Eg 95fcoe is just installing an initqueue job, which should call
'fcoe-up' on the interface.
However, this script is never called, irrespective of any 'fcoe='
parameters.
Looking a dracut-initqueue.sh, we have this:
while :; do
check_finished && break
udevadm settle --exit-if-exists=$hookdir/initqueue/work
check_finished && break
if [ -f $hookdir/initqueue/work ]; then
rm -f -- "$hookdir/initqueue/work"
fi
for job in $hookdir/initqueue/*.sh; do
[ -e "$job" ] || break
job=$job . $job
check_finished && break 2
done
udevadm settle --timeout=0 >/dev/null 2>&1 || continue
...
and check_finished is:
check_finished() {
local f
for f in $hookdir/initqueue/finished/*.sh; do
[ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0
{ [ -e "$f" ] && ( . "$f" ) ; } || return 1
done
return 0
}
IE if no scripts are present in the 'finished' queue,
'check_finished' will return '0', causing the main initqueue to
short-circuit and the actual initqueue jobs will never be executed.
Is this the intended outcome?
IE are all jobs for the initqueue are _required_ to supply a
'finished' job?
I would have thought it to be a bit more permissive, ie do a
'return 1' if no finish j0bs have been found ...
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare-l3A5Bk7waGM@public.gmane.org +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)
^ permalink raw reply [flat|nested] 12+ messages in thread[parent not found: <5371E992.1080802-l3A5Bk7waGM@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371E992.1080802-l3A5Bk7waGM@public.gmane.org> @ 2014-05-13 9:48 ` Harald Hoyer [not found] ` <5371EA56.3000203-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Harald Hoyer @ 2014-05-13 9:48 UTC (permalink / raw) To: Hannes Reinecke; +Cc: initramfs On 13.05.2014 11:44, Hannes Reinecke wrote: > Hi all, > > I'm trying to figure out why my initqueue scripts are never called. > Eg 95fcoe is just installing an initqueue job, which should call > 'fcoe-up' on the interface. > However, this script is never called, irrespective of any 'fcoe=' parameters. > > Looking a dracut-initqueue.sh, we have this: > > while :; do > > check_finished && break > > udevadm settle --exit-if-exists=$hookdir/initqueue/work > > check_finished && break > > if [ -f $hookdir/initqueue/work ]; then > rm -f -- "$hookdir/initqueue/work" > fi > > for job in $hookdir/initqueue/*.sh; do > [ -e "$job" ] || break > job=$job . $job > check_finished && break 2 > done > > udevadm settle --timeout=0 >/dev/null 2>&1 || continue > ... > > and check_finished is: > > check_finished() { > local f > for f in $hookdir/initqueue/finished/*.sh; do > [ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0 > { [ -e "$f" ] && ( . "$f" ) ; } || return 1 > done > return 0 > } > > IE if no scripts are present in the 'finished' queue, 'check_finished' will > return '0', causing the main initqueue to short-circuit and the actual > initqueue jobs will never be executed. > > Is this the intended outcome? > IE are all jobs for the initqueue are _required_ to supply a 'finished' job? > > I would have thought it to be a bit more permissive, ie do a > 'return 1' if no finish j0bs have been found ... > > Cheers, > > Hannes Yes, the finished queue defines when to end the main loop. If you want to hang around in the main loop, you have to define the "break" condition, or in this case the negative-continue condition. ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <5371EA56.3000203-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371EA56.3000203-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-05-13 9:55 ` Hannes Reinecke [not found] ` <5371EC2E.4020209-l3A5Bk7waGM@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Hannes Reinecke @ 2014-05-13 9:55 UTC (permalink / raw) To: Harald Hoyer; +Cc: initramfs On 05/13/2014 11:48 AM, Harald Hoyer wrote: > On 13.05.2014 11:44, Hannes Reinecke wrote: >> Hi all, >> >> I'm trying to figure out why my initqueue scripts are never called. >> Eg 95fcoe is just installing an initqueue job, which should call >> 'fcoe-up' on the interface. >> However, this script is never called, irrespective of any 'fcoe=' parameters. >> >> Looking a dracut-initqueue.sh, we have this: >> >> while :; do >> >> check_finished && break >> >> udevadm settle --exit-if-exists=$hookdir/initqueue/work >> >> check_finished && break >> >> if [ -f $hookdir/initqueue/work ]; then >> rm -f -- "$hookdir/initqueue/work" >> fi >> >> for job in $hookdir/initqueue/*.sh; do >> [ -e "$job" ] || break >> job=$job . $job >> check_finished && break 2 >> done >> >> udevadm settle --timeout=0 >/dev/null 2>&1 || continue >> ... >> >> and check_finished is: >> >> check_finished() { >> local f >> for f in $hookdir/initqueue/finished/*.sh; do >> [ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0 >> { [ -e "$f" ] && ( . "$f" ) ; } || return 1 >> done >> return 0 >> } >> >> IE if no scripts are present in the 'finished' queue, 'check_finished' will >> return '0', causing the main initqueue to short-circuit and the actual >> initqueue jobs will never be executed. >> >> Is this the intended outcome? >> IE are all jobs for the initqueue are _required_ to supply a 'finished' job? >> >> I would have thought it to be a bit more permissive, ie do a >> 'return 1' if no finish j0bs have been found ... >> >> Cheers, >> >> Hannes > > Yes, the finished queue defines when to end the main loop. If you want to hang > around in the main loop, you have to define the "break" condition, or in this > case the negative-continue condition. Ah. So fcoe never worked? (As it doesn't supply an 'finished' script) Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare-l3A5Bk7waGM@public.gmane.org +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) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <5371EC2E.4020209-l3A5Bk7waGM@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371EC2E.4020209-l3A5Bk7waGM@public.gmane.org> @ 2014-05-13 10:22 ` Harald Hoyer [not found] ` <5371F250.9040708-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Harald Hoyer @ 2014-05-13 10:22 UTC (permalink / raw) To: Hannes Reinecke; +Cc: initramfs On 13.05.2014 11:55, Hannes Reinecke wrote: > On 05/13/2014 11:48 AM, Harald Hoyer wrote: >> On 13.05.2014 11:44, Hannes Reinecke wrote: >>> Hi all, >>> >>> I'm trying to figure out why my initqueue scripts are never called. >>> Eg 95fcoe is just installing an initqueue job, which should call >>> 'fcoe-up' on the interface. >>> However, this script is never called, irrespective of any 'fcoe=' parameters. >>> >>> Looking a dracut-initqueue.sh, we have this: >>> >>> while :; do >>> >>> check_finished && break >>> >>> udevadm settle --exit-if-exists=$hookdir/initqueue/work >>> >>> check_finished && break >>> >>> if [ -f $hookdir/initqueue/work ]; then >>> rm -f -- "$hookdir/initqueue/work" >>> fi >>> >>> for job in $hookdir/initqueue/*.sh; do >>> [ -e "$job" ] || break >>> job=$job . $job >>> check_finished && break 2 >>> done >>> >>> udevadm settle --timeout=0 >/dev/null 2>&1 || continue >>> ... >>> >>> and check_finished is: >>> >>> check_finished() { >>> local f >>> for f in $hookdir/initqueue/finished/*.sh; do >>> [ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0 >>> { [ -e "$f" ] && ( . "$f" ) ; } || return 1 >>> done >>> return 0 >>> } >>> >>> IE if no scripts are present in the 'finished' queue, 'check_finished' will >>> return '0', causing the main initqueue to short-circuit and the actual >>> initqueue jobs will never be executed. >>> >>> Is this the intended outcome? >>> IE are all jobs for the initqueue are _required_ to supply a 'finished' job? >>> >>> I would have thought it to be a bit more permissive, ie do a >>> 'return 1' if no finish j0bs have been found ... >>> >>> Cheers, >>> >>> Hannes >> >> Yes, the finished queue defines when to end the main loop. If you want to hang >> around in the main loop, you have to define the "break" condition, or in this >> case the negative-continue condition. > > Ah. So fcoe never worked? > (As it doesn't supply an 'finished' script) > > Cheers, > > Hannes What do you mean? Normally there are "finished" scripts installed, which wait for the root device to appear. So the loop continues until the fcoe device appears. ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <5371F250.9040708-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371F250.9040708-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-05-13 10:30 ` Hannes Reinecke [not found] ` <5371F448.5030208-l3A5Bk7waGM@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Hannes Reinecke @ 2014-05-13 10:30 UTC (permalink / raw) To: Harald Hoyer; +Cc: initramfs On 05/13/2014 12:22 PM, Harald Hoyer wrote: > On 13.05.2014 11:55, Hannes Reinecke wrote: [ .. ] >> >> Ah. So fcoe never worked? >> (As it doesn't supply an 'finished' script) >> >> Cheers, >> >> Hannes > > What do you mean? Normally there are "finished" scripts installed, which wait > for the root device to appear. So the loop continues until the fcoe device appears. > Not in my case. Which module should install them? Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare-l3A5Bk7waGM@public.gmane.org +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) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <5371F448.5030208-l3A5Bk7waGM@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371F448.5030208-l3A5Bk7waGM@public.gmane.org> @ 2014-05-13 10:39 ` Harald Hoyer [not found] ` <5371F645.3080309-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Harald Hoyer @ 2014-05-13 10:39 UTC (permalink / raw) To: Hannes Reinecke; +Cc: initramfs On 13.05.2014 12:30, Hannes Reinecke wrote: > On 05/13/2014 12:22 PM, Harald Hoyer wrote: >> On 13.05.2014 11:55, Hannes Reinecke wrote: > [ .. ] >>> >>> Ah. So fcoe never worked? >>> (As it doesn't supply an 'finished' script) >>> >>> Cheers, >>> >>> Hannes >> >> What do you mean? Normally there are "finished" scripts installed, which wait >> for the root device to appear. So the loop continues until the fcoe device >> appears. >> > Not in my case. > Which module should install them? > > Cheers, > > Hannes 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? ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <5371F645.3080309-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371F645.3080309-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-05-13 10:42 ` Hannes Reinecke [not found] ` <5371F729.2000100-l3A5Bk7waGM@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Hannes Reinecke @ 2014-05-13 10:42 UTC (permalink / raw) To: Harald Hoyer; +Cc: initramfs On 05/13/2014 12:39 PM, Harald Hoyer wrote: > On 13.05.2014 12:30, Hannes Reinecke wrote: >> On 05/13/2014 12:22 PM, Harald Hoyer wrote: >>> On 13.05.2014 11:55, Hannes Reinecke wrote: >> [ .. ] >>>> >>>> Ah. So fcoe never worked? >>>> (As it doesn't supply an 'finished' script) >>>> >>>> Cheers, >>>> >>>> Hannes >>> >>> What do you mean? Normally there are "finished" scripts installed, which wait >>> for the root device to appear. So the loop continues until the fcoe device >>> appears. >>> >> Not in my case. >> Which module should install them? >> >> Cheers, >> >> Hannes > > 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 -- Dr. Hannes Reinecke zSeries & Storage hare-l3A5Bk7waGM@public.gmane.org +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) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <5371F729.2000100-l3A5Bk7waGM@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <5371F729.2000100-l3A5Bk7waGM@public.gmane.org> @ 2014-05-13 12:10 ` Harald Hoyer [not found] ` <53720BCF.5080806-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Harald Hoyer @ 2014-05-13 12:10 UTC (permalink / raw) To: Hannes Reinecke; +Cc: initramfs On 13.05.2014 12:42, Hannes Reinecke wrote: > On 05/13/2014 12:39 PM, Harald Hoyer wrote: >> On 13.05.2014 12:30, Hannes Reinecke wrote: >>> On 05/13/2014 12:22 PM, Harald Hoyer wrote: >>>> On 13.05.2014 11:55, Hannes Reinecke wrote: >>> [ .. ] >>>>> >>>>> Ah. So fcoe never worked? >>>>> (As it doesn't supply an 'finished' script) >>>>> >>>>> Cheers, >>>>> >>>>> Hannes >>>> >>>> What do you mean? Normally there are "finished" scripts installed, which wait >>>> for the root device to appear. So the loop continues until the fcoe device >>>> appears. >>>> >>> Not in my case. >>> Which module should install them? >>> >>> Cheers, >>> >>> Hannes >> >> 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 ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <53720BCF.5080806-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <53720BCF.5080806-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-05-13 14:21 ` Hannes Reinecke [not found] ` <53722A84.7080205-l3A5Bk7waGM@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Hannes Reinecke @ 2014-05-13 14:21 UTC (permalink / raw) To: Harald Hoyer; +Cc: initramfs 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: >>> On 13.05.2014 12:30, Hannes Reinecke wrote: >>>> On 05/13/2014 12:22 PM, Harald Hoyer wrote: >>>>> On 13.05.2014 11:55, Hannes Reinecke wrote: >>>> [ .. ] >>>>>> >>>>>> Ah. So fcoe never worked? >>>>>> (As it doesn't supply an 'finished' script) >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Hannes >>>>> >>>>> What do you mean? Normally there are "finished" scripts installed, which wait >>>>> for the root device to appear. So the loop continues until the fcoe device >>>>> appears. >>>>> >>>> Not in my case. >>>> Which module should install them? >>>> >>>> Cheers, >>>> >>>> Hannes >>> >>> 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. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare-l3A5Bk7waGM@public.gmane.org +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) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <53722A84.7080205-l3A5Bk7waGM@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <53722A84.7080205-l3A5Bk7waGM@public.gmane.org> @ 2014-05-13 14:32 ` Harald Hoyer [not found] ` <53722CFC.6060500-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Harald Hoyer @ 2014-05-13 14:32 UTC (permalink / raw) To: Hannes Reinecke; +Cc: initramfs 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: >>>> On 13.05.2014 12:30, Hannes Reinecke wrote: >>>>> On 05/13/2014 12:22 PM, Harald Hoyer wrote: >>>>>> On 13.05.2014 11:55, Hannes Reinecke wrote: >>>>> [ .. ] >>>>>>> >>>>>>> Ah. So fcoe never worked? >>>>>>> (As it doesn't supply an 'finished' script) >>>>>>> >>>>>>> Cheers, >>>>>>> >>>>>>> Hannes >>>>>> >>>>>> What do you mean? Normally there are "finished" scripts installed, which >>>>>> wait >>>>>> for the root device to appear. So the loop continues until the fcoe device >>>>>> appears. >>>>>> >>>>> Not in my case. >>>>> Which module should install them? >>>>> >>>>> Cheers, >>>>> >>>>> Hannes >>>> >>>> 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. > > Cheers, > > Hannes Does it have the executable bits set? ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <53722CFC.6060500-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <53722CFC.6060500-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-05-20 8:46 ` Hannes Reinecke [not found] ` <537B1677.9050402-l3A5Bk7waGM@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Hannes Reinecke @ 2014-05-20 8:46 UTC (permalink / raw) To: Harald Hoyer; +Cc: initramfs 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-l3A5Bk7waGM@public.gmane.org +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) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <537B1677.9050402-l3A5Bk7waGM@public.gmane.org>]
* Re: check_finished() syntax weirdness [not found] ` <537B1677.9050402-l3A5Bk7waGM@public.gmane.org> @ 2014-05-20 9:18 ` Hannes Reinecke 0 siblings, 0 replies; 12+ messages in thread From: Hannes Reinecke @ 2014-05-20 9:18 UTC (permalink / raw) To: Harald Hoyer; +Cc: initramfs On 05/20/2014 10:46 AM, Hannes Reinecke wrote: > 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. > Which is actually wrong. However, the _real_ issue is even more stupid. At one point systemd switched over to /usr/lib instead of /lib, and all scripts got moved to the new location. Well, nearly all: diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh index e14ce39..4516b9a 100755 --- a/modules.d/98systemd/module-setup.sh +++ b/modules.d/98systemd/module-setup.sh @@ -192,7 +192,7 @@ install() { inst_script "$moddir/dracut-mount.sh" /bin/dracut-mount inst_script "$moddir/dracut-pre-pivot.sh" /bin/dracut-pre-pivot - inst_script "$moddir/rootfs-generator.sh" /lib/systemd/system-generators/dracut-rootfs-generator + inst_script "$moddir/rootfs-generator.sh" $systemdutildir/system-generators/dracut-rootfs-generator inst_binary true ln_r $(type -P true) "/usr/bin/loginctl" and surprisingly the system boots. I'll be sending a proper patch. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare-l3A5Bk7waGM@public.gmane.org +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) ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-05-20 9:18 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-13 9:44 check_finished() syntax weirdness Hannes Reinecke
[not found] ` <5371E992.1080802-l3A5Bk7waGM@public.gmane.org>
2014-05-13 9:48 ` Harald Hoyer
[not found] ` <5371EA56.3000203-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-13 9:55 ` Hannes Reinecke
[not found] ` <5371EC2E.4020209-l3A5Bk7waGM@public.gmane.org>
2014-05-13 10:22 ` Harald Hoyer
[not found] ` <5371F250.9040708-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-13 10:30 ` Hannes Reinecke
[not found] ` <5371F448.5030208-l3A5Bk7waGM@public.gmane.org>
2014-05-13 10:39 ` Harald Hoyer
[not found] ` <5371F645.3080309-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-13 10:42 ` Hannes Reinecke
[not found] ` <5371F729.2000100-l3A5Bk7waGM@public.gmane.org>
2014-05-13 12:10 ` Harald Hoyer
[not found] ` <53720BCF.5080806-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-13 14:21 ` Hannes Reinecke
[not found] ` <53722A84.7080205-l3A5Bk7waGM@public.gmane.org>
2014-05-13 14:32 ` Harald Hoyer
[not found] ` <53722CFC.6060500-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-05-20 8:46 ` Hannes Reinecke
[not found] ` <537B1677.9050402-l3A5Bk7waGM@public.gmane.org>
2014-05-20 9:18 ` Hannes Reinecke
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.