Repositório do kernel do git do Ubuntu
Os debian/metadados que contêm as configurações e a árvore do kernel são rastreados em um único repositório git por release: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
A repo em seguida, tem uma tag para cada pacote kernel, por exemplo, no meu Ubuntu 18.04, eu tenho o pacote linux-image-4.15.0-36-generic, que eu estou supondo que corresponde à tag: Ubuntu-4.15.0-36.39.
https://help.ubuntu.com/community/Kernel/Compile explica como compilar o kernel e, portanto, como configurá-lo e como as configurações são mescladas na configuração final.
Todas as configurações parecem estar embaixo das debian.master/config/ARCHquais contém:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
então eu acho que isso linux-image-4.15.0-36-genericirá se mesclar config.common.ubuntu, config.common.amd64e config.flavour.generic.
O script que faz a mesclagem parece ser debian / scripts / misc / kernelconfig e contém o comentário:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: também existe um debian.master/config/annotationsarquivo que parece conter o valor de cada configuração para cada arco, como isso é usado?
Alguém deve confirmar tudo isso executando scripts de construção no modo detalhado de alguma forma, mas agora estou com preguiça, você pode construir com:
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
Confirmei que isso produz exatamente a mesma configuração que tenho localmente:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Observe que o repositório git do kernel do Ubuntu também possui milhares de patches no Linux upstream, portanto, apenas obter a configuração correta não será suficiente para reproduzir o comportamento.
Também podemos verificar três vezes se o kernel que construímos corresponde ao pacote, observando o início da dmesginicialização, que contém:
[ 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 no .deb
Conforme mencionado por outros, a configuração completa final também está presente em:
/boot/config-4.15.0-36-generic
que correspondem a cada imagem do kernel do Linux:
/boot/vmlinuz-4.15.0-36-generic
Portanto, para outras versões, podemos descobrir de qual pacote elas vêm:
dpkg -S /boot/config-4.15.0-36-generic
que dá:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
e então você pode apenas baixar o .debde https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
e extraí-lo para obter o config:
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
Testado no Ubuntu 18.04.
/boot-config-*que tentar imitar a magia que eles usam para gerá-los automaticamente no momento da construção. É uma pena que não há uma maneira de pegar um arquivo de um pacote on-line (ou há?)