I think I finally solved this. Basically not all files from /lib/firmware/ are copied to the initrd image, which means that there's some mechanism, which decides what to add (and I have no idea what that is). Looking for info, I came across some suggestions that only the drivers compiled as kernel modules are subjected to this behavior. So basically when you've built a driver into the kernel, you have to take care of everything manually. So in my case, I have every single module built into my kernel, so there's two ways to handle this. I can use the CONFIG_EXTRA_FIRMWARE_DIR= and CONFIG_EXTRA_FIRMWARE= kernel options, or I can add a hook to initramfs config (under /etc/initramfs-tools/hooks/), which would look like the one following:
============================================================ #!/bin/sh -e # Copy missing firmware files PREREQ="" prereqs () { echo "${PREREQ}"; } case "${1}" in prereqs) prereqs; exit 0 ;; esac ; . /usr/share/initramfs-tools/hook-functions echo -n "Copying missing firmware files... " [ ! -d "${DESTDIR}/lib/firmware/" ] && mkdir -p ${DESTDIR}/lib/firmware/ [ ! -d "${DESTDIR}/lib/firmware/brcm/" ] && mkdir -p ${DESTDIR}/lib/firmware/brcm/ cp /lib/firmware/iwlwifi-6000g2a-6.ucode ${DESTDIR}/lib/firmware/ cp /lib/firmware/brcm/BCM20702A1-0a5c-21e6.hcd ${DESTDIR}/lib/firmware/brcm/ echo "done." exit 0 ============================================================ And then the firmware files would finally get into the initrd image: # lsinitramfs /boot/initrd.img-5.5.8-amd64 | grep -i firm usr/lib/firmware usr/lib/firmware/brcm usr/lib/firmware/brcm/BCM20702A1-0a5c-21e6.hcd usr/lib/firmware/iwlwifi-6000g2a-6.ucode usr/lib/udev/rules.d/50-firmware.rules which I think solves the issue for good. :]
signature.asc
Description: OpenPGP digital signature