Control: retitle -1 initrd-tools: Systems on btrfs root fail to boot due to missing module dependency Control: severity -1 critical Control: tags -1 patch Control: reassign -1 initramfs-tools 0.115
Dear kernel maintainers, I recently ran into this very issue on a head-less armel system, effectively making the system un-bootable. I had to attach a serial console to un-brick the box. Since Linux 3.14 (or 0b947aff1599afbbd2ec07ada87b05af0f94cf10, to be precise), the btrfs module no longer depends on libcrc32c, but only on crc32c. However, this is one of the "hidden" dependencies, so modules.dep doesn't list it. If mkinitramfs doesn't happen to include crc32c for some other reason, an initrd without that module is generated, even if btrfs needs it to boot. For me, this led to the same error upon boot, as others have posted, before: modprobe: can't load module btrfs (kernel/fs/btrfs/btrfs.ko): unknown symbol in module, or unknown parametr (Without any further hints in dmegs, BTW) The attached patch adds an entry to the list of hidden dependencies to /usr/share/initramfs-tools/hook-functions to fix this issue. This also renders the work-around proposed by Tristan unnecessary. Thanks to WorMzy Tykashi for the actual analysis of the issue [0]. Regards Markus Wanner [0]: Mail by WorMzy Tykashi on the linux-btrfs list: http://marc.info/?l=linux-btrfs&m=139370881713639&w=2
--- a/hook-functions 2014-07-14 14:27:43.324000000 +0200 +++ b/hook-functions 2014-07-14 14:28:19.960000000 +0200 @@ -512,7 +512,9 @@ hidden_dep_add_modules() { local modules= - for dep in "lib/libcrc32c crc32c" "fs/ubifs/ubifs deflate zlib lzo"; do + for dep in "lib/libcrc32c crc32c" \ + "fs/ubifs/ubifs deflate zlib lzo" \ + "fs/btrfs/btrfs crc32c"; do set -- $dep if [ -f "${DESTDIR}/lib/modules/${version}/kernel/$1.ko" ]; then shift
signature.asc
Description: OpenPGP digital signature