falsche Syntax: Versionsnummer
falsche Syntax: Versionsnummer
Hallo,
ich bin kein Entwickler -- insofern vielleicht eine einfache Frage. Ich habe einen neuen Kernel von kernel.org konfiguriert und installiert. Es gibt verschiedene Anleitungen, wie man ein deb daraus macht. Ich kriege aber immer den Fehler, dass die Versionsnummer nicht passen würde (auch Warnungen). Ich habe dann den Kernel klassisch mit make install installiert. Das funktioniert alles, aber nicht über die Paketverwaltung (und mit den Warnungen).
Ich kriege aber bei update-grub2 oder update-initramfs immer folgende Warnungen (ähnliche gab es schon bei make deb-pkg)
dpkg: Warnung: Version »initrd.img-5.11.1-x86_64« hat falsche Syntax: Versionsnummer beginnt nicht mit einer Ziffer
dpkg: Warnung: Version »5.11.1-x86_64« hat falsche Syntax: ungültiges Zeichen in Revisionsnummer
uname -a
Linux localhost 5.11.1-x86_64 #3 SMP Thu Feb 25 21:54:59 CET 2021 x86_64 GNU/Linux
Was muss ich denn anpassen (vor allem die Versionsnummer), damit ich den Kernel von kernel.org in ein debian-Packet bekomme?
ich bin kein Entwickler -- insofern vielleicht eine einfache Frage. Ich habe einen neuen Kernel von kernel.org konfiguriert und installiert. Es gibt verschiedene Anleitungen, wie man ein deb daraus macht. Ich kriege aber immer den Fehler, dass die Versionsnummer nicht passen würde (auch Warnungen). Ich habe dann den Kernel klassisch mit make install installiert. Das funktioniert alles, aber nicht über die Paketverwaltung (und mit den Warnungen).
Ich kriege aber bei update-grub2 oder update-initramfs immer folgende Warnungen (ähnliche gab es schon bei make deb-pkg)
dpkg: Warnung: Version »initrd.img-5.11.1-x86_64« hat falsche Syntax: Versionsnummer beginnt nicht mit einer Ziffer
dpkg: Warnung: Version »5.11.1-x86_64« hat falsche Syntax: ungültiges Zeichen in Revisionsnummer
uname -a
Linux localhost 5.11.1-x86_64 #3 SMP Thu Feb 25 21:54:59 CET 2021 x86_64 GNU/Linux
Was muss ich denn anpassen (vor allem die Versionsnummer), damit ich den Kernel von kernel.org in ein debian-Packet bekomme?
Re: falsche Syntax: Versionsnummer
Schau Dir mal meine Kernel an:
4.19.0-14-amd64
5.9.0-0.bpo.5-amd64
Siehst Du den Unterschied? Beim 4.19ner Kernel wurde die 14 hochgerzählt. Beim 5.9ner gab es eine .2 vor der .5.
KA ob es hilft, hab noch nie einen Kernel kompiliert.
Rolf
4.19.0-14-amd64
5.9.0-0.bpo.5-amd64
Siehst Du den Unterschied? Beim 4.19ner Kernel wurde die 14 hochgerzählt. Beim 5.9ner gab es eine .2 vor der .5.
KA ob es hilft, hab noch nie einen Kernel kompiliert.
Rolf
Re: falsche Syntax: Versionsnummer
Frage was machst du womit, blind geraten checkinstalledmund hat geschrieben: [...] Es gibt verschiedene Anleitungen, wie man ein deb daraus macht [...]
MUSTER:
wenn checkinstall dann nicht so
Version: [-5.11.1-x86_64]
sondern so
Version: [5.11.1-x86_64]
gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.
Uns rottet die soziale Kälte viel früher aus.
Re: falsche Syntax: Versionsnummer
Leider hilft das Umbenennen allein nicht. Die Probleme treten schon auf, wenn ich in ../linux-source/ "make deb-pkg" aufrufe. Ich habe es ja deshalb außerhalb der Paketverwaltung installiert. Bei gentoo heißt der Kernel bei mir vmlinuz-5.11.0-zen2-x86_64 -- kein Problem. Das ganze hängt mit dpkg zusammen, nur ist mir nicht klar, wo ich den Fehler mache.
Vielleicht muss ich, wenn ich "make deb-pkg" aufrufe, irgendwelche Variablen mitgeben (KERNELVERSION=XXX) oder eine Datei editieren, nur ist mir nicht klar, welche.
make deb-pkg ruft, wenn ich es richtig sehe, scripts/package/mkdebian auf und stellt die notwendigen Variablen zusammen:
dpkg-architecture ergibt:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_ABI=base
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_LIBC=gnu
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_BUILD_MULTIARCH=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_ABI=base
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_LIBC=gnu
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_MULTIARCH=x86_64-linux-gnu
DEB_TARGET_ARCH=amd64
DEB_TARGET_ARCH_ABI=base
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=amd64
DEB_TARGET_ARCH_ENDIAN=little
DEB_TARGET_ARCH_LIBC=gnu
DEB_TARGET_ARCH_OS=linux
DEB_TARGET_GNU_CPU=x86_64
DEB_TARGET_GNU_SYSTEM=linux-gnu
DEB_TARGET_GNU_TYPE=x86_64-linux-gnu
DEB_TARGET_MULTIARCH=x86_64-linux-gnu
Wenn ich nach https://kernel-team.pages.debian.net/ke ... rg-package vorgehe, müsste ich nach "make nconfig" eigntlich nur noch
$ make clean
$ make deb-pkg
eingeben und hätte dann diverse deb-Pakete. Es wird offenbar linuxsource/"vmlinuz" kompiliert, den man mit System.map & .config in das binary-deb packen könnte. Aber da fehlt bei mir irgend etwas.
Vielleicht muss ich, wenn ich "make deb-pkg" aufrufe, irgendwelche Variablen mitgeben (KERNELVERSION=XXX) oder eine Datei editieren, nur ist mir nicht klar, welche.
make deb-pkg ruft, wenn ich es richtig sehe, scripts/package/mkdebian auf und stellt die notwendigen Variablen zusammen:
dpkg-architecture ergibt:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_ABI=base
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_LIBC=gnu
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_BUILD_MULTIARCH=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_ABI=base
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_LIBC=gnu
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_MULTIARCH=x86_64-linux-gnu
DEB_TARGET_ARCH=amd64
DEB_TARGET_ARCH_ABI=base
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=amd64
DEB_TARGET_ARCH_ENDIAN=little
DEB_TARGET_ARCH_LIBC=gnu
DEB_TARGET_ARCH_OS=linux
DEB_TARGET_GNU_CPU=x86_64
DEB_TARGET_GNU_SYSTEM=linux-gnu
DEB_TARGET_GNU_TYPE=x86_64-linux-gnu
DEB_TARGET_MULTIARCH=x86_64-linux-gnu
Wenn ich nach https://kernel-team.pages.debian.net/ke ... rg-package vorgehe, müsste ich nach "make nconfig" eigntlich nur noch
$ make clean
$ make deb-pkg
eingeben und hätte dann diverse deb-Pakete. Es wird offenbar linuxsource/"vmlinuz" kompiliert, den man mit System.map & .config in das binary-deb packen könnte. Aber da fehlt bei mir irgend etwas.
Re: falsche Syntax: Versionsnummer
Ich bin nach dem Debian Linux Kernel Handbook (https://kernel-team.pages.debian.net/ke ... index.html) vorgegangen, als 4.6 in Verbindung mit 4.5.MaGe hat geschrieben:26.02.2021 14:51:33
Frage was machst du womit, blind geraten checkinstall
MUSTER:
wenn checkinstall dann nicht so
Version: [-5.11.1-x86_64]
sondern so
Version: [5.11.1-x86_64]
Re: falsche Syntax: Versionsnummer
1. make oldconfig
anschließend
2. make bindeb-pkg
oder wenn z.B. 4 Kerne benutzt werden sollen
3. make -j4 bindeb-pkg
Du brauchst manuell keine Versionen vergeben.
anschließend
2. make bindeb-pkg
oder wenn z.B. 4 Kerne benutzt werden sollen
3. make -j4 bindeb-pkg
Du brauchst manuell keine Versionen vergeben.
Re: falsche Syntax: Versionsnummer
Ok -- gab folgenden Fehler:
./scripts/package/builddeb: 27: 5.11.1-amd64=5.11.1: not found
In der betreffenden Zeile von builddeb steht
$ KERNELRELEASE=5.11.1
nicht 5.11.1-amd64
Ich habe in der .config CONFIG_LOCALVERSION="-amd64" leer gelassen (ist bei einem Distri-.Kernel auch leer), neuer Durchlauf.
-----Kernel: arch/x86/boot/bzImage is ready (#5)
make KERNELRELEASE=5.11.1-amd64 ARCH=x86 KBUILD_BUILD_VERSION=4 -f ./Makefile intdeb-pkg
sh ./scripts/package/builddeb
./scripts/package/builddeb: 27: 5.11.1-amd64=5.11.1: not found
make[4]: *** [scripts/Makefile.package:87: intdeb-pkg] Fehler 127
make[3]: *** [Makefile intdeb-pkg] Fehler 2
make[2]: *** [debian/rules:13: binary-arch] Fehler 2
dpkg-buildpackage: Fehler: Unterprozess debian/rules binary lieferte Exitstatus 2
make[1]: *** [scripts/Makefile.package:83: bindeb-pkg] Fehler 2
make: *** [Makefile bindeb-pkg] Fehler 2
./scripts/package/builddeb: 27: 5.11.1-amd64=5.11.1: not found
In der betreffenden Zeile von builddeb steht
$ KERNELRELEASE=5.11.1
nicht 5.11.1-amd64
Ich habe in der .config CONFIG_LOCALVERSION="-amd64" leer gelassen (ist bei einem Distri-.Kernel auch leer), neuer Durchlauf.
debian/rules sehen (bei bindeb-pkg so aus:Kernel: arch/x86/boot/bzImage is ready (#6)
make KERNELRELEASE=5.11.1 ARCH=x86 KBUILD_BUILD_VERSION=5 -f ./Makefile intdeb-pkg
sh ./scripts/package/builddeb
./scripts/package/builddeb: 27: 5.11.1=5.11.1: not found
make[4]: *** [scripts/Makefile.package:87: intdeb-pkg] Fehler 127
make[3]: *** [Makefile intdeb-pkg] Fehler 2
make[2]: *** [debian/rules:13: binary-arch] Fehler 2
dpkg-buildpackage: Fehler: Unterprozess debian/rules binary lieferte Exitstatus 2
make[1]: *** [scripts/Makefile.package:83: bindeb-pkg] Fehler 2
make: *** [Makefile bindeb-pkg] Fehler 2
Naja -- ist kein Beinbruch.#!/usr/bin/make -f
srctree ?= .
build-indep:
build-arch:
$(MAKE) KERNELRELEASE=5.11.1 ARCH=x86 KBUILD_BUILD_VERSION=5 -f $(srctree)/Makefile
build: build-arch
binary-indep:
binary-arch: build-arch
$(MAKE) KERNELRELEASE=5.11.1 ARCH=x86 KBUILD_BUILD_VERSION=5 -f $(srctree)/Makefile intdeb-pkg
clean:
rm -rf debian/*tmp debian/files
$(MAKE) clean
binary: binary-arch
Re: falsche Syntax: Versionsnummer
Aus Deinem Ablauf werde ich nicht schlau. Schildere doch mal, was _genau_ Du da machst.
Du lädst den Kernel von kernel.org, entpackst ihn, und dann?
In /boot sollten eine config-5.11.1, eine initrd.img-5.11.1, eine System.map-5.11.1 und der vmlinuz-5.11.1 vorhanden sein. Ist das so?
Wenn ja, brauchst Du nur meine angegebenen Schritte 1 oder 3 ausführen.
Nochmal, laß die Version weg, daß es ein amd64 ist, weißt Du doch.
Ansonsten lies man make, da finden sich auch Hinweise zur Versionskontrolle.
Du lädst den Kernel von kernel.org, entpackst ihn, und dann?
In /boot sollten eine config-5.11.1, eine initrd.img-5.11.1, eine System.map-5.11.1 und der vmlinuz-5.11.1 vorhanden sein. Ist das so?
Wenn ja, brauchst Du nur meine angegebenen Schritte 1 oder 3 ausführen.
Nochmal, laß die Version weg, daß es ein amd64 ist, weißt Du doch.
Ansonsten lies man make, da finden sich auch Hinweise zur Versionskontrolle.
Re: falsche Syntax: Versionsnummer
Eigentlich nichts Besonderes:Aus Deinem Ablauf werde ich nicht schlau. Schildere doch mal, was _genau_ Du da machst.
Du lädst den Kernel von kernel.org, entpackst ihn, und dann?
Link "ln -s linux-5.11.1 linux"
"cd linux"
"make nconfig" (oder menuconfig). config Speichern.
make clean
make deb-pkg (oder wie du gesagt hat: bindeb-pkg)
Das führte zu den genannten Fehlern
--
Unter /boot waren config-5.11.1, initrd.img-5.11.1, System.map-5.11.1 und vmlinuz-5.11.1 natürlich noch nicht vorhanden, weil ich die das erste Mal kompiliere. Aber das ist nicht das Problem.
Bei mir gibt es jetzt in /boot (5.10 -- debian und 5.11.1 -- kernel.org)
config-5.10.0-3-amd64
config-5.11.1-x86_64
initrd.img-5.10.0-3-amd64
initrd.img-5.11.1-x86_64
System.map-5.10.0-3-amd64
System.map-5.11.1-x86_64
vmlinuz-5.10.0-3-amd64
vmlinuz-5.11.1-x86_64
Die Bezeichnung passt auch: uname -r => 5.11.1-x86_64
Der konfigurierte Kernel lasst sich mit "make all" kompilieren, installieren, booten und läuft ohne Probleme. Nur das muss ich noch machen => bluetooth -- hci0: Failed to load Intel firmware -- aber das hat nichts mit den Fehlern zu tun -- habe ich beim konfigurieren vergessen.
Re: falsche Syntax: Versionsnummer
Den Link anfangs kannst Du Dir schenken, gehe doch direkt in den entpackten Kernel linux-5.11.1, von dort aus geht es dann weiter.
Ein make clean an dieser Stelle ergibt keinen Sinn, das führt man nur aus, wenn man in dem bereits kompilierten Verzeichnis eine Änderung vornehmen will.
Man geht also an den Anfang zurück.
Wenn man nur zusätzlich etwas erweitern will, der Rest schon ok ist, würde man also alle vorherigen Änderungen auf Null setzen, das wäre kontraproduktiv.
Ich habe gerade eben den 5.11.2 kompiliert, und habe diese Meldungen nicht.
Ich entpacke im Homeverzeichnis in einem Ordner Temp, da bleibt dann alles übersichtlich zusammen. Der Ordnername ist egal, bleibt Dir überlassen.
Du hast ja jetzt eine config-5.11.1, dann kannst Du ja nochmal mit dem 5.11.2 einen neuen Versuch starten. Diesmal mit make oldconfig und Schritt 3.
Hinweis:
Ein bindeb-pkg erstellt nur die Pakete für Kernel und Headers, geht schneller und ist nicht so umfangreich wie ein deb-pkg.
Dabei wird auch ein debugger-Paket erstellt, was man nicht braucht und das Kompilieren verzögert. Den Befehl sollte man also nicht verwenden.
Ein make clean an dieser Stelle ergibt keinen Sinn, das führt man nur aus, wenn man in dem bereits kompilierten Verzeichnis eine Änderung vornehmen will.
Man geht also an den Anfang zurück.
Wenn man nur zusätzlich etwas erweitern will, der Rest schon ok ist, würde man also alle vorherigen Änderungen auf Null setzen, das wäre kontraproduktiv.
Ich habe gerade eben den 5.11.2 kompiliert, und habe diese Meldungen nicht.
Ich entpacke im Homeverzeichnis in einem Ordner Temp, da bleibt dann alles übersichtlich zusammen. Der Ordnername ist egal, bleibt Dir überlassen.
Du hast ja jetzt eine config-5.11.1, dann kannst Du ja nochmal mit dem 5.11.2 einen neuen Versuch starten. Diesmal mit make oldconfig und Schritt 3.
Hinweis:
Ein bindeb-pkg erstellt nur die Pakete für Kernel und Headers, geht schneller und ist nicht so umfangreich wie ein deb-pkg.
Dabei wird auch ein debugger-Paket erstellt, was man nicht braucht und das Kompilieren verzögert. Den Befehl sollte man also nicht verwenden.
Re: falsche Syntax: Versionsnummer
Jetzt habe ich in der Kernelconfig stehen:
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_BUILD_SALT="zen"
und die Warnungen kommen nicht mehr ...
Found linux image: /boot/vmlinuz-5.11.1
Found initrd image: /boot/initrd.img-5.11.1
Found linux image: /boot/vmlinuz-5.10.0-3-amd64
Found initrd image: /boot/initrd.img-5.10.0-3-amd64
Found Gentoo/Linux on /dev/sdb1
Verstehe das alles aber nicht.
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_BUILD_SALT="zen"
und die Warnungen kommen nicht mehr ...
Found linux image: /boot/vmlinuz-5.11.1
Found initrd image: /boot/initrd.img-5.11.1
Found linux image: /boot/vmlinuz-5.10.0-3-amd64
Found initrd image: /boot/initrd.img-5.10.0-3-amd64
Found Gentoo/Linux on /dev/sdb1
Verstehe das alles aber nicht.
Re: falsche Syntax: Versionsnummer
Das "zen" solltest Du besser weglassen:
Dann ist es doch gut, wenn keine Warnungen/Fehler mehr auftreten...config BUILD_SALT
string "Build ID Salt"
default ""
help
The build ID is used to link binaries and their debug info. Setting
this option will use the value in the calculation of the build id.
This is mostly useful for distributions which want to ensure the
build is unique between builds. It's safe to leave the default.