From dc86c12c452b26aeb0b032a75da4bfd97e171466 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 8 May 2019 07:12:06 +0200 Subject: [PATCH] dracut-install: Add support for compressed firmware files The upcoming kernel will have a support for loading compressed firmware files, and this patch corresponds to that kernel change. When a firmware file with the extra .xz extension is found, dracut copies to initrd as fallback. Since initrd itself is compressed, the file is uncompressed in initrd beforehand. --- dracut-init.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/dracut-init.sh b/dracut-init.sh index 50d23e2d1..1ebafff7b 100644 --- a/dracut-init.sh +++ b/dracut-init.sh @@ -917,8 +917,16 @@ install_kmod_with_fw() { for _fw in $(modinfo -k $kernel -F firmware $1 2>/dev/null); do _found='' for _fwdir in $fw_dir; do - [[ -d $_fwdir && -f $_fwdir/$_fw ]] || continue - inst_simple "$_fwdir/$_fw" "/lib/firmware/$_fw" + [[ -d $_fwdir ]] || continue + if [[ -f $_fwdir/$_fw ]]; then + inst_simple "$_fwdir/$_fw" "/lib/firmware/$_fw" + elif [[ -f $_fwdir/$_fw.xz ]]; then + inst_simple "$_fwdir/$_fw.xz" "/lib/firmware/$_fw.xz" + rm -f "${initdir}/lib/firmware/$_fw" + unxz -f "${initdir}/lib/firmware/$_fw.xz" + else + continue + fi _found=yes done if [[ $_found != yes ]]; then -- 2.47.3