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
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 #
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.
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:
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.
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.
@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]
%if 0%{?usrmerged}
# fix MODLIB so kmps install to /usr
sed -ie 's,/lib/modules/,%{kernel_module_directory}/,' linux-%kernelrelease%variant/Makefile
%endif
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.