dracut icon indicating copy to clipboard operation
dracut copied to clipboard

dracut-initramfs-restore fails to find initrd

Open solbjorn opened this issue 3 years ago • 0 comments

Starting from commit https://github.com/dracutdevs/dracut/commit/3d8e1ad2ae1e34244ddf700beea6358c1452e05c, dracut stopped chrooting into initramfs on shutdown:

ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'
gzip: stdin: unexpected end of file

I do have /efi/loader/entries, but my kernels and initramfs are located directly in /boot, which is supposed to be supported by the script. I also have correct /lib/modules//initrd file. So the script doesn't even try to check if the path it suggests exists -- just picks one which "fits best" and doesn't try any other in case of failure.

Distribution used Arch Linux, dracut 056, systemd 251.2.

To Reproduce

  1. Create empty /efi/loader/entries when booting not from /efi (e.g. /boot).
  2. Shutdown / reboot / manually run dracut-initramfs-restore.

Expected behavior I expect dracut to successfully unpack initrd from either /boot or /lib/modules, I mean, in general to try different locations as environments can be very different.

Additional context Full log of manual run:

sudo bash -x dracut-initramfs-restore 
[sudo] hasło użytkownika xander:               
+ set -e
+ '[' -e /run/initramfs/bin/sh ']'
+ '[' -e /run/initramfs/.need_shutdown ']'
+ trap 'echo "Received SIGTERM signal, ignoring!" >&2' TERM
++ uname -r
+ KERNEL_VERSION=5.18.1-xanmod1-1-skylake
+ [[ -n '' ]]
+ dracutbasedir=/usr/lib/dracut
+ SKIP=/usr/lib/dracut/skipcpio
+ [[ -x /usr/lib/dracut/skipcpio ]]
+ [[ -d /efi/Default ]]
+ [[ -d /boot/Default ]]
+ [[ -d /boot/efi/Default ]]
+ [[ -f /etc/machine-id ]]
+ read -r MACHINE_ID
+ mount -o ro /boot
+ true
+ [[ -d /efi/loader/entries ]]
+ IMG=/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ cd /run/initramfs
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'
cpio: niespodziewany koniec archiwum
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ zcat
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'

gzip: stdin: unexpected end of file
cpio: niespodziewany koniec archiwum
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ bzcat
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'

bzcat: Compressed file ends unexpectedly;
	perhaps it is corrupted?  *Possible* reason follows.
bzcat: Inappropriate ioctl for device
	Input file = (stdin), output file = (stdout)

It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.

You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.

cpio: niespodziewany koniec archiwum
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ xzcat
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'
xzcat: (stdin): Nie rozpoznany format pliku
cpio: niespodziewany koniec archiwum
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ lz4 -d -c
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'
cpio: niespodziewany koniec archiwum
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ lzop -d -c
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'
dracut-initramfs-restore: linia 59: lzop: nie znaleziono polecenia
cpio: niespodziewany koniec archiwum
+ /usr/lib/dracut/skipcpio /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd
+ zstd -d -c
+ cpio -id --no-absolute-filenames --quiet
ERROR: src/skipcpio/skipcpio.c:91:main(): Cannot open file '/efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd'
zstd: /*stdin*\: unexpected end of file 
cpio: niespodziewany koniec archiwum
+ echo 'Unpacking of /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd to /run/initramfs failed'
Unpacking of /efi/6699e6fad149423fa9fe8ac1c19e1655/5.18.1-xanmod1-1-skylake/initrd to /run/initramfs failed
+ rm -f -- /run/initramfs/shutdown
+ exit 1

solbjorn avatar Jun 08 '22 19:06 solbjorn