* Since 6.18.x make binrpm-pkg does not sign modules
@ 2026-01-09 14:04 Holger Kiehl
2026-01-09 21:06 ` Nicolas Schier
0 siblings, 1 reply; 8+ messages in thread
From: Holger Kiehl @ 2026-01-09 14:04 UTC (permalink / raw)
To: linux-kernel; +Cc: Nathan Chancellor, Nicolas Schier, linux-kbuild
Hello,
when building kernel with 'make binrpm-pkg' the modules in the
/lib/modules directory of the rpm package are no longer signed
although one sees the following during the build process:
.
.
INSTALL /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
.
.
SIGN /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
.
.
But when installing this RPM and check this it says:
# modinfo /lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
filename: /lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
alias: net-pf-42
license: GPL v2
description: Qualcomm IPC-router driver
license: Dual BSD/GPL
description: Qualcomm IPC Router Nameservice
author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
srcversion: 473C5AB47E04ECEA0106681
depends:
intree: Y
name: qrtr
retpoline: Y
vermagic: 6.18.4 SMP preempt mod_unload modversions
This happens (no signature) with all modules, qrtr.ko was just taken
as an example.
Building the kernel via 'make && make modules_install && make install'
the modules then do have a signature. Also with kernel 6.12.x the
modules are signed when building with 'make binrpm-pkg'.
Config looks as follows:
# grep CONFIG_MODULE_ .config
CONFIG_MODULE_SIG_FORMAT=y
CONFIG_MODULE_DEBUGFS=y
# CONFIG_MODULE_DEBUG is not set
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_MODULE_UNLOAD_TAINT_TRACKING=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_MODULE_SIG=y
# CONFIG_MODULE_SIG_FORCE is not set
CONFIG_MODULE_SIG_ALL=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not set
CONFIG_MODULE_SIG_SHA512=y
# CONFIG_MODULE_SIG_SHA3_256 is not set
# CONFIG_MODULE_SIG_SHA3_384 is not set
# CONFIG_MODULE_SIG_SHA3_512 is not set
CONFIG_MODULE_SIG_HASH="sha512"
# CONFIG_MODULE_COMPRESS is not set
# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
# CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set
What am I missing?
Regards,
Holger
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-09 14:04 Since 6.18.x make binrpm-pkg does not sign modules Holger Kiehl
@ 2026-01-09 21:06 ` Nicolas Schier
2026-01-10 11:43 ` Holger Kiehl
0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Schier @ 2026-01-09 21:06 UTC (permalink / raw)
To: Holger Kiehl; +Cc: linux-kernel, Nathan Chancellor, linux-kbuild
On Fri, Jan 09, 2026 at 03:04:33PM +0100, Holger Kiehl wrote:
> Hello,
>
> when building kernel with 'make binrpm-pkg' the modules in the
> /lib/modules directory of the rpm package are no longer signed
> although one sees the following during the build process:
>
> .
> .
> INSTALL /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> .
> .
> SIGN /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
thanks for your report; well, that's interesting. The modules signed
during the package build preparations ("SIGN .../rpmbuild/BUILD/...")
is significantly larger than the one in the build tree (as expected, as
the latter is unsigned); but the one that lands in the rpm package is
_smaller_ than the module in the build tree.
My experience with rpmbuild is limited, I need more time for
investigation.
Nathan, do you have more insights on the rpm build process?
Kind regards,
Nicolas
> .
> .
>
> But when installing this RPM and check this it says:
>
> # modinfo /lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> filename: /lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> alias: net-pf-42
> license: GPL v2
> description: Qualcomm IPC-router driver
> license: Dual BSD/GPL
> description: Qualcomm IPC Router Nameservice
> author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> srcversion: 473C5AB47E04ECEA0106681
> depends:
> intree: Y
> name: qrtr
> retpoline: Y
> vermagic: 6.18.4 SMP preempt mod_unload modversions
>
> This happens (no signature) with all modules, qrtr.ko was just taken
> as an example.
>
> Building the kernel via 'make && make modules_install && make install'
> the modules then do have a signature. Also with kernel 6.12.x the
> modules are signed when building with 'make binrpm-pkg'.
>
> Config looks as follows:
>
> # grep CONFIG_MODULE_ .config
> CONFIG_MODULE_SIG_FORMAT=y
> CONFIG_MODULE_DEBUGFS=y
> # CONFIG_MODULE_DEBUG is not set
> # CONFIG_MODULE_FORCE_LOAD is not set
> CONFIG_MODULE_UNLOAD=y
> # CONFIG_MODULE_FORCE_UNLOAD is not set
> CONFIG_MODULE_UNLOAD_TAINT_TRACKING=y
> CONFIG_MODULE_SRCVERSION_ALL=y
> CONFIG_MODULE_SIG=y
> # CONFIG_MODULE_SIG_FORCE is not set
> CONFIG_MODULE_SIG_ALL=y
> # CONFIG_MODULE_SIG_SHA1 is not set
> # CONFIG_MODULE_SIG_SHA256 is not set
> # CONFIG_MODULE_SIG_SHA384 is not set
> CONFIG_MODULE_SIG_SHA512=y
> # CONFIG_MODULE_SIG_SHA3_256 is not set
> # CONFIG_MODULE_SIG_SHA3_384 is not set
> # CONFIG_MODULE_SIG_SHA3_512 is not set
> CONFIG_MODULE_SIG_HASH="sha512"
> # CONFIG_MODULE_COMPRESS is not set
> # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
> CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
> CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
> # CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set
>
> What am I missing?
>
> Regards,
> Holger
--
Nicolas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-09 21:06 ` Nicolas Schier
@ 2026-01-10 11:43 ` Holger Kiehl
2026-01-10 21:34 ` Nicolas Schier
0 siblings, 1 reply; 8+ messages in thread
From: Holger Kiehl @ 2026-01-10 11:43 UTC (permalink / raw)
To: Nicolas Schier
Cc: linux-kernel, Nathan Chancellor, linux-kbuild, Uday Shankar
On Fri, 9 Jan 2026, Nicolas Schier wrote:
> On Fri, Jan 09, 2026 at 03:04:33PM +0100, Holger Kiehl wrote:
> > Hello,
> >
> > when building kernel with 'make binrpm-pkg' the modules in the
> > /lib/modules directory of the rpm package are no longer signed
> > although one sees the following during the build process:
> >
> > .
> > .
> > INSTALL /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> > .
> > .
> > SIGN /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
>
> thanks for your report; well, that's interesting. The modules signed
> during the package build preparations ("SIGN .../rpmbuild/BUILD/...")
> is significantly larger than the one in the build tree (as expected, as
> the latter is unsigned); but the one that lands in the rpm package is
> _smaller_ than the module in the build tree.
>
Reading the comment in scripts/package/kernel.spec
# later, we make all modules executable so that find-debuginfo.sh strips
# them up. but they don't actually need to be executable, so remove the
# executable bit, taking care to do it _after_ find-debuginfo.sh has run
I would think that find-debuginfo.sh also strips the signature of the
modules. As a quick test I replaced scripts/package/kernel.spec and
scripts/package/mkspec in the 6.18.4 tree with those from 6.12.64 and
then did a 'make binrpm-pkg'. Then the signature of the modules in
the rpm package are not removed.
Looking back, it looks like this change was introduced with 6.15-rc1:
https://github.com/torvalds/linux/commit/a7c699d090a1f3795c3271c2b399230e182db06e
or
https://lkml.org/lkml/2025/3/31/1313
The module signatures are needed if you run the kernel in lockdown mode.
The kernel refuses to load unsigned modules.
Regards,
Holger
> My experience with rpmbuild is limited, I need more time for
> investigation.
>
> Nathan, do you have more insights on the rpm build process?
>
> Kind regards,
> Nicolas
>
>
>
> > .
> > .
> >
> > But when installing this RPM and check this it says:
> >
> > # modinfo /lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> > filename: /lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> > alias: net-pf-42
> > license: GPL v2
> > description: Qualcomm IPC-router driver
> > license: Dual BSD/GPL
> > description: Qualcomm IPC Router Nameservice
> > author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> > srcversion: 473C5AB47E04ECEA0106681
> > depends:
> > intree: Y
> > name: qrtr
> > retpoline: Y
> > vermagic: 6.18.4 SMP preempt mod_unload modversions
> >
> > This happens (no signature) with all modules, qrtr.ko was just taken
> > as an example.
> >
> > Building the kernel via 'make && make modules_install && make install'
> > the modules then do have a signature. Also with kernel 6.12.x the
> > modules are signed when building with 'make binrpm-pkg'.
> >
> > Config looks as follows:
> >
> > # grep CONFIG_MODULE_ .config
> > CONFIG_MODULE_SIG_FORMAT=y
> > CONFIG_MODULE_DEBUGFS=y
> > # CONFIG_MODULE_DEBUG is not set
> > # CONFIG_MODULE_FORCE_LOAD is not set
> > CONFIG_MODULE_UNLOAD=y
> > # CONFIG_MODULE_FORCE_UNLOAD is not set
> > CONFIG_MODULE_UNLOAD_TAINT_TRACKING=y
> > CONFIG_MODULE_SRCVERSION_ALL=y
> > CONFIG_MODULE_SIG=y
> > # CONFIG_MODULE_SIG_FORCE is not set
> > CONFIG_MODULE_SIG_ALL=y
> > # CONFIG_MODULE_SIG_SHA1 is not set
> > # CONFIG_MODULE_SIG_SHA256 is not set
> > # CONFIG_MODULE_SIG_SHA384 is not set
> > CONFIG_MODULE_SIG_SHA512=y
> > # CONFIG_MODULE_SIG_SHA3_256 is not set
> > # CONFIG_MODULE_SIG_SHA3_384 is not set
> > # CONFIG_MODULE_SIG_SHA3_512 is not set
> > CONFIG_MODULE_SIG_HASH="sha512"
> > # CONFIG_MODULE_COMPRESS is not set
> > # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
> > CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
> > CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
> > # CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set
> >
> > What am I missing?
> >
> > Regards,
> > Holger
>
> --
> Nicolas
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-10 11:43 ` Holger Kiehl
@ 2026-01-10 21:34 ` Nicolas Schier
2026-01-11 17:41 ` Holger Kiehl
0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Schier @ 2026-01-10 21:34 UTC (permalink / raw)
To: Holger Kiehl; +Cc: linux-kernel, Nathan Chancellor, linux-kbuild, Uday Shankar
On Sat, Jan 10, 2026 at 12:43:26PM +0100, Holger Kiehl wrote:
> On Fri, 9 Jan 2026, Nicolas Schier wrote:
>
> > On Fri, Jan 09, 2026 at 03:04:33PM +0100, Holger Kiehl wrote:
> > > Hello,
> > >
> > > when building kernel with 'make binrpm-pkg' the modules in the
> > > /lib/modules directory of the rpm package are no longer signed
> > > although one sees the following during the build process:
> > >
> > > .
> > > .
> > > INSTALL /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> > > .
> > > .
> > > SIGN /usr/src/kernels/linux-6.18.4/rpmbuild/BUILD/kernel-6.18.4-build/BUILDROOT/lib/modules/6.18.4/kernel/net/qrtr/qrtr.ko
> >
> > thanks for your report; well, that's interesting. The modules signed
> > during the package build preparations ("SIGN .../rpmbuild/BUILD/...")
> > is significantly larger than the one in the build tree (as expected, as
> > the latter is unsigned); but the one that lands in the rpm package is
> > _smaller_ than the module in the build tree.
> >
> Reading the comment in scripts/package/kernel.spec
>
> # later, we make all modules executable so that find-debuginfo.sh strips
> # them up. but they don't actually need to be executable, so remove the
> # executable bit, taking care to do it _after_ find-debuginfo.sh has run
>
> I would think that find-debuginfo.sh also strips the signature of the
> modules.
As the signature is just appended and not part of the actual ELF file,
that makes sense -- and signature would have become invalid due to the
stripping.
> As a quick test I replaced scripts/package/kernel.spec and
> scripts/package/mkspec in the 6.18.4 tree with those from 6.12.64 and
> then did a 'make binrpm-pkg'. Then the signature of the modules in
> the rpm package are not removed.
Thanks for the further debugging!
>
> Looking back, it looks like this change was introduced with 6.15-rc1:
>
> https://github.com/torvalds/linux/commit/a7c699d090a1f3795c3271c2b399230e182db06e
> or
> https://lkml.org/lkml/2025/3/31/1313
>
> The module signatures are needed if you run the kernel in lockdown mode.
> The kernel refuses to load unsigned modules.
Sure, signed modules should be supported by *rpm-plg targets.
A simple solution might be to call modules_sign target after the
find-debuginfo.sh run; but commit 16c36f8864e3 spunds to me as if we
should rather do something similiar as for the Debian packages:
modules_install with INSTALL_MOD_STRIP=1 and then install only the debug
infos manually.
Does that make sense?
Kind regards
Nicolas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-10 21:34 ` Nicolas Schier
@ 2026-01-11 17:41 ` Holger Kiehl
2026-01-15 8:30 ` Nicolas Schier
2026-01-20 0:04 ` Nathan Chancellor
0 siblings, 2 replies; 8+ messages in thread
From: Holger Kiehl @ 2026-01-11 17:41 UTC (permalink / raw)
To: Nicolas Schier
Cc: linux-kernel, Nathan Chancellor, linux-kbuild, Uday Shankar
On Sat, 10 Jan 2026, Nicolas Schier wrote:
> A simple solution might be to call modules_sign target after the
> find-debuginfo.sh run; but commit 16c36f8864e3 spunds to me as if we
> should rather do something similiar as for the Debian packages:
> modules_install with INSTALL_MOD_STRIP=1 and then install only the debug
> infos manually.
>
> Does that make sense?
>
I am not a kernel developer and my knowledge in this area is very
limited. Did try your suggestion to call modules_install with
INSTALL_MOD_STRIP=1, but still the signature was removed in the
RPM. Removing the 'chmod u+x', so find-debuginfo.sh does not strip
them, did not help either. But, most properly, I am still missing
something.
Kind regards,
Holger
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-11 17:41 ` Holger Kiehl
@ 2026-01-15 8:30 ` Nicolas Schier
2026-01-20 0:04 ` Nathan Chancellor
1 sibling, 0 replies; 8+ messages in thread
From: Nicolas Schier @ 2026-01-15 8:30 UTC (permalink / raw)
To: Holger Kiehl; +Cc: linux-kernel, Nathan Chancellor, linux-kbuild, Uday Shankar
On Sun, Jan 11, 2026 at 06:41:39PM +0100, Holger Kiehl wrote:
> On Sat, 10 Jan 2026, Nicolas Schier wrote:
>
> > A simple solution might be to call modules_sign target after the
> > find-debuginfo.sh run; but commit 16c36f8864e3 spunds to me as if we
> > should rather do something similiar as for the Debian packages:
> > modules_install with INSTALL_MOD_STRIP=1 and then install only the debug
> > infos manually.
> >
> > Does that make sense?
> >
> I am not a kernel developer and my knowledge in this area is very
> limited. Did try your suggestion to call modules_install with
> INSTALL_MOD_STRIP=1, but still the signature was removed in the
> RPM. Removing the 'chmod u+x', so find-debuginfo.sh does not strip
> them, did not help either. But, most properly, I am still missing
> something.
I am going to have a closer look at that, but that will take time.
A possible work-around might be to enable CONFIG_MODULE_COMPRESS and
CONFIG_MODULE_COMPRESS_ALL, which prevents find-debuginfo.sh from
stripping (but you won't get debug modules, too).
Kind regards,
Nicolas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-11 17:41 ` Holger Kiehl
2026-01-15 8:30 ` Nicolas Schier
@ 2026-01-20 0:04 ` Nathan Chancellor
2026-01-20 23:21 ` Holger Kiehl
1 sibling, 1 reply; 8+ messages in thread
From: Nathan Chancellor @ 2026-01-20 0:04 UTC (permalink / raw)
To: Holger Kiehl; +Cc: Nicolas Schier, linux-kernel, linux-kbuild, Uday Shankar
On Sun, Jan 11, 2026 at 06:41:39PM +0100, Holger Kiehl wrote:
> On Sat, 10 Jan 2026, Nicolas Schier wrote:
>
> > A simple solution might be to call modules_sign target after the
> > find-debuginfo.sh run; but commit 16c36f8864e3 spunds to me as if we
> > should rather do something similiar as for the Debian packages:
> > modules_install with INSTALL_MOD_STRIP=1 and then install only the debug
> > infos manually.
> >
> > Does that make sense?
> >
> I am not a kernel developer and my knowledge in this area is very
> limited. Did try your suggestion to call modules_install with
> INSTALL_MOD_STRIP=1, but still the signature was removed in the
> RPM. Removing the 'chmod u+x', so find-debuginfo.sh does not strip
> them, did not help either. But, most properly, I am still missing
> something.
I think one of the items added to __spec_install_post by commit
a7c699d090a1 ("kbuild: rpm-pkg: build a debuginfo RPM") ends up
stripping the modules unconditionally, not just when the debuginfo
package is built, as this reproduces for me with your configuration
snippet from upthread and x86_64_defconfig, which does not have debug
information enabled.
I emulated commit 16c36f8864e3 ("kbuild: deb-pkg: use build ID instead
of debug link for dbg package") for rpm-pkg, which appears to result in
a functionally equivalent standalone debuginfo package (but I did not
actually test) while fixing module signing for me. Could you give it a
test?
diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec
index 98f206cb7c60..0f1c8de1bd95 100644
--- a/scripts/package/kernel.spec
+++ b/scripts/package/kernel.spec
@@ -2,6 +2,8 @@
%{!?_arch: %define _arch dummy}
%{!?make: %define make make}
%define makeflags %{?_smp_mflags} ARCH=%{ARCH}
+%define __spec_install_post /usr/lib/rpm/brp-compress || :
+%define debug_package %{nil}
Name: kernel
Summary: The Linux Kernel
@@ -46,34 +48,12 @@ against the %{version} kernel package.
%endif
%if %{with_debuginfo}
-# list of debuginfo-related options taken from distribution kernel.spec
-# files
-%undefine _include_minidebuginfo
-%undefine _find_debuginfo_dwz_opts
-%undefine _unique_build_ids
-%undefine _unique_debug_names
-%undefine _unique_debug_srcs
-%undefine _debugsource_packages
-%undefine _debuginfo_subpackages
-%global _find_debuginfo_opts -r
-%global _missing_build_ids_terminate_build 1
-%global _no_recompute_build_ids 1
-%{debug_package}
+%package debuginfo
+Summary: Debug information package for the Linux kernel
+%description debuginfo
+This package provides debug information for the kernel image and modules from the
+%{version} package.
%endif
-# some (but not all) versions of rpmbuild emit %%debug_package with
-# %%install. since we've already emitted it manually, that would cause
-# a package redefinition error. ensure that doesn't happen
-%define debug_package %{nil}
-
-# later, we make all modules executable so that find-debuginfo.sh strips
-# them up. but they don't actually need to be executable, so remove the
-# executable bit, taking care to do it _after_ find-debuginfo.sh has run
-%define __spec_install_post \
- %{?__debug_package:%{__debug_install_post}} \
- %{__arch_install_post} \
- %{__os_install_post} \
- find %{buildroot}/lib/modules/%{KERNELRELEASE} -name "*.ko" -type f \\\
- | xargs --no-run-if-empty chmod u-x
%prep
%setup -q -n linux
@@ -87,7 +67,7 @@ patch -p1 < %{SOURCE2}
mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE}
cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz
# DEPMOD=true makes depmod no-op. We do not package depmod-generated files.
-%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install
+%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} INSTALL_MOD_STRIP=1 DEPMOD=true modules_install
%{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE}
cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config
@@ -118,22 +98,31 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA
echo "%exclude /lib/modules/%{KERNELRELEASE}/build"
} > %{buildroot}/kernel.list
-# make modules executable so that find-debuginfo.sh strips them. this
-# will be undone later in %%__spec_install_post
-find %{buildroot}/lib/modules/%{KERNELRELEASE} -name "*.ko" -type f \
- | xargs --no-run-if-empty chmod u+x
-
%if %{with_debuginfo}
# copying vmlinux directly to the debug directory means it will not get
# stripped (but its source paths will still be collected + fixed up)
mkdir -p %{buildroot}/usr/lib/debug/lib/modules/%{KERNELRELEASE}
cp vmlinux %{buildroot}/usr/lib/debug/lib/modules/%{KERNELRELEASE}
+
+echo /usr/lib/debug/lib/modules/%{KERNELRELEASE}/vmlinux > %{buildroot}/debuginfo.list
+
+while read -r mod; do
+ mod="${mod%.o}.ko"
+ dbg="%{buildroot}/usr/lib/debug/lib/modules/%{KERNELRELEASE}/kernel/${mod}"
+ buildid=$("${READELF}" -n "${mod}" | sed -n 's@^.*Build ID: \(..\)\(.*\)@\1/\2@p')
+ link="%{buildroot}/usr/lib/debug/.build-id/${buildid}.debug"
+
+ mkdir -p "${dbg%/*}" "${link%/*}"
+ "${OBJCOPY}" --only-keep-debug "${mod}" "${dbg}"
+ ln -sf --relative "${dbg}" "${link}"
+
+ echo "${dbg#%{buildroot}}" >> %{buildroot}/debuginfo.list
+ echo "${link#%{buildroot}}" >> %{buildroot}/debuginfo.list
+done < modules.order
%endif
%clean
rm -rf %{buildroot}
-rm -f debugfiles.list debuglinks.list debugsourcefiles.list debugsources.list \
- elfbins.list
%post
if [ -x /usr/bin/kernel-install ]; then
@@ -172,3 +161,9 @@ fi
/usr/src/kernels/%{KERNELRELEASE}
/lib/modules/%{KERNELRELEASE}/build
%endif
+
+%if %{with_debuginfo}
+%files -f %{buildroot}/debuginfo.list debuginfo
+%defattr (-, root, root)
+%exclude /debuginfo.list
+%endif
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Since 6.18.x make binrpm-pkg does not sign modules
2026-01-20 0:04 ` Nathan Chancellor
@ 2026-01-20 23:21 ` Holger Kiehl
0 siblings, 0 replies; 8+ messages in thread
From: Holger Kiehl @ 2026-01-20 23:21 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Nicolas Schier, linux-kernel, linux-kbuild, Uday Shankar
On Mon, 19 Jan 2026, Nathan Chancellor wrote:
> On Sun, Jan 11, 2026 at 06:41:39PM +0100, Holger Kiehl wrote:
> > On Sat, 10 Jan 2026, Nicolas Schier wrote:
> >
> > > A simple solution might be to call modules_sign target after the
> > > find-debuginfo.sh run; but commit 16c36f8864e3 spunds to me as if we
> > > should rather do something similiar as for the Debian packages:
> > > modules_install with INSTALL_MOD_STRIP=1 and then install only the debug
> > > infos manually.
> > >
> > > Does that make sense?
> > >
> > I am not a kernel developer and my knowledge in this area is very
> > limited. Did try your suggestion to call modules_install with
> > INSTALL_MOD_STRIP=1, but still the signature was removed in the
> > RPM. Removing the 'chmod u+x', so find-debuginfo.sh does not strip
> > them, did not help either. But, most properly, I am still missing
> > something.
>
> I think one of the items added to __spec_install_post by commit
> a7c699d090a1 ("kbuild: rpm-pkg: build a debuginfo RPM") ends up
> stripping the modules unconditionally, not just when the debuginfo
> package is built, as this reproduces for me with your configuration
> snippet from upthread and x86_64_defconfig, which does not have debug
> information enabled.
>
> I emulated commit 16c36f8864e3 ("kbuild: deb-pkg: use build ID instead
> of debug link for dbg package") for rpm-pkg, which appears to result in
> a functionally equivalent standalone debuginfo package (but I did not
> actually test) while fixing module signing for me. Could you give it a
> test?
>
Thanks for the patch! Can confirm with the patch applied, the modules
are now signed in the rpm package. But I also did not test the debuginfo
part.
Regards,
Holger
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-01-20 23:28 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-09 14:04 Since 6.18.x make binrpm-pkg does not sign modules Holger Kiehl
2026-01-09 21:06 ` Nicolas Schier
2026-01-10 11:43 ` Holger Kiehl
2026-01-10 21:34 ` Nicolas Schier
2026-01-11 17:41 ` Holger Kiehl
2026-01-15 8:30 ` Nicolas Schier
2026-01-20 0:04 ` Nathan Chancellor
2026-01-20 23:21 ` Holger Kiehl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox