Avoid overlay files of libnss* ending up in initramfs
authorMichael Prokop <mika@grml.org>
Fri, 4 Dec 2020 11:50:02 +0000 (12:50 +0100)
committerMichael Prokop <mika@grml.org>
Fri, 4 Dec 2020 11:50:02 +0000 (12:50 +0100)
When the initramfs gets generated on a booted/running live system, then
we end up with unexpected files in the initramfs:

| root@grml ~ # lsinitramfs /boot/initrd.img-5.6.0-2-amd64 | grep squash
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs/lib
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_dns-2.30.so
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_dns.so.2
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_files-2.30.so
| usr/lib/live/mount/overlay/rw/var/tmp/mkinitramfs_pPceGY/usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_files.so.2
| usr/lib/live/mount/rootfs/grml64-full.squashfs
| usr/lib/live/mount/rootfs/grml64-full.squashfs/lib
| usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu
| usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_dns-2.30.so
| usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_dns.so.2
| usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_files-2.30.so
| usr/lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_files.so.2
| usr/lib/modules/5.6.0-2-amd64/kernel/fs/squashfs
| usr/lib/modules/5.6.0-2-amd64/kernel/fs/squashfs/squashfs.ko

This is caused by the find command, spotting files from
/lib/live/mount/rootfs/grml64-full.squashfs:

| root@grml ~ # find /lib /usr/lib -name 'libnss_dns.so.*' -o -name 'libnss_files.so.*'
| /lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_dns.so.2
| /lib/live/mount/rootfs/grml64-full.squashfs/lib/x86_64-linux-gnu/libnss_files.so.2
| /lib/x86_64-linux-gnu/libnss_dns.so.2
| /lib/x86_64-linux-gnu/libnss_files.so.2

Avoid this by filtering out files with `/lib/live`.

backend/initramfs-tools/live.hook

index 4039345..7a2bd13 100755 (executable)
@@ -246,7 +246,7 @@ fi
 # libnss_files.so.*:  /etc/hosts and /etc/passwd
 # libnss_compat.so.*: /etc/passwd
 
-for _SHLIB in $(find /lib /usr/lib -name 'libnss_dns.so.*' -o -name 'libnss_files.so.*')
+for _SHLIB in $(find /lib /usr/lib -name 'libnss_dns.so.*' -o -name 'libnss_files.so.*' | grep -v '/lib/live')
 do
        copy_exec "${_SHLIB}"
 done