[pve-devel] [PATCH 2/2] integrate meta packages and change prefix

Fabian Grünbichler f.gruenbichler at proxmox.com
Tue Jul 18 11:11:01 CEST 2023

long overdue, and avoids the issue of the meta packages version going down
after being folded in from the pve-kernel-meta repository.

the ABI needs to be bumped for every published kernel package now that modules
are signed, else the booted kernel image containing the public part of the
ephemeral signing key, and the on-disk (potentially upgraded in-place) signed
module files can disagree, and module loading would fail.

not changed (yet): git repository name, pve-firmware

Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>

    we could also unify KREL and PKGREL now, since the two always need to be bumped together?
    not changed yet: git repo, pve-firmware package - those can be done as follow-ups though.
    we could possibly add a Breaks on all the outdated meta packages here, but I
    think just bumping coming from the other direction should be enough:
    proxmox-ve/proxmox-backup-meta/proxmox-mailgateway -> proxmox-kernel-6.2 -> updated proxmox-kernel-6.2.16-...
                                                       -> updated proxmox-kernel-helper
    pve-headers -> proxmox-kernel-6.2 -> updated proxmox-headers-6.2.16-..
    note that PMG calls the top-level headers meta package pve-headers as well, and
    PBS doesn't even have it in the first place. we could rename (and
    Breaks+Replaces+Provides) for PMG, and add it to PBS as well, if desired.
    changelog diff included because of the source package rename (easy to miss
    otherwise) - can of course be extended/.. if more changes are folded in before
    actually building and releasing!

 Makefile                                      | 28 +++++-----
 debian/changelog                              | 13 +++++
 debian/control.in                             | 52 ++++++++++++++-----
 ...ostinst.in => proxmox-headers.postinst.in} |  0
 debian/proxmox-kernel-meta.postinst.in        | 17 ++++++
 debian/proxmox-kernel-meta.postrm.in          | 19 +++++++
 ...postinst.in => proxmox-kernel.postinst.in} |  0
 ...nel.postrm.in => proxmox-kernel.postrm.in} |  0
 ...ernel.prerm.in => proxmox-kernel.prerm.in} |  0
 debian/rules                                  | 27 ++++++----
 debian/source/lintian-overrides               |  4 +-
 11 files changed, 121 insertions(+), 39 deletions(-)
 rename debian/{pve-headers.postinst.in => proxmox-headers.postinst.in} (100%)
 create mode 100755 debian/proxmox-kernel-meta.postinst.in
 create mode 100755 debian/proxmox-kernel-meta.postrm.in
 rename debian/{pve-kernel.postinst.in => proxmox-kernel.postinst.in} (100%)
 rename debian/{pve-kernel.postrm.in => proxmox-kernel.postrm.in} (100%)
 rename debian/{pve-kernel.prerm.in => proxmox-kernel.prerm.in} (100%)

diff --git a/Makefile b/Makefile
index b1ebe36..aba8c5c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,22 +1,22 @@
 include /usr/share/dpkg/pkg-info.mk
-# also bump pve-kernel-meta if either of MAJ.MIN, PATCHLEVEL or KREL change
+# also bump proxmox-ve and PBS/PMG meta packages if the default MAJ.MIN version changes!
-# increment KREL if the ABI changes (abicheck target in debian/rules)
+# increment KREL for every published package release!
 # rebuild packages with new KREL and run 'make abiupdate'
 ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
@@ -31,7 +31,7 @@ GITVERSION:=$(shell git rev-parse HEAD)
@@ -46,19 +46,21 @@ MODULE_DIRS=$(ZFSDIR)
 # exported to debian/rules via debian/rules.d/dirs.mk
 all: deb
 deb: $(DEBS)
 $(DST_DEB): $(BUILD_DIR).prepared
 	cd $(BUILD_DIR); dpkg-buildpackage --jobs=auto -b -uc -us
 	lintian $(DST_DEB)
@@ -161,5 +163,5 @@ abi-tmp-$(KVNAME):
 .PHONY: clean
