Ubuntu git kernel repositorio
Los debian/
metadatos que contienen las configuraciones y el árbol de kernel se rastrean en un solo repositorio de git por versión: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
El repositorios, entonces tiene una etiqueta para cada paquete kernel, por ejemplo, en mi Ubuntu 18.04, tengo el paquete linux-image-4.15.0-36-generic
, que supongo corresponde a la etiqueta: Ubuntu-4.15.0-36.39
.
https://help.ubuntu.com/community/Kernel/Compile explica cómo compilar el kernel y, por lo tanto, cómo configurarlo y cómo las configuraciones se fusionan en la configuración final.
Las configuraciones parecen estar debajo de las debian.master/config/ARCH
cuales contiene:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
así que supongo que linux-image-4.15.0-36-generic
se fusionará config.common.ubuntu
, config.common.amd64
y config.flavour.generic
.
El script que hace la fusión parece ser debian / scripts / misc / kernelconfig y contiene el comentario:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: también hay un debian.master/config/annotations
archivo que parece contener el valor de cada configuración para cada arco, ¿cómo se usa?
Alguien debería confirmar todo eso ejecutando scripts de compilación en modo detallado de alguna manera, pero ahora soy flojo, puedes construir 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
Luego he confirmado que esto produce exactamente la misma configuración que tengo localmente:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Tenga en cuenta que el repositorio git de kernel de Ubuntu también tiene miles de parches en la parte superior de Linux ascendente, por lo que solo obtener la configuración correcta no será suficiente para reproducir el comportamiento.
También podemos verificar tres veces que el núcleo que creamos coincide con el empaquetado mirando el inicio del dmesg
arranque, que 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 en el .deb
Como mencionaron otros, la configuración completa final también está presente en:
/boot/config-4.15.0-36-generic
que corresponden a cada imagen del kernel de Linux:
/boot/vmlinuz-4.15.0-36-generic
Entonces, para otras versiones, podemos encontrar de qué paquete provienen:
dpkg -S /boot/config-4.15.0-36-generic
lo que da:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
y luego puedes descargarlo .deb
desde https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
y extraerlo para obtener la configuración:
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
Probado en Ubuntu 18.04.
/boot-config-*
que tratar de emular la magia que usan para generarlos automáticamente en el momento de la compilación. Es una pena que no haya una forma de obtener un archivo de un paquete en línea (¿o sí?)