Package: amd64-microcode
Version: 3.20251202.1
Severity: minor

A couple of hours ago, forky (testing) got initramfs-tools 0.151.
Its hard dependency changed from cpio to 3cpio|cpio.
This causes SOME freshly built systems to silently omit AMD microcode.

I think this ONLY affects people who do ALL of the following:

  * opt-out of Recommends;
  * opt-out of Priority: standard; and
  * opt-out of dracut.

Here is the actual warning message:

    # update-initramfs -u -k all
    update-initramfs: Generating /boot/initrd.img-7.0.4+deb14-cloud-amd64
    /usr/share/initramfs-tools/hooks/amd64_microcode: 102: cpio: not found
    /usr/share/initramfs-tools/hooks/amd64_microcode: 104: cpio: not found
    E: amd64-microcode: failed to create or prepend the early initramfs to the 
initramfs
    live-boot: core filesystems dm-verity devices utils udev blockdev dns.

This is the relevant code:

    
https://sources.debian.org/src/amd64-microcode/3.20251202.1/debian/initramfs.hook#L94-L110

Here are minimum recipes to reproduce the problem:

    $ mmdebstrap forky /dev/null http://localhost:3142/debian --quiet 
--dpkgopt=force-confold --essential-hook='mkdir -p $1/etc/default; echo 
AMD64UCODE_INITRAMFS=early >$1/etc/default/amd64-microcode' 
--include=linux-image-cloud-amd64,initramfs-tools,amd64-microcode 
--components=main,non-free-firmware --customize-hook='chroot $1 lsinitramfs 
/initrd.img | grep microcode; DPKG_ROOT=$1 dpkg-query --show 
initramfs-tools-core cpio 3cpio'

    kernel/x86/microcode
    kernel/x86/microcode/AuthenticAMD.bin               [expected, all is well]
    etc/modprobe.d/amd64-microcode-blacklist.conf

    3cpio       
    cpio        2.15+dfsg-2.1
    initramfs-tools-core        0.151

    $ mmdebstrap forky /dev/null http://localhost:3142/debian --quiet 
--dpkgopt=force-confold --essential-hook='mkdir -p $1/etc/default; echo 
AMD64UCODE_INITRAMFS=early >$1/etc/default/amd64-microcode' 
--include=linux-image-cloud-amd64,initramfs-tools,amd64-microcode 
--components=main,non-free-firmware --customize-hook='chroot $1 lsinitramfs 
/initrd.img | grep microcode; DPKG_ROOT=$1 dpkg-query --show 
initramfs-tools-core cpio 3cpio' --variant=apt

    etc/modprobe.d/amd64-microcode-blacklist.conf
    [unexpected, AuthenticAMD.bin is missing, no fatal error!]

    3cpio       0.14.0-1+b1
    cpio        
    initramfs-tools-core        0.151

Here is the same test using the default initrd (dracut), working with both 
3cpio and cpio.

    $ mmdebstrap forky /dev/null http://localhost:3142/debian --quiet 
--dpkgopt=force-confold --essential-hook='mkdir -p $1/etc/default; echo 
AMD64UCODE_INITRAMFS=early >$1/etc/default/amd64-microcode' 
--include=linux-image-cloud-amd64,amd64-microcode 
--components=main,non-free-firmware --customize-hook='chroot $1 lsinitrd | grep 
microcode; DPKG_ROOT=$1 dpkg-query --show dracut-core cpio 3cpio'
    drwxr-xr-x   2 root     root            0 May 13 04:07 kernel/x86/microcode
    -rw-r--r--   1 root     root       304866 May 13 04:07 
kernel/x86/microcode/AuthenticAMD.bin
    3cpio       
    cpio        2.15+dfsg-2.1
    dracut-core 110-12

    $ mmdebstrap forky /dev/null http://localhost:3142/debian --quiet 
--dpkgopt=force-confold --essential-hook='mkdir -p $1/etc/default; echo 
AMD64UCODE_INITRAMFS=early >$1/etc/default/amd64-microcode' 
--include=linux-image-cloud-amd64,amd64-microcode 
--components=main,non-free-firmware --customize-hook='chroot $1 lsinitrd | grep 
microcode; DPKG_ROOT=$1 dpkg-query --show dracut-core cpio 3cpio' --variant=apt
    drwxr-xr-x   2 root     root            0 May 13 04:09 kernel/x86/microcode
    -rw-r--r--   1 root     root       304866 May 13 04:09 
kernel/x86/microcode/AuthenticAMD.bin
    3cpio       0.14.0-1+b1
    cpio        
    dracut-core 110-12

I did not test tiny-initramfs.

Can amd64-microcode's debian/initramfs.hook use 3cpio if it is installed (and 
cpio is not)?

Can "E: amd64-microcode: failed" exit non-zero, so
the build clearly fails,
instead of appearing to work but lacking microcode patches?

I would provide a patch, but I'm not yet familiar with 3cpio myself.

Can 3cpio provide a cpio-is-3cpio compatibility deb, like gpg-from-sq?
Then packages like amd64-microcode would continue to Just Work as-is.


-- System Information:
Debian Release: 13.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
'proposed-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.85+deb13-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to