Package: initramfs-tools Version: 0.125 Severity: important Tags: patch With these package versions:
linux-image-4.9.0-rc8-amd64-unsigned 4.9~rc8-1~exp1 firmware-misc-nonfree 20161130-1 plymouth 0.9.2-3+b1 and plymouth enabled, my initramfs fails to rebuild with exit status 1 from the plymouth hook. Editing the plymouth hook to "set -x" reveals that two nvidia-related graphics drivers (gm206 and gm200) both want to include /lib/firmware/nvidia/gm200/gr/gpcss_bl.bin in the initramfs. The first one copies successfully, but for the second, copy_file() returns 1, causing unsuccessful exit from the manual_add_modules() function. I attach a possible patch. -- Package-specific info: -- initramfs sizes -rw-r--r-- 1 root root 27M Nov 25 22:54 /boot/initrd.img-3.16.0-4-amd64 -rw------- 1 root root 13M Jan 20 2016 /boot/initrd.img-4.3.0-1-amd64.dracut -rw------- 1 root root 32M Jan 20 2016 /boot/initrd.img-4.3.0-1-amd64.dracut.full -rw-r--r-- 1 root root 30M Jan 20 2016 /boot/initrd.img-4.3.0-1-amd64.i-t -rw-r--r-- 1 root root 33M Nov 25 22:53 /boot/initrd.img-4.7.0-1-amd64 -rw-r--r-- 1 root root 33M Dec 2 16:03 /boot/initrd.img-4.8.0-2-amd64 -rw-r--r-- 1 root root 34M Dec 7 10:53 /boot/initrd.img-4.9.0-rc8-amd64 -- /proc/cmdline BOOT_IMAGE=/vmlinuz-4.9.0-rc8-amd64 root=/dev/mapper/perpetual_ssd-root ro rootflags=subvol=@ apparmor=1 security=apparmor net.ifnames=1 quiet splash -- resume RESUME=/dev/mapper/perpetual_ssd-swap -- /proc/filesystems btrfs fuseblk ext3 ext2 ext4 vfat -- lsmod Module Size Used by cpuid 16384 0 rfcomm 77824 2 xt_CHECKSUM 16384 1 tun 28672 1 ctr 16384 6 ccm 20480 3 nf_conntrack_netbios_ns 16384 2 nf_conntrack_broadcast 16384 1 nf_conntrack_netbios_ns xt_CT 16384 2 ipt_MASQUERADE 16384 4 nf_nat_masquerade_ipv4 16384 1 ipt_MASQUERADE xt_tcpudp 16384 59 ip6t_rpfilter 16384 1 ip6t_REJECT 16384 2 nf_reject_ipv6 16384 1 ip6t_REJECT ipt_REJECT 16384 4 nf_reject_ipv4 16384 1 ipt_REJECT xt_conntrack 16384 60 ip_set 45056 0 nfnetlink 16384 1 ip_set ebtable_broute 16384 1 bridge 135168 1 ebtable_broute stp 16384 1 bridge llc 16384 2 bridge,stp ebtable_nat 16384 1 ip6table_mangle 16384 1 ip6table_security 16384 1 ip6table_raw 16384 1 ip6table_nat 16384 1 nf_conntrack_ipv6 20480 32 nf_defrag_ipv6 36864 1 nf_conntrack_ipv6 nf_nat_ipv6 16384 1 ip6table_nat iptable_mangle 16384 1 iptable_security 16384 1 iptable_raw 16384 1 iptable_nat 16384 1 nf_conntrack_ipv4 16384 32 nf_defrag_ipv4 16384 1 nf_conntrack_ipv4 nf_nat_ipv4 16384 1 iptable_nat nf_nat 28672 3 nf_nat_ipv6,nf_nat_masquerade_ipv4,nf_nat_ipv4 nf_conntrack 114688 10 nf_conntrack_ipv6,nf_conntrack_ipv4,nf_conntrack_broadcast,nf_conntrack_netbios_ns,xt_CT,nf_nat_ipv6,nf_nat_masquerade_ipv4,xt_conntrack,nf_nat_ipv4,nf_nat ebtable_filter 16384 1 ebtables 36864 3 ebtable_filter,ebtable_nat,ebtable_broute ip6table_filter 16384 1 ip6_tables 28672 5 ip6table_mangle,ip6table_filter,ip6table_security,ip6table_raw,ip6table_nat iptable_filter 16384 1 cpufreq_userspace 16384 0 cpufreq_powersave 16384 0 cpufreq_conservative 16384 0 bnep 20480 2 binfmt_misc 20480 1 nls_ascii 16384 1 nls_cp437 20480 1 vfat 20480 1 fat 69632 1 vfat ext4 581632 2 jbd2 106496 1 ext4 fscrypto 28672 1 ext4 ecb 16384 0 mbcache 16384 3 ext4 iTCO_wdt 16384 0 iTCO_vendor_support 16384 1 iTCO_wdt intel_rapl 20480 0 x86_pkg_temp_thermal 16384 0 intel_powerclamp 16384 0 coretemp 16384 0 arc4 16384 2 efi_pstore 16384 0 kvm_intel 192512 0 iwldvm 139264 0 kvm 589824 1 kvm_intel irqbypass 16384 1 kvm joydev 20480 0 mac80211 667648 1 iwldvm pcspkr 16384 0 serio_raw 16384 0 i2c_i801 24576 0 i2c_smbus 16384 1 i2c_i801 efivars 20480 1 efi_pstore sg 32768 0 snd_hda_codec_hdmi 45056 1 iwlwifi 147456 1 iwldvm lpc_ich 24576 0 snd_hda_codec_conexant 24576 1 mfd_core 16384 1 lpc_ich btusb 45056 0 btrtl 16384 1 btusb btbcm 16384 1 btusb btintel 16384 1 btusb snd_hda_codec_generic 69632 1 snd_hda_codec_conexant bluetooth 552960 31 btrtl,btintel,bnep,btbcm,rfcomm,btusb cfg80211 589824 3 iwlwifi,mac80211,iwldvm crc16 16384 2 bluetooth,ext4 snd_hda_intel 36864 9 snd_hda_codec 135168 4 snd_hda_intel,snd_hda_codec_conexant,snd_hda_codec_hdmi,snd_hda_codec_generic snd_hda_core 81920 5 snd_hda_intel,snd_hda_codec_conexant,snd_hda_codec,snd_hda_codec_hdmi,snd_hda_codec_generic shpchp 36864 0 snd_hwdep 16384 1 snd_hda_codec snd_pcm 110592 4 snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hda_codec_hdmi snd_timer 32768 1 snd_pcm mei_me 36864 0 mei 102400 1 mei_me thinkpad_acpi 86016 1 nvram 16384 1 thinkpad_acpi snd 86016 27 snd_hda_intel,snd_hwdep,snd_hda_codec_conexant,snd_hda_codec,snd_timer,thinkpad_acpi,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_pcm soundcore 16384 1 snd rfkill 24576 8 bluetooth,thinkpad_acpi,cfg80211 battery 16384 0 ac 16384 0 evdev 24576 19 tpm_tis 16384 0 tpm_tis_core 20480 1 tpm_tis cuse 16384 3 fuse 98304 6 cuse tpm_rng 16384 0 tpm 45056 3 tpm_tis,tpm_rng,tpm_tis_core rng_core 16384 2 tpm_rng loop 28672 0 parport_pc 28672 0 ppdev 20480 0 lp 20480 0 parport 49152 3 lp,parport_pc,ppdev efivarfs 16384 1 ip_tables 24576 5 iptable_mangle,iptable_filter,iptable_raw,iptable_nat,iptable_security x_tables 36864 19 ipt_REJECT,iptable_mangle,ip_tables,ip6t_rpfilter,ebtables,iptable_filter,xt_tcpudp,iptable_raw,ipt_MASQUERADE,ip6t_REJECT,iptable_security,ip6table_mangle,xt_CHECKSUM,ip6table_filter,ip6table_security,xt_CT,ip6table_raw,xt_conntrack,ip6_tables autofs4 40960 2 btrfs 1060864 1 algif_skcipher 20480 0 af_alg 16384 1 algif_skcipher dm_crypt 24576 1 dm_mod 118784 14 dm_crypt raid10 49152 0 raid456 106496 0 async_raid6_recov 20480 1 raid456 async_memcpy 16384 2 raid456,async_raid6_recov async_pq 16384 2 raid456,async_raid6_recov async_xor 16384 3 async_pq,raid456,async_raid6_recov async_tx 16384 5 async_xor,async_pq,raid456,async_memcpy,async_raid6_recov xor 24576 2 async_xor,btrfs raid6_pq 110592 4 async_pq,btrfs,raid456,async_raid6_recov libcrc32c 16384 1 raid456 crc32c_generic 16384 0 raid1 36864 0 raid0 20480 0 multipath 16384 0 linear 16384 0 md_mod 131072 6 raid1,raid10,multipath,linear,raid0,raid456 sd_mod 45056 4 crct10dif_pclmul 16384 0 crc32_pclmul 16384 0 crc32c_intel 24576 6 ghash_clmulni_intel 16384 0 aesni_intel 167936 9 aes_x86_64 20480 1 aesni_intel lrw 16384 1 aesni_intel gf128mul 16384 1 lrw glue_helper 16384 1 aesni_intel ablk_helper 16384 1 aesni_intel cryptd 24576 4 ablk_helper,ghash_clmulni_intel,aesni_intel psmouse 135168 0 i915 1232896 21 ahci 36864 3 libahci 32768 1 ahci libata 249856 2 ahci,libahci scsi_mod 225280 3 sd_mod,libata,sg xhci_pci 16384 0 ehci_pci 16384 0 xhci_hcd 188416 1 xhci_pci ehci_hcd 81920 1 ehci_pci usbcore 249856 5 ehci_hcd,xhci_pci,btusb,xhci_hcd,ehci_pci i2c_algo_bit 16384 1 i915 sdhci_pci 28672 0 sdhci 40960 1 sdhci_pci drm_kms_helper 155648 1 i915 e1000e 245760 0 mmc_core 147456 2 sdhci,sdhci_pci ptp 20480 1 e1000e drm 360448 11 i915,drm_kms_helper pps_core 16384 1 ptp thermal 20480 0 wmi 16384 0 fjes 28672 0 video 40960 2 thinkpad_acpi,i915 button 16384 1 i915 -- /etc/initramfs-tools/modules sd_mod -- /etc/kernel-img.conf # Kernel image management overrides # See kernel-img.conf(5) for details do_symlinks = yes do_bootloader = no do_initrd = yes link_in_boot = no -- /etc/initramfs-tools/initramfs.conf MODULES=most BUSYBOX=auto KEYMAP=n COMPRESS=gzip DEVICE= NFSROOT=auto -- /etc/initramfs-tools/update-initramfs.conf update_initramfs=yes backup_initramfs=no -- /etc/crypttab # <target name> <source device> <key file> <options> perpetual_msata UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none luks,discard,noauto perpetual_ssd UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none luks,discard -- /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] unused devices: <none> -- mkinitramfs hooks /etc/initramfs-tools/hooks/: reiserfsprogs /usr/share/initramfs-tools/hooks: btrfs cryptgnupg cryptkeyctl cryptopenct cryptopensc cryptpassdev cryptroot cryptroot-unlock dmsetup fsck fuse intel_microcode keymap klibc-utils kmod lvm2 mdadm ntfs_3g plymouth resume thermal udev zz-busybox -- System Information: Debian Release: stretch/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental-debug'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.9.0-rc8-amd64 (SMP w/4 CPU cores) Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages initramfs-tools depends on: ii initramfs-tools-core 0.125 ii linux-base 4.5 initramfs-tools recommends no packages. Versions of packages initramfs-tools suggests: ii bash-completion 1:2.1-4.3 -- no debconf information
>From b16674a06d27c1a8109424a0262c32320b7ab5c5 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Wed, 7 Dec 2016 11:11:33 +0000 Subject: [PATCH] hook-functions: Ignore attempts to install the same firmware twice The plymouth hook copies graphics drivers into the initramfs if enabled. With recent linux and firmware-misc-nonfree, nouveau.ko expresses dependencies on gm206/gr/gpccs_bl.bin and gm200/gr/gpcss_bl.bin, which are symlinked together. initramfs-tools successfully copies the first, but when it is time to copy the second, copy_file() returns 1 for "already present". To avoid the whole hook failing, treat copy_file() returning 1 as success. Signed-off-by: Simon McVittie <s...@debian.org> --- hook-functions | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hook-functions b/hook-functions index 9ef9c31..d71a276 100644 --- a/hook-functions +++ b/hook-functions @@ -98,11 +98,17 @@ manual_add_modules() continue fi + local e=0 + # Ignore exit status 1 from copy_file, which means + # "already present" if [ -e "/lib/firmware/${version}/${firmware}" ]; then copy_file firmware \ - "/lib/firmware/${version}/${firmware}" + "/lib/firmware/${version}/${firmware}" || e="$?" else - copy_file firmware "/lib/firmware/${firmware}" + copy_file firmware "/lib/firmware/${firmware}" || e="$?" + fi + if [ $e -gt 1 ]; then + return $e fi done done -- 2.11.0