kernel make binrpm-pkg bricht mit Fehler ab

Ich habe soeben ein älteres Tumbletweet auf den Stand 27.12.2021 geholt. Beim Versuch ein Kernel zu erstellen bricht er beim rpm-Teil ab.
Es wird das Verzeichnis …/kernelname/lib/modules/… gesucht. Es existiert dort aber kein lib, sondern nur ein boot und usr.

Ein make all läuft ohne Fehler dagegen.

Mein Ablauf ist:
make oldconfig
make menuconfig
make all
make binrpm-pkg

Was mache ich falsch ?

Warum einen Kernel selber kompilieren?
Oder was hast du vor?

PS
Es ist nicht sinnvoll, etwas zu beschreiben, besser ist es, die komplette Ausgabe incl. der !!kompletten!! Eingabezeile in Code-Tags zu posten, und wenn die Ausgabe zu lang ist, gibt es noch susepaste.

Kann ich hier auch klassisch eine Textdatei als Anhang machen ? ( Ich habe daher nur die letzten Outputs angehängt.)
Die Zeile mit den Kernel-headers gibt mir zu denken, es scheint aber kein Paket dieses Namens mehr zu geben.
Ich verstehe nicht, warum ich viele Zeilen mit INSTALL …/lib/… sehe, aber das Verzeichnis nicht angelegt wird.

Warum Kernel compilieren: Ich habe eine etwas abweichende HW-Konfiguration ( mit ein paar Basteleien dran), wo ich manchmal in den C-Headern etwas trimmen musste.

INSTALL /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/usx2y/snd-usb-us122l.ko
INSTALL /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
INSTALL /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/virtio/virtio_snd.ko
INSTALL /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/x86/snd-hdmi-lpe-audio.ko
INSTALL /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/xen/snd_xen_front.ko
INSTALL /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default/kernel/virt/lib/irqbypass.ko
DEPMOD /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/usr/lib/modules/5.15.8-1-default
depmod: ERROR: could not open directory /root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/lib/modules/5.15.8-1-default: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
make[2]: *** [Makefile:1809: modules_install] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.JJ87kQ (%install)

RPM build errors:
line 19: It’s not recommended to have unversioned Obsoletes: Obsoletes: kernel-headers
Bad exit status from /var/tmp/rpm-tmp.JJ87kQ (%install)
make[1]: *** [scripts/Makefile.package:68: binrpm-pkg] Error 1
make: *** [Makefile:1590: binrpm-pkg] Error 2
bigarc:/usr/src/linux # ls root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64///root/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-2.x86_64/
boot usr
bigarc:/usr/src/linux #

  1. Baue ein rpm nicht als root, baue es als User und installiere es als root.

  2. Benutze Code-Tags:
    https://forums.opensuse.org/showthread.php/536143-Using-Code-Tags-Around-Your-Paste

  3. Poste

zypper se -si kernel-default

Mir scheint, das ist ein Bug vom aktuellen Tumbletweet bzgl. der Kombination von Kernel und glibc.

Der Fehler passiert auch, wenn man es frisch in eine VM installiert und dort nur make oldconfig, make binrpm-pkg ausführt.
Es funktioniert weder als User noch als root.

Nehme ich dagegen das aktuelle Leap 15.3, ( oder das 15.2), dann kann ich ohne Fehler ein binrpm-pkg compilen. ( als user und als root)

Wenn ich das richtig verstehe, liegt ein Missmatch zwischen Kernel und glibc bei den Includes vor. Ich schaffe es aber nicht, dieses durch Installationskommandos zu lösen,
wie in diesen Threads thematisiert wird.

https://github.com/Frogging-Family/linux-tkg/issues/339
https://github.com/Frogging-Family/linux-tkg/issues/173
https://githubmate.com/repo/Frogging-Family/linux-tkg/issues/339?page=1

lamer@bigarc:~/kernel> zypper se -si kernel-default
Loading repository data…
Reading installed packages…

S | Name | Type | Version | Arch | Repository
—±---------------------±--------±-----------±-------±---------------------
i+ | kernel-default | package | 5.15.8-1.1 | x86_64 | Main Repository (OSS)
i+ | kernel-default | package | 5.15.8-1.1 | x86_64 | openSUSE-20211221-0
i | kernel-default-devel | package | 5.15.8-1.1 | x86_64 | Main Repository (OSS)

Das zu ignorieren ist wahrscheinlich den besten Weg ignoriert zu werden.

Wenn du meinst, dass das hilft, bitte sehr:


=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2021.12.28 17:39:32 =~=~=~=~=~=~=~=~=~=~=~=