-	rm -rf *~ pve-kernel-[0-9]*/ *.prepared $(KERNEL_CFG_ORG)
-	rm -f *.deb *.dsc *.changes *.buildinfo *.build pve-kernel*.tar.*
+	rm -rf *~ proxmox-kernel-[0-9]*/ *.prepared $(KERNEL_CFG_ORG)
+	rm -f *.deb *.dsc *.changes *.buildinfo *.build proxmox-kernel*.tar.*
diff --git a/debian/changelog b/debian/changelog
index 5046ab5..01f70c4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+proxmox-kernel-6.2 (6.2.16-6) bookworm; urgency=medium
+  * enable Secure Boot related KConfigs to allow manually signed booting
+  * merge proxmox-kernel-meta packaging into main kernel build, since every
+    package release entails an ABI bump now.
+  * bump ABI to 6.2.16-5
+  * change `pve-` prefix to `proxmox-`
+ -- Proxmox Support Team <support at proxmox.com>  Fri, 14 Jul 2023 19:53:39 +0200
 pve-kernel (6.2.16-5) bookworm; urgency=medium
   * kvm: xsave set: mask-out PKRU bit in xfeatures if vCPU has no support to
diff --git a/debian/control.in b/debian/control.in
index 2fbbf6b..6c10ddb 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -1,4 +1,4 @@
-Source: pve-kernel
+Source: proxmox-kernel- at KVMAJMIN@
 Section: devel
 Priority: optional
 Maintainer: Proxmox Support Team <support at proxmox.com>
@@ -31,7 +31,7 @@ Build-Depends: asciidoc-base,
-Build-Conflicts: pve-headers- at KVNAME@,
+Build-Conflicts: proxmox-headers- at KVNAME@,
 Standards-Version: 4.6.2
 Vcs-Git: git://git.proxmox.com/git/pve-kernel
 Vcs-Browser: https://git.proxmox.com/?p=pve-kernel.git
@@ -45,48 +45,74 @@ Description: Linux kernel version specific tools for version @KVMAJMIN@
  This package provides the architecture dependent parts for kernel
  version locked tools (such as perf and x86_energy_perf_policy)
-Package: pve-headers- at KVNAME@
+Package: proxmox-headers- at KVNAME@
 Section: devel
 Priority: optional
 Architecture: any
-Provides: linux-headers- at KVNAME@-amd64,
+Provides: linux-headers- at KVNAME@-amd64, pve-headers- at KVNAME@
 Depends: ${misc:Depends},
 Description: Proxmox Kernel Headers
  This package contains the linux kernel headers
-Package: pve-kernel- at KVNAME@
+Package: proxmox-kernel- at KVNAME@
 Section: admin
 Priority: optional
 Architecture: any
-Provides: linux-image- at KVNAME@-amd64,
+Provides: linux-image- at KVNAME@-amd64, pve-kernel- at KVNAME@
 Suggests: pve-firmware,
 Depends: busybox, initramfs-tools | linux-initramfs-tool, ${misc:Depends},
 Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub-efi-arm64,
 Description: Proxmox Kernel Image
  This package contains the linux kernel and initial ramdisk used for booting
-Package: pve-kernel- at KVNAME@-dbgsym
+Package: proxmox-kernel- at KVNAME@-dbgsym
 Architecture: any
-Provides: linux-debug,
+Provides: linux-debug, pve-kernel- at KVNAME@-dbgsym
 Section: devel
 Priority: optional
-Build-Profiles: <pkg.pve-kernel.debug>
+Build-Profiles: <pkg.proxmox-kernel.debug>
 Depends: ${misc:Depends},
 Description: Proxmox Kernel debug image
  This package provides the kernel debug image for version @KVNAME at . The debug
  kernel image contained in this package is NOT meant to boot from - it is
  uncompressed, and unstripped, and suitable for use with crash/kdump-tools/..
- to analyze kernel crashes. This package also contains the pve-kernel modules
+ to analyze kernel crashes. This package also contains the proxmox-kernel modules
  in their unstripped version.
-Package: pve-kernel-libc-dev
+Package: proxmox-kernel-libc-dev
 Section: devel
 Priority: optional
 Architecture: any
-Provides: linux-libc-dev (=${binary:Version}),
+Provides: linux-libc-dev (=${binary:Version}), pve-kernel-libc-dev
 Conflicts: linux-libc-dev,
