Firmware symlinked to same file gets dereferenced causing initrd bloat
If a firmware blob appears in multiple instances and it's symlinked, the cpio archive dereferences the symlinks, causing space bloat.
First noticed as of kernel 6.8 when nouveau (part of features/kms under kernel/drivers/gpu) started referencing the following blob:
/lib/firmware/nvidia/*/gsp/gsp-535.113.01.bin
This is symlinked multiple times, yet each of the versions gets a redundant copy in the resulting cpio archive.
Possible solutions:
- Handling symlinks somehow
- Compressing entire cpio
- Splitting kms into gpu-specific drivers
This has been problematic on a few of my devices as i've been implicitly sizing my /boot to be 512M big, as it's usually more than enough, even for a few concurrent kernel versions installed and their initrds.