#982146 generating an initrd yields multiple "dracut-install: No SOURCE argument given" errors

Package:
dracut
Source:
dracut
Submitter:
Evgeni Golov
Date:
2022-05-24 19:51:24 UTC
Severity:
normal
Tags:
#982146#5
Date:
2021-02-06 20:24:44 UTC
From:
To:
Ohai,

when trying to build an initrd, I get the following output:

root@nana:~# dracut -q /tmp/sdfsdf 5.10.0-2-amd64
dracut-install: No SOURCE argument given
Usage: dracut-install -D DESTROOTDIR [-r SYSROOTDIR] [OPTION]... -a SOURCE...
or: dracut-install -D DESTROOTDIR [-r SYSROOTDIR] [OPTION]... SOURCE DEST
or: dracut-install -D DESTROOTDIR [-r SYSROOTDIR] [OPTION]... -m KERNELMODULE [KERNELMODULE …]

Install SOURCE (from rootfs or SYSROOTDIR) to DEST in DESTROOTDIR with all needed dependencies.

  KERNELMODULE can have the format:
     <absolute path> with a leading /
     =<kernel subdir>[/<kernel subdir>…] like '=drivers/hid'
     <module name>

  -D --destrootdir  Install all files to DESTROOTDIR as the root
  -r --sysrootdir   Install all files from SYSROOTDIR
  -a --all          Install all SOURCE arguments to DESTROOTDIR
  -o --optional     If SOURCE does not exist, do not fail
  -d --dir          SOURCE is a directory
  -l --ldd          Also install shebang executables and libraries
  -L --logdir <DIR> Log files, which were installed from the host to <DIR>
  -R --resolvelazy  Only install shebang executables and libraries
                     for all SOURCE files
  -H --hostonly     Mark all SOURCE files as hostonly

  -f --fips         Also install all '.SOURCE.hmac' files

#982146#10
Date:
2021-02-06 20:33:00 UTC
From:
To:
useful information…

This happens after the following line:
dracut: *** Including module: drm ***

So I guess it's the drm module, but I don't know why.

I do have "hostonly=yes" in /etc/dracut.conf.d/10-debian.conf, which
seems to be relevant for the module?

#982146#15
Date:
2021-02-12 21:40:06 UTC
From:
To:
I cannot confirm this problem.
It works without problems on a bullseye VM.

Maybe you can strace the dracut call and see which parameters are
given to the dracut-install call.

#982146#20
Date:
2021-02-13 20:22:58 UTC
From:
To:
Hey Thomas,

The install call that fails is:
/usr/lib/dracut/dracut-install -D /var/tmp/dracut.OUZAAd/initramfs --kerneldir /lib/modules/5.10.0-2-amd64/ -m --silent -s 'drm_crtc_init|drm_dev_register|drm_encoder_init' -S iw_handler_get_spy

Looking at the lines before that, it seems it looks at
/sys/bus/platform/devices/dock.0/modalias, but that file is empty, so I
guess that's why it's not passing a source to d-install?

The other failures happen after looking at
/sys/bus/platform/devices/dock.1/modalias and
/sys/bus/platform/devices/dock.2/modalias, which are also both empty.

Looking at the code in /usr/lib/dracut/modules.d/50drm/module-setup.sh:

    # if the hardware is present, include module even if it is not currently loaded,
    # as we could e.g. be in the installer; nokmsboot boot parameter will disable
    # loading of the driver if needed
    if [[ $hostonly ]]; then
        for i in /sys/bus/{pci/devices,platform/devices,virtio/devices,soc/devices/soc?}/*/modalias; do
            [[ -e $i ]] || continue
            if hostonly="" dracut_instmods --silent -s "drm_crtc_init|drm_dev_register|drm_encoder_init" -S "iw_handler_get_spy" $(<"$i"); then
                if strstr "$(modinfo -F filename $(<"$i") 2>/dev/null)" radeon.ko; then
                    hostonly='' instmods amdkfd
                fi
            fi
        done
    else
        dracut_instmods -o -s "drm_crtc_init|drm_dev_register|drm_encoder_init" "=drivers/gpu/drm" "=drivers/staging"
    fi

I have `hostonly` set, and it passes $(<"$i") to dracut_instmods, which is empty in
the dock.X case.

FWIW, the hardware is a Thinkpad X201s, which has a dock port, but is
not docked right now.

HTH
Evgeni

#982146#25
Date:
2021-02-13 20:50:09 UTC
From:
To:
#982146#34
Date:
2022-05-24 19:38:30 UTC
From:
To:
Package: dracut
Version: 056-3

This is fixed in the new version.