Erstellen eines neuen Vanilla-Kernels – einige Verwirrung mit den erstellten Debs

Erstellen eines neuen Vanilla-Kernels – einige Verwirrung mit den erstellten Debs

Also wollte ich versuchen, 2.6.39-4 zu bauen. Ich folgte dem Verfahren beiUbuntu-Wiki-Seite „GitKernelBuild“.

Kurz gesagt, laden Sie die tar.bz2-Datei herunter, extrahieren Sie sie, kopieren Sie meine alte Konfiguration, erstellen Sie oldconfig und dann

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Alles lief reibungslos, ich verwende diesen Kernel jetzt, bis auf eine Kleinigkeit: Ich kann keine anderen Module erstellen, keine DKMS erstellen usw. Weitere Informationen folgen:

Es werden zwei Deb-Dateien erstellt:

linux-image-2.6.39.4-custom_2.6.39.4-custom-10.00.Custom_amd64.deb
linux-headers-2.6.39.4-custom_2.6.39.4-custom-10.00.Custom_amd64.deb

Ich bin dadurch etwas verwirrt.

In normalen Ubuntu-Kerneln, sogar in denen in mainline-ppa, sind drei Deb-Dateien installiert. Zum Beispiel für den gleichen Kernel aus demHauptleitungs-PPAEs gibt diese Pakete:

linux-image-2.6.39-02063904-generic_2.6.39-02063904.201108040905_amd64.deb
linux-headers-2.6.39-02063904-generic_2.6.39-02063904.201108040905_amd64.deb
linux-headers-2.6.39-02063904_2.6.39-02063904.201108040905_all.deb

Wie Sie sehen, gibt es zwei verschiedene Header-Pakete. Tatsächlich erstellen die wichtigsten PPA-Pakete nach der Installation ein Verzeichnis unter /lib/modules:

/lib/modules/2.6.39-02063904-generic

In diesem Verzeichnis existiert ein Symlink, der auf die -generic-Header unter /usr/src verweist.

/lib/modules/2.6.39-02063904-generic/build -> /usr/src/linux-headers-2.6.39-02063904-generic

Unter /usr/src gibt es zwei verschiedene Verzeichnisse für diesen Kernel

/usr/src/linux-headers-2.6.39-02063904-generic
/usr/src/linux-headers-2.6.39-02063904

Nun, hier ist das Problem mit meinen eigenen beiden Paketen:

In /usr/src gibt es nur einen Ordner,

/usr/src/linux-headers-2.6.39.4-custom

Und unter /lib/modules gibt es einen Ordner

/lib/modules/linux-headers-2.6.39.4-custom

Das eigentliche Problem und der Grund, warum ich diesen Beitrag schreibe, ist dieser symbolische Link, der im obigen Verzeichnis erstellt wird:

/lib/modules/linux-headers-2.6.39.4-custom/build -> /home/nickped/projects/kernel/linux-2.6.39.4

Wie Sie sehen, wird auf das Verzeichnis zurückverwiesen, in dem ich den Kernel erstellt habe – der danach natürlich möglicherweise nicht mehr existiert. Dies führt dazu, dass andere Module (z. B. VMware, Virtualbox usw.) nicht erstellt werden können, da wichtige Dinge nicht gefunden werden können.

Warum passiert das? Wie kann es behoben werden? Warum werden zwei und nicht drei Deb-Dateien erstellt? Was ist der Zweck dieser drei verschiedenen Deb-Dateien, die offizielle Versionen haben, und wie können sie von anderen erstellt werden?

Antwort1

Um die erste Frage zu beantwortenWarum gibt es nur zwei Pakete?oderWarum gibt es nicht zwei Headerdateien?-- wenn sie plattformübergreifend kompiliert werden, werden sie so verpackt, dass sie für jeden Anwendungsfall geeignet sind. Durch die Aufteilung der Header in eine größereallePaket und ein kleineres arch-spezifisches, Sie sparen Bandbreite, indem Sie sie an Benutzer weitergeben. Wenn Sie es selbst tun, brauchen Sie es nur für einen Arch, also reicht eine Header-Datei.

Was den symbolischen Link zu Ihrem Quellspeicherort betrifft, hatte ich dasselbe Problem. Ich habe keine gute Lösung gefunden, außer auch ein linux_sourcePaket zu generieren (fügen Sie das einfach danach hinzu kernel_image kernel_headers) und dann den symbolischen Link manuell zu reparieren.

Es gibt tatsächlicheine Frage zu dieser Seite der Dinge bereits. Die langfristige Lösung scheint das Einfügen eines Skripts zu sein, das nach jeder Kernelinstallation ausgeführt wird und lediglich den Symink repariert.

verwandte Informationen