Ubuntu repositori kernel git
The debian/
metadata yang berisi konfigurasi, dan pohon kernel dilacak baik dalam satu repositori git per rilis: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
Repo kemudian memiliki tag untuk setiap paket kernel, misalnya dalam saya Ubuntu 18.04, saya memiliki paket linux-image-4.15.0-36-generic
, yang aku menebak bersesuaian dengan tag: Ubuntu-4.15.0-36.39
.
https://help.ubuntu.com/community/Kernel/Compile menjelaskan cara mengkompilasi kernel, dan karenanya cara mengkonfigurasinya dan bagaimana konfigurasi digabung ke dalam konfigurasi terakhir.
Semua konfigurasi tampaknya berada di bawah debian.master/config/ARCH
yang berisi:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
jadi saya kira itu linux-image-4.15.0-36-generic
akan bergabung config.common.ubuntu
, config.common.amd64
dan config.flavour.generic
.
Skrip yang melakukan penggabungan tampaknya adalah debian / skrip / misc / kernelconfig dan berisi komentar:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: ada juga debian.master/config/annotations
file yang tampaknya mengandung nilai untuk setiap konfigurasi untuk setiap lengkungan, bagaimana itu digunakan?
Seseorang harus mengonfirmasi semua itu dengan menjalankan skrip build dalam mode verbose, tapi saya malas sekarang, Anda dapat membangun dengan:
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
Saya kemudian telah mengkonfirmasi bahwa ini menghasilkan konfigurasi yang persis sama yang saya miliki secara lokal:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Perhatikan bahwa repo kernel Ubuntu juga memiliki ribuan tambalan di atas Linux hulu, jadi mendapatkan konfigurasi yang tepat tidak akan cukup untuk mereproduksi perilaku.
Kami juga dapat memeriksa tiga kali bahwa kernel yang kami buat cocok dengan kernel yang dikemas dengan melihat pada awal dmesg
boot, yang berisi:
[ 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)
Konfigurasi dalam .deb
Seperti yang disebutkan oleh orang lain, konfigurasi penuh akhir juga hadir di bawah:
/boot/config-4.15.0-36-generic
yang sesuai dengan setiap gambar kernel Linux:
/boot/vmlinuz-4.15.0-36-generic
Jadi, untuk versi lain, kita dapat menemukan dari paket mana mereka berasal:
dpkg -S /boot/config-4.15.0-36-generic
pemberian yang mana:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
dan kemudian Anda bisa mengunduh .deb
dari https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
dan mengekstraknya untuk mendapatkan konfigurasi:
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
Diuji di Ubuntu 18.04.
/boot-config-*
daripada mencoba meniru sihir yang mereka gunakan untuk melakukan autogen pada saat build-time. Sayang sekali tidak ada cara untuk mengambil satu file dari paket online (atau ada?)