Ubuntu Git-Kernel-Repository
Die debian/
Metadaten, die die Configs und den Kernelbaum enthalten, werden in einem einzigen Git-Repository pro Release nachverfolgt: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
Der Repo hat dann einen Tag für jedes Kernel - Paket, zum Beispiel in meinem Ubuntu 18.04, habe ich das Paket linux-image-4.15.0-36-generic
, das ich entspricht den Tag bin zu raten: Ubuntu-4.15.0-36.39
.
https://help.ubuntu.com/community/Kernel/Compile erklärt, wie der Kernel kompiliert wird und wie er konfiguriert wird und wie die Konfigurationsdateien in die endgültige Konfiguration eingefügt werden.
Die Configs scheinen alle unter debian.master/config/ARCH
denen zu sein:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
Ich vermute also, dass linux-image-4.15.0-36-generic
das verschmelzen wird config.common.ubuntu
, config.common.amd64
und config.flavour.generic
.
Das Skript, das das Zusammenführen durchführt, scheint debian / scripts / misc / kernelconfig zu sein und enthält den Kommentar:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: Es gibt auch eine debian.master/config/annotations
Datei, die den Wert für jede Konfiguration für jeden Bogen zu enthalten scheint. Wie wird das verwendet?
Jemand sollte das alles bestätigen, indem er Build-Skripte im ausführlichen Modus ausführt, aber ich bin faul, Sie können mit Folgendem arbeiten:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git linux
cd linux
git checkout Ubuntu-4.15.0-36.39
fakeroot debian/rules clean
debian/rules updateconfigs
fakeroot debian/rules build-generic
Ich habe dann bestätigt, dass dies genau die gleiche Konfiguration erzeugt, die ich lokal habe:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Beachten Sie, dass der Ubuntu-Kernel-Git-Repo auch Tausende von Patches auf Linux-Upstreams enthält. Daher reicht es nicht aus, die richtige Konfiguration zu verwenden, um das Verhalten zu reproduzieren.
Wir können auch überprüfen, ob der Kernel, den wir erstellt haben, mit dem gepackten Kernel übereinstimmt, indem wir uns den Start des dmesg
Bootes ansehen, der Folgendes enthält:
[ 0.000000] Linux version 4.15.0-36-generic (buildd@lgw01-amd64-031) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 (Ubuntu 4.15.0-36.39-generic 4.15.18)
Config in der .deb
Wie von anderen erwähnt, ist die endgültige vollständige Konfiguration auch verfügbar unter:
/boot/config-4.15.0-36-generic
die jedem Linux-Kernel-Image entsprechen:
/boot/vmlinuz-4.15.0-36-generic
Für andere Versionen können wir also herausfinden, aus welchem Paket diese stammen:
dpkg -S /boot/config-4.15.0-36-generic
was gibt:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
und dann können Sie einfach die .deb
von https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic herunterladen
und extrahieren, um die Konfiguration zu erhalten:
mkdir config
cd config
wget http://mirrors.kernel.org/ubuntu/pool/main/l/linux/linux-modules-4.15.0-36-generic_4.15.0-36.39_amd64.deb
ar x linux-modules-4.15.0-36-generic_4.15.0-36.39_amd64.deb
tar -xvf data.tar.xz
cat ./boot/config-4.15.0-36-generic
Getestet in Ubuntu 18.04.
/boot-config-*
zu erfassen und zu extrahieren, als zu versuchen, die Assistenten zu emulieren, mit denen sie beim Erstellen automatisch generiert werden. Es ist eine Schande, dass es keine Möglichkeit gibt, eine Datei aus einem Paket online abzurufen (oder gibt es?)