-Replaces: linux-libc-dev,
+Replaces: linux-libc-dev, pve-kernel-libc-dev
+Breaks: pve-kernel-libc-dev
 Depends: ${misc:Depends},
 Description: Linux support headers for userspace development
  This package provides userspaces headers from the Linux kernel.  These headers
  are used by the installed headers for GNU libc and other system libraries.
+Package: proxmox-headers- at KVMAJMIN@
+Architecture: all
+Section: admin
+Provides: linux-headers-amd64, linux-headers-generic, pve-headers- at KVMAJMIN@
+Breaks: pve-headers- at KVMAJMIN@
+Replaces: pve-headers- at KVMAJMIN@
+Priority: optional
+Depends: proxmox-headers- at KVNAME@, ${misc:Depends},
+Description: Latest Proxmox Kernel Headers
+ This is a metapackage which will install the kernel headers
+ for the latest available proxmox kernel from the @KVMAJMIN@
+ series.
+Package: proxmox-kernel- at KVMAJMIN@
+Architecture: all
+Section: admin
+Provides: linux-image-amd64, linux-image-generic, wireguard-modules (=1.0.0), pve-kernel- at KVMAJMIN@
+Breaks: pve-kernel- at KVMAJMIN@
+Replaces: pve-kernel- at KVMAJMIN@
+Priority: optional
+Depends: pve-firmware, proxmox-kernel- at KVNAME@, ${misc:Depends},
+Description: Latest Proxmox Kernel Image
+ This is a metapackage which will install the latest available
+ proxmox kernel from the @KVMAJMIN@ series.
diff --git a/debian/pve-headers.postinst.in b/debian/proxmox-headers.postinst.in
similarity index 100%
rename from debian/pve-headers.postinst.in
rename to debian/proxmox-headers.postinst.in
diff --git a/debian/proxmox-kernel-meta.postinst.in b/debian/proxmox-kernel-meta.postinst.in
new file mode 100755
index 0000000..dd801d6
--- /dev/null
+++ b/debian/proxmox-kernel-meta.postinst.in
@@ -0,0 +1,17 @@
+#! /bin/sh
+# Abort if any command returns an error value 
+set -e
+case "$1" in
+  configure)
+    # setup kernel links for installation CD (rescue boot)
+    mkdir -p /boot/pve
+    ln -sf /boot/vmlinuz-@@KVNAME@@ /boot/pve/vmlinuz-@@KVMAJMIN@@
+    ln -sf /boot/initrd.img-@@KVNAME@@ /boot/pve/initrd.img-@@KVMAJMIN@@
+    ;;
+exit 0
diff --git a/debian/proxmox-kernel-meta.postrm.in b/debian/proxmox-kernel-meta.postrm.in
new file mode 100755
index 0000000..6935ad7
--- /dev/null
+++ b/debian/proxmox-kernel-meta.postrm.in
@@ -0,0 +1,19 @@
+#! /bin/sh
+# Abort if any command returns an error value
+set -e
+case "$1" in
+    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        # remove kernel symlinks
+        rm -f /boot/pve/vmlinuz-@@KVNAME@@
+        rm -f /boot/pve/initrd.img-@@KVNAME@@
+    ;;
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
diff --git a/debian/pve-kernel.postinst.in b/debian/proxmox-kernel.postinst.in
similarity index 100%
rename from debian/pve-kernel.postinst.in
rename to debian/proxmox-kernel.postinst.in
diff --git a/debian/pve-kernel.postrm.in b/debian/proxmox-kernel.postrm.in
similarity index 100%
rename from debian/pve-kernel.postrm.in
rename to debian/proxmox-kernel.postrm.in
diff --git a/debian/pve-kernel.prerm.in b/debian/proxmox-kernel.prerm.in
similarity index 100%
rename from debian/pve-kernel.prerm.in
rename to debian/proxmox-kernel.prerm.in
diff --git a/debian/rules b/debian/rules
index 123c870..1b7cc16 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,10 +16,11 @@ MAKEFLAGS += $(subst parallel=,-j,$(filter parallel=%,${DEB_BUILD_OPTIONS}))
 CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate)
 CHANGELOG_DATE_UTC_ISO := $(shell date -u -d '$(CHANGELOG_DATE)' +%Y-%m-%dT%H:%MZ)
@@ -98,13 +99,17 @@ PVE_CONFIG_OPTS= \
 debian/control: $(wildcard debian/*.in)
-	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-kernel.prerm.in > debian/$(PVE_KERNEL_PKG).prerm
-	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-kernel.postrm.in > debian/$(PVE_KERNEL_PKG).postrm
-	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-kernel.postinst.in > debian/$(PVE_KERNEL_PKG).postinst
-	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/pve-headers.postinst.in > debian/$(PVE_HEADER_PKG).postinst
+	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.prerm.in > debian/$(PVE_KERNEL_PKG).prerm
+	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.postrm.in > debian/$(PVE_KERNEL_PKG).postrm
+	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.postinst.in > debian/$(PVE_KERNEL_PKG).postinst
+	sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-headers.postinst.in > debian/$(PVE_HEADER_PKG).postinst
+	sed -e 's/@@KVMAJMIN@@/$(KERNEL_MAJMIN)/g' -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel-meta.postrm.in > debian/$(PVE_KERNEL_META_PKG).postrm
+	sed -e 's/@@KVMAJMIN@@/$(KERNEL_MAJMIN)/g' -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel-meta.postinst.in > debian/$(PVE_KERNEL_META_PKG).postinst
 	chmod +x debian/$(PVE_KERNEL_PKG).prerm
 	chmod +x debian/$(PVE_KERNEL_PKG).postrm
 	chmod +x debian/$(PVE_KERNEL_PKG).postinst
+	chmod +x debian/$(PVE_KERNEL_META_PKG).postrm
+	chmod +x debian/$(PVE_KERNEL_META_PKG).postinst
 	chmod +x debian/$(PVE_HEADER_PKG).postinst
 	sed -e 's/@KVNAME@/$(KVNAME)/g' -e 's/@KVMAJMIN@/$(KERNEL_MAJMIN)/g' < debian/control.in > debian/control
@@ -154,10 +159,10 @@ binary: install
 	# remove firmware
 	rm -rf debian/$(PVE_KERNEL_PKG)/lib/firmware
-ifeq ($(filter pkg.pve-kernel.debug,$(DEB_BUILD_PROFILES)),)
-	echo "'pkg.pve-kernel.debug' build profile disabled, skipping -dbgsym creation"
+ifeq ($(filter pkg.proxmox-kernel.debug,$(DEB_BUILD_PROFILES)),)
+	echo "'pkg.proxmox-kernel.debug' build profile disabled, skipping -dbgsym creation"
-	echo "'pkg.pve-kernel.debug' build profile enabled, creating -dbgsym contents"
+	echo "'pkg.proxmox-kernel.debug' build profile enabled, creating -dbgsym contents"
 	mkdir -p debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)
 	mkdir debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/boot
 	install -m 644 $(KERNEL_SRC)/vmlinux debian/$(PVE_DEBUG_KERNEL_PKG)/usr/lib/debug/boot/vmlinux-$(KVNAME)
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
index 792a6ca..053cb04 100644
--- a/debian/source/lintian-overrides
+++ b/debian/source/lintian-overrides
@@ -1,2 +1,2 @@
-pve-kernel source: debian-control-has-dbgsym-package (in section for pve-kernel-*-pve-dbgsym) Package [debian/control:*]
-pve-kernel source: license-problem-gfdl-invariants invariant part is: with the :ref:`invariant sections <fdl-invariant>` being list their titles, with the :ref:`front-cover texts <fdl-cover-texts>` being list, and with the :ref:`back-cover texts <fdl-cover-texts>` being list [ubuntu-kernel/Documentation/userspace-api/media/fdl-appendix.rst]
+proxmox-kernel source: debian-control-has-dbgsym-package (in section for proxmox-kernel-*-pve-dbgsym) Package [debian/control:*]
+proxmox-kernel source: license-problem-gfdl-invariants invariant part is: with the :ref:`invariant sections <fdl-invariant>` being list their titles, with the :ref:`front-cover texts <fdl-cover-texts>` being list, and with the :ref:`back-cover texts <fdl-cover-texts>` being list [ubuntu-kernel/Documentation/userspace-api/media/fdl-appendix.rst]

More information about the pve-devel mailing list