Bug#1003194: Inconsistencies between "make bindeb-pkg" and official Debian kernels
Package: debian-kernel-handbook
Version: 1.0.19
Severity: normal
[Initially filed against debian-kernel-handbook because while the
problem is in src:linux, it's not strictly a problem with src:linux's
official binary packages.]
Debian Live images with custom kernels need some workarounds, because
"make bindeb-pkg" is inconsistent with official Debian kernels.
I would like to remove both the inconsistencies and my workarounds.
Attached are two scripts, one using stock kernel, one using custom
kernel built with "make bindeb-pkg" and then hosted on a PPA.
Removing either workaround breaks the "download" lines.
A few minor issues are annoying me:
1. /vmlinuz and /initrd.img are not created.
The problem appears to be inconsistency between these two scripts:
a. official images use this, which calls linux-update-symlinks (and Depends: linux-base)
https://sources.debian.org/src/linux/5.14.9-2%7Ebpo11+1/debian/templates/image.postinst.in/#L17
b. "make bindeb-pkg" use this, which does not
https://sources.debian.org/src/linux/5.14.9-2~bpo11+1/scripts/package/builddeb/#L186-L209
Is it reasonable to make builddeb call linux-update-symlinks and Depends: linux-base?
This seems reasonable to me.
2. /boot/initrd.img-<version> is not created.
I think this is because there is no Depends, so
(if everything happens in a single "apt install"),
/var/lib/dpkg/info/linux-image-X.postinst runs before
/etc/kernel/postinst.d/initramfs-tools exists.
This does not happen with stock kernels, which I think use this:
https://sources.debian.org/src/linux/5.14.9-2%7Ebpo11+1/debian/templates/control.image.in/#L3-L5
Is it reasonable to make builddeb add equivalent Depends/Recommends/Suggests?
It would need to NOT mention initrd when build with CONFIG_MODULES=n, but
builddeb already knows when this is the case.
If build with (for example) "make localyesconfig", then even if CONFIG_MODULES=y,
it should probably only Recommends or Suggests initramfs-tools (for amd64-microcode).
This gets a little messy!
3. I'd like a Provides or metapackage equivalent to "linux-image-generic", so
with a PPA, I can say --include=linux-image-inmate and have it always pick the latest available.
Currently with --include=linux-image-5.14.9inmate, I have to keep updating the --include line.
The "inmate" comes from CONFIG_LOCALVERSION=inmate, so
I guess builddeb would check if that was set, and if so, add
Provides: linux-image-${CONFIG_LOCALVERSION}
Is this reasonable?
I can't see any downside, and it sounds easy.
If I can get my head around builddeb, I'll try to submit a patch for this.
-- System Information:
Debian Release: 11.2
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'proposed-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 5.14.0-0.bpo.2-amd64 (SMP w/8 CPU threads)
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
#!/bin/bash
cmd=(
mmdebstrap
bullseye
live/filesystem.squashfs
--customize-hook='download /vmlinuz ./live/vmlinuz'
--customize-hook='download /initrd.img ./live/initrd.img'
--include=live-boot
--include=linux-image-generic
https://deb.debian.org/debian
)
mkdir live
"${cmd[@]}"
ls -hlR live
#!/bin/bash
cmd=(
mmdebstrap
bullseye
live/filesystem.squashfs
# Work around lack of linux-update-symlinks
--customize-hook='chroot $1 linux-update-symlinks install 5.14.9inmate /boot/vmlinuz-5.14.9inmate'
# Work around lack of Depends: initramfs-tools
--customize-hook='chroot $1 dpkg-reconfigure linux-image-5.14.9inmate'
--customize-hook='download /vmlinuz ./live/vmlinuz'
--customize-hook='download /initrd.img ./live/initrd.img'
--include=live-boot
--include=linux-image-5.14.9inmate
https://deb.debian.org/debian
'deb [signed-by=/home/twb/PrisonPC-archive-pubkey.asc] https://apt.cyber.com.au/PrisonPC bullseye kernel-demo'
)
mkdir live
"${cmd[@]}"
ls -hlR live
Reply to: