mkinitrd unification across distributions
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare-l3A5Bk7waGM@public.gmane.org>
To: Harald Hoyer <harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: initramfs <initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: check_finished() syntax weirdness
Date: Tue, 20 May 2014 11:18:48 +0200	[thread overview]
Message-ID: <537B1DF8.9010207@suse.de> (raw)
In-Reply-To: <537B1677.9050402-l3A5Bk7waGM@public.gmane.org>

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)

      parent reply	other threads:[~2014-05-20  9:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=537B1DF8.9010207@suse.de \
    --to=hare-l3a5bk7wagm@public.gmane.org \
    --cc=harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox