Repository del kernel di Ubuntu git
I debian/metadati che contengono le configurazioni e l'albero del kernel sono tracciati in un unico repository git per versione: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
Il repository ha quindi un tag per ogni pacchetto del kernel, ad esempio nel mio Ubuntu 18.04, ho il pacchetto linux-image-4.15.0-36-generic, che suppongo corrisponda al tag:Ubuntu-4.15.0-36.39 .
https://help.ubuntu.com/community/Kernel/Compile spiega come compilare il kernel, e quindi come configurarlo e come le config vengono unite nella configurazione finale.
Le configurazioni sembrano essere tutte sotto le debian.master/config/ARCHquali contiene:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
quindi immagino che linux-image-4.15.0-36-genericsi fonderanno config.common.ubuntu, config.common.amd64econfig.flavour.generic .
Lo script che esegue l'unione sembra essere debian / scripts / misc / kernelconfig e contiene il commento:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: c'è anche un debian.master/config/annotations file che sembra contenere il valore di ogni configurazione per ogni arco, come viene utilizzato?
Qualcuno dovrebbe confermare tutto ciò eseguendo gli script di build in modalità dettagliata in qualche modo, ma ora sono pigro, puoi costruire con:
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
Ho quindi confermato che questo produce esattamente la stessa configurazione che ho localmente:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Nota che il repository git del kernel Ubuntu ha anche migliaia di patch su Linux upstream, quindi ottenere la giusta configurazione non sarà sufficiente per riprodurre il comportamento.
Possiamo anche verificare tre volte che il kernel che abbiamo creato corrisponda a quello impacchettato guardando l'inizio del dmesgboot, che contiene:
[ 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 .deb
Come menzionato da altri, la configurazione completa finale è presente anche sotto:
/boot/config-4.15.0-36-generic
che corrispondono a ciascuna immagine del kernel Linux:
/boot/vmlinuz-4.15.0-36-generic
Quindi, per altre versioni, possiamo trovare da quale pacchetto provengono:
dpkg -S /boot/config-4.15.0-36-generic
che dà:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
e quindi puoi semplicemente scaricare .debda https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
ed estrarlo per ottenere la configurazione:
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
Testato su Ubuntu 18.04.
/boot-config-*piuttosto che provare a emulare la procedura guidata che usano per autogenerarli in fase di compilazione. È un peccato che non ci sia modo di prendere un file da un pacchetto online (o c'è?)