Ubuntu Version: 26.04
Problem Description:
(concise reproduction steps are below the long-winded explanation)
The iwlwifi driver on my Arrow Lake laptop won’t work properly without the right firmware, but the correct firmware isn’t included in the pc-kernel snap. The firmware is included in the package linux-firmware-intel-wireless which is available from apt; this is also true of other Intel firmware, as well as other firmware from multiple other vendors.
The wireless package includes tons of files, including files like /usr/lib/firmware/intel/ibt-0040-1020.ddc.zst
Unfortunately, /usr/lib/firmware is full of symlinks to /snap/pc-kernel/3402/firmware, and, even more unfortunately, the process of doing so appears to link each thing in /snap/pc-kernel/3402/firmware to /usr/lib/firmware - which means that /usr/lib/firmware/intel is a symlink to /snap/pc-kernel/3402/firmware/intel, which is a read-only squashfs filesystem.
This means that when dpkg tries to unpack /usr/lib/firmware/intel/ibt-0040-1020.ddc.zst from the firmware archive it fails because it’s trying to write to a squashfs filesystem. It then becomes broken so badly that dpkg won’t even try to remove the file either; it says you have to finish installing it before it can be removed, which can’t be done.
In reality, you can delete /usr/lib/firmware/intel and replace it with a directory, and then dpkg is fine. Then you can symlink all of the firmware that’s supposed to be there back into there, and then it all gets deleted the next time you reboot and now your drivers don’t work anymore until you jump through these hoops again.
I suspect that whatever process is creating these symlinks could be updated to create directories and symlink into them rather than just blindly symlinking those directories, but this feels like the sort of thing that could bite a lot of people who use the pc-kernel snap (unwillingly) and need updated firmware.
Alternately, the pc-kernel snap could be updated to include the firmware that is already available in apt.
Concise reproduction steps:
- Install Ubuntu 26.04 using the
pc-kernelsnap sudo apt-get install linux-firmware-intel-wireless
Relevant System Information:
I doubt it’s relevant, but I’m running a Dell Pro Max 14 Professional with an Intel Arrow Lake CPU, the Ultra 7 265H. Presumably this issue should be reproducible everywhere.
Screenshots or Error Messages:
$ sudo apt install --reinstall linux-firmware-intel-wireless
Summary:
Upgrading: 0, Installing: 0, Reinstalling: 1, Removing: 0, Not Upgrading: 6
Download size: 0 B / 102 MB
Space needed: 0 B / 696 GB available
(Reading database… 230423 files and directories currently installed.)
Preparing to unpack …/linux-firmware-intel-wireless_20260319.git217ca6e4-0ubuntu2_all.deb…
Unpacking linux-firmware-intel-wireless (20260319.git217ca6e4-0ubuntu2) over (20260319.git217ca6e4-0ubuntu2)…
dpkg: error processing archive /var/cache/apt/archives/linux-firmware-intel-wireless_20260319.git217ca6e4-0ubuntu2_all.deb (--unpack):
unable to create '/usr/lib/firmware/intel/ibt-0040-0041.ddc.zst.dpkg-new' (while processing './usr/lib/firmware/intel/ibt-0040-0041.ddc.zst'): Read-only file system
dpkg: error while cleaning up:
unable to remove newly-extracted version of '/usr/lib/firmware/intel/ibt-0040-0041.ddc.zst': Read-only file system
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/linux-firmware-intel-wireless_20260319.git217ca6e4-0ubuntu2_all.deb
Error: Sub-process /usr/bin/dpkg returned an error code (1)
What I’ve Tried:
It works to, as I said, remove the intel symlink and replace it with a directory full of symlinks instead.
Before Posting:
Please check if similar issues have already been reported and resolved.
(I couldn’t find anyone talking about this)