FS#53364 - mkinitcpio 23: trying to boot to btrfs root without udev hook results in error device not found

Attached to Project: Arch Linux
Opened by Ceriel Jacobs (cj1) - Sunday, 19 March 2017, 00:34 GMT
Last edited by Dave Reisner (falconindy) - Sunday, 19 March 2017, 14:11 GMT
Task Type Support Request
Category Packages: Extra
Status Closed
Assigned To No-one
Architecture x86_64
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:
Mkinitcpio hooks documentation lists for btrfs hook:
"This hook is not required for using Btrfs on a single device."
and:
"Runs btrfs device scan to assemble a multi-device Btrfs root file system when udev hook or systemd hook is not present."

This made me think that for a btrfs root device, I can remove udev hook and still be able boot into a btrfs root partition.

The result for a single-disk (non RAID) btrfs FS without sub-volumes is (with and without the btrfs hook and always without udev):

ERROR: device 'PARTUUID=c2...c13' not found. Skipping fsck.
:: mounting 'PARTUUID=c2...c13' on real root
mount: can't find 'PARTUUID=c2...c13'
You are now being dropped into an emergency shell.


Have I misunderstood the documentation that it would be possible to boot into btrfs without udev?
Or is booting using the btrfs hook only possible for a multi-disk btrfs file system?



Additional info:
# lsinitcpio -a /boot/initramfs-linux-tiny.img
==> Image: /boot/initramfs-linux-tiny.img
==> Created with mkinitcpio 23
==> Kernel: 4.10.3-1-ARCH
==> Size: 3.53 MiB
==> Compressed with: lz4 -l
-> Uncompressed size: 8.32 MiB (.424 ratio)
-> Estimated extraction time: 0.028s

==> Included modules:
ahci [explicit] hid-generic [explicit] raid6_pq usbcore
atkbd [explicit] i8042 [explicit] scsi_mod usbhid [explicit]
btrfs [explicit] libahci sd_mod [explicit] xhci-hcd
crc32c-intel [explicit] libata serio xhci-pci [explicit]
crc32c_generic libcrc32c serio_raw [explicit] xor
ehci-hcd libps2 uas [explicit]
ehci-pci [explicit] ohci-hcd usb-common
hid ohci-pci [explicit] usb-storage

==> Included binaries:
blkid busybox dosfsck fsck fsck.vfat kmod mount switch_root

# lsinitcpio /boot/initramfs-linux-tiny.img
buildconfig
config
init
init_functions
VERSION
lib64
sbin
bin
lib
usr
usr/lib64
usr/sbin
usr/bin
usr/bin/dosfsck
usr/bin/fsck.vfat
usr/bin/fsck
usr/bin/switch_root
usr/bin/mount
usr/bin/blkid
usr/bin/modinfo
usr/bin/modprobe
usr/bin/lsmod
usr/bin/rmmod
usr/bin/insmod
usr/bin/depmod
usr/bin/kmod
usr/bin/yes
usr/bin/wget
usr/bin/wc
usr/bin/vi
usr/bin/uptime
usr/bin/unshare
usr/bin/unlink
usr/bin/uniq
usr/bin/uname
usr/bin/umount
usr/bin/truncate
usr/bin/true
usr/bin/touch
usr/bin/tftp
usr/bin/test
usr/bin/telnet
usr/bin/tail
usr/bin/tac
usr/bin/sync
usr/bin/strings
usr/bin/stat
usr/bin/sort
usr/bin/sleep
usr/bin/shuf
usr/bin/sha512sum
usr/bin/sha256sum
usr/bin/sha1sum
usr/bin/sh
usr/bin/setfont
usr/bin/seq
usr/bin/sed
usr/bin/route
usr/bin/rmdir
usr/bin/rm
usr/bin/reboot
usr/bin/readlink
usr/bin/pwd
usr/bin/ps
usr/bin/printf
usr/bin/poweroff
usr/bin/ping6
usr/bin/ping
usr/bin/pidof
usr/bin/pgrep
usr/bin/openvt
usr/bin/nslookup
usr/bin/nsenter
usr/bin/netstat
usr/bin/nc
usr/bin/mv
usr/bin/mountpoint
usr/bin/mktemp
usr/bin/mkpasswd
usr/bin/mknod
usr/bin/mkfifo
usr/bin/mkdir
usr/bin/md5sum
usr/bin/ls
usr/bin/losetup
usr/bin/loadkmap
usr/bin/loadfont
usr/bin/ln
usr/bin/less
usr/bin/killall
usr/bin/kill
usr/bin/kbd_mode
usr/bin/iptunnel
usr/bin/iprule
usr/bin/iproute
usr/bin/iplink
usr/bin/ipaddr
usr/bin/ip
usr/bin/install
usr/bin/init
usr/bin/ifconfig
usr/bin/hexdump
usr/bin/head
usr/bin/halt
usr/bin/grep
usr/bin/getopt
usr/bin/fstrim
usr/bin/free
usr/bin/fatattr
usr/bin/false
usr/bin/expr
usr/bin/env
usr/bin/egrep
usr/bin/echo
usr/bin/du
usr/bin/dmesg
usr/bin/dirname
usr/bin/df
usr/bin/dd
usr/bin/cut
usr/bin/cttyhack
usr/bin/cp
usr/bin/clear
usr/bin/chroot
usr/bin/chown
usr/bin/chmod
usr/bin/chgrp
usr/bin/cat
usr/bin/blkdiscard
usr/bin/basename
usr/bin/awk
usr/bin/ash
usr/bin/[[
usr/bin/[
usr/bin/busybox
usr/lib
usr/lib/modprobe.d
usr/lib/librt.so.1
usr/lib/libmount.so.1
usr/lib/libuuid.so.1
usr/lib/libblkid.so.1
usr/lib/libpthread.so.0
usr/lib/libz.so.1
usr/lib/liblzma.so.5
usr/lib/ld-linux-x86-64.so.2
usr/lib/libc.so.6
usr/lib/libcrypt.so.1
usr/lib/modules
usr/lib/modules/4.10.3-1-ARCH
usr/lib/modules/4.10.3-1-ARCH/modules.devname
usr/lib/modules/4.10.3-1-ARCH/modules.builtin.bin
usr/lib/modules/4.10.3-1-ARCH/modules.symbols.bin
usr/lib/modules/4.10.3-1-ARCH/modules.softdep
usr/lib/modules/4.10.3-1-ARCH/modules.alias.bin
usr/lib/modules/4.10.3-1-ARCH/modules.dep.bin
usr/lib/modules/4.10.3-1-ARCH/kernel
usr/lib/modules/4.10.3-1-ARCH/kernel/raid6_pq.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/hid.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/ohci-hcd.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/xhci-hcd.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/crc32c_generic.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/xor.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/atkbd.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/scsi_mod.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/serio_raw.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/ehci-hcd.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/uas.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/usbcore.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/libcrc32c.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/serio.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/ohci-pci.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/ahci.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/hid-generic.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/libps2.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/i8042.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/libahci.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/usb-common.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/xhci-pci.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/libata.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/sd_mod.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/btrfs.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/usb-storage.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/usbhid.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/ehci-pci.ko
usr/lib/modules/4.10.3-1-ARCH/kernel/crc32c-intel.ko
usr/local
usr/local/sbin
usr/local/bin
usr/local/lib
etc
etc/ld.so.cache
etc/modprobe.d
etc/modprobe.d/modprobe.conf
etc/ld.so.conf
etc/initrd-release
etc/fstab
etc/mtab
tmp
run
dev
sys
proc
new_root
This task depends upon

Closed by  Dave Reisner (falconindy)
Sunday, 19 March 2017, 14:11 GMT
Reason for closing:  Won't fix
Additional comments about closing:  https://git.archlinux.org/svntogit/packa ges.git/commit/trunk?h=packages/systemd& amp;id=c3e01781e6bac9e46a498a9910f690a0d 0ce52d0
Comment by Dave Reisner (falconindy) - Sunday, 19 March 2017, 11:47 GMT
Without udev, labels such as PARTUUID cannot be reliably resolved.
Comment by Ceriel Jacobs (cj1) - Sunday, 19 March 2017, 14:02 GMT
Does this mean that without udev labels such as PARTLABEL, UUID and LABEL cannot be resolved (reliably) too?

Leaving with only device paths left, like /dev/sda2?
(Or custom bash scripting solution to extract the device path from blkid output?)
Comment by Dave Reisner (falconindy) - Sunday, 19 March 2017, 14:11 GMT
Yes, those labels are handled in the same way as PARTUUID. If you do not use udev, you have little choice but to identify your root device by explicit path in /dev, which is equally unreliable.

In general, I don't really want to support images without udev.

Loading...