lamer@bigarc:~> cd kernel/
lamer@bigarc:~/kernel> cd kernel/make -C /usr/src/linux O=/home/lamer/kernel oldconfig
make: Entering directory '/usr/src/linux-5.15.8-1'
make[1]: Entering directory '/home/lamer/kernel'
  GEN     Makefile
#
# No change to .config
#
make[1]: Leaving directory '/home/lamer/kernel'
make: Leaving directory '/usr/src/linux-5.15.8-1'
lamer@bigarc:~/kernel> make -C /usr/src/linux O=/home/lamer/kernel oldconfig
cd kernel/make -C /usr/src/linux O=/home/lamer/kernel oldconfig
lscd kernel/more README.SUSE ls -la-bash-s -lalmore README.SUSE cd kernel/lsmake -C /usr/src/linux O=/home/lamer/kernel oldconfig
cd kernel/make -C /usr/src/linux O=/home/lamer/kernel oldconfig
make -C /usr/src/linux O=/home/lamer/kernel oldconfig-j 15 binrpm-pkg
make: Entering directory '/usr/src/linux-5.15.8-1'
make[1]: Entering directory '/home/lamer/kernel'
make -f /usr/src/linux-5.15.8-1/Makefile
  GEN     Makefile
  DESCEND objtool
  DESCEND bpf/resolve_btfids
  CALL    /usr/src/linux-5.15.8-1/scripts/atomic/check-atomics.sh
  CALL    /usr/src/linux-5.15.8-1/scripts/checksyscalls.sh
  CHK     include/generated/compile.h
Kernel: arch/x86/boot/bzImage is ready  (#1)
sh /usr/src/linux-5.15.8-1/scripts/package/mkspec prebuilt > ./binkernel.spec
rpmbuild  --define "_builddir ." --target \
x86_64 -bb ./binkernel.spec
Building target platforms: x86_64
Building for target x86_64
warning: line 19: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-headers
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.kK7OKk
+ umask 022
+ cd .
+ /usr/bin/rm -rf /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64
+ /usr/bin/mkdir -p /home/lamer/rpmbuild/BUILDROOT
+ /usr/bin/mkdir /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64
+ mkdir -p /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/boot
++ make -f /usr/src/linux-5.15.8-1/Makefile image_name
+ cp arch/x86/boot/bzImage /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/boot/vmlinuz-5.15.8-1-default
+ make -f /usr/src/linux-5.15.8-1/Makefile -j16 INSTALL_MOD_PATH=/home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64 modules_install
make[3]: warning: -j16 forced in submake: resetting jobserver mode.
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/arch/x86/crypto/aesni-intel.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/arch/x86/crypto/blake2s-x86_64.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/arch/x86/crypto/aegis128-aesni.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/arch/x86/crypto/blowfish-x86_64.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/arch/x86/crypto/camellia-aesni-avx2.ko




-- gekürzt


  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/soundcore.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/synth/emux/snd-emux-synth.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/synth/snd-util-mem.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/6fire/snd-usb-6fire.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/bcd2000/snd-bcd2000.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/hiface/snd-usb-hiface.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/line6/snd-usb-line6.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/line6/snd-usb-pod.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/line6/snd-usb-podhd.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/line6/snd-usb-toneport.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/line6/snd-usb-variax.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/misc/snd-ua101.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/snd-usb-audio.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/snd-usbmidi-lib.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/usx2y/snd-usb-us122l.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/virtio/virtio_snd.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/x86/snd-hdmi-lpe-audio.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/sound/xen/snd_xen_front.ko
  INSTALL /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default/kernel/virt/lib/irqbypass.ko
  DEPMOD  /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/modules/5.15.8-1-default
depmod: ERROR: could not open directory /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/lib/modules/5.15.8-1-default: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
make[3]: *** [/usr/src/linux-5.15.8-1/Makefile:1809: modules_install] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.kK7OKk (%install)




RPM build errors:
    line 19: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-headers
    Bad exit status from /var/tmp/rpm-tmp.kK7OKk (%install)
make[2]: *** [/usr/src/linux-5.15.8-1/scripts/Makefile.package:68: binrpm-pkg] Error 1
make[1]: *** [/usr/src/linux-5.15.8-1/Makefile:1590: binrpm-pkg] Error 2
make[1]: Leaving directory '/home/lamer/kernel'
make: *** [Makefile:219: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-5.15.8-1'
lamer@bigarc:~/kernel> ls /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr
lib
lamer@bigarc:~/kernel> ls /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/
modules
lamer@bigarc:~/kernel> ls /home/lamer/rpmbuild/BUILDROOT/kernel-5.15.8_1_default-1.x86_64/usr/lib/



Also ich baue meine Testkernel ebenfalls mittels make binrpm-pkg und das funktioniert auch, bis darauf, dass grub2-mkconfig händisch aufgerufen werden muss.

Ich arbeite jedoch mit dem Opensuse Kernel git Repo, in das ich zusätzliche remotes eingebunden habe, von denen ich cherry-picken möchte.
Sieht hier also so aus:

andy@X570DESKTOP:/vol/source/kernel> git remote -v 
kernel.org      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git (fetch) 
kernel.org      https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git (push) 
origin  https://github.com/SUSE/kernel (fetch) 
origin  https://github.com/SUSE/kernel (push) 
rt      https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git/ (fetch) 
rt      https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git/ (push) 
andy@X570DESKTOP:/vol/source/kernel> 

Wichtig ist, dass man in der Konfiguration (bitte benutzt make nconfig wenn ein GUI benötigt wird und nicht menuconfig) unter Kernel hacking möglichst alle Debugging Features deaktiviert, dazu muss zuvor auch “Configure standard kernel features (expert users) ----”
zusätzlich unter General setup deaktiviert werden. Anderenfalls werden alle Debug-Symbole mitgebaut und der Vorgang dauert Jahre und müllt einem die Platte zu. Zudem muss unter Suse Release Details der Haken bei “Release Kernel” rausgenommen werden.

Desweiteren rate ich, die allererste config vom laufenden Opensuse kernel als Basis zu verwenden.

zcat /proc/config.gz > .config

Dann sollte es wohl klappen :wink:
Viel Spaß!

Danke für die Tips.
Es funktioniert problemlos mit dem kernel von kernel.org.
Habe gerade das 5.16.2 und 5.16.1 compiliert und es gab keine Fehler.

Die Kernel vom Tumbleweed bringen beide den RPM-Fehler und brechen ab.
Ich habe seit Start des Threads nun 3* alle Updates gezogen, aber die Kernel vom Tumbleweed haben alle den gleichen Fehler. ( Bei Leap läuft es problemlos, wie eben auch beim kernel.org.)

Modifiziert Suse hier etwas, was die rpm-Geschichte sabotiert ?

Ich habe vermutlich die Suse-Verschlimmbesserung gefunden:
Beim Makefile vom Tumbleweed “vanilla-kernel” hat man in Zeile 1085 ein “usr” eingefügt.
Wenn man das entfernt, funktioniert auch binrpm-pkg wieder.

MODLIB = $(INSTALL_MOD_PATH)/usr/lib/modules/$(KERNELRELEASE)

Zum einen ist das Kernel damit nicht “vanilla” und zum anderen ist das die Ursache, warum binrpm-pkg nicht mehr läuft.

@nebelfuerst:
Du hast recht, in im Makefile von /usr/src/linux-5.16.1-1 ist das bei mir auch so.

Komischerweise stammt das aber nicht vom Opensuse-git server. Dort gibt’s das hinzugefügte /usr nicht.
Ich baue ja direkt im git Verzeichnis, daher war ich davon bisher nicht betroffen.

andy@X570DESKTOP:/vol/source/kernel> git checkout origin/master && grep MODLIB Makefile  
Vorherige Position von HEAD war b844abf1e5b74 Automatically updated to 5.16-rc7-111-g278218f6778b 
HEAD ist jetzt bei e66f193a076a6 Merge branch 'scripts' into master 
# INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory 
MODLIB  = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)

[FONT=monospace]andy@X570DESKTOP:/vol/source/kernel> git checkout origin/stable && grep MODLIB Makefile        
Vorherige Position von HEAD war e66f193a076a6 Merge branch 'scripts' into master 
HEAD ist jetzt bei 458d8e1ecf24d disable the Bluetooth patch again 
# INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory 
MODLIB  = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
[/FONT]

Aber hier findet man das u.a.:
https://build.opensuse.org/package/view_file/openSUSE:Factory/kernel-source/kernel-source.spec?expand=1


%if 0%{?usrmerged}
# fix MODLIB so kmps install to /usr
sed -ie 's,/lib/modules/,%{kernel_module_directory}/,' linux-%kernelrelease%variant/Makefile
%endif

Ab wann gilt man denn als “usrmerged”?

Ich habe dazu auch einen Bugreport erstellt.
Das Feedback klang so, als ob usrmerged nicht nur diesen Bug im Moment hat.
Ich werde Updates zum Kernel erst mal in VM einen dryrun geben, denn getestet war’s diesmal wohl nicht.