Dépôt de noyau Ubuntu Git
Les debian/
métadonnées qui contiennent les configurations et l'arborescence du noyau sont suivies à la fois dans un seul référentiel git par version: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
Le repo a alors une balise pour chaque paquet de noyau, par exemple dans mon Ubuntu 18.04, je le paquet linux-image-4.15.0-36-generic
, que je devine correspond à l'étiquette: Ubuntu-4.15.0-36.39
.
https://help.ubuntu.com/community/Kernel/Compile explique comment compiler le noyau, et donc comment le configurer et comment les configurations sont fusionnées dans la configuration finale.
Les configs semblent toutes être sous debian.master/config/ARCH
ce qui contient:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
donc je suppose que cela linux-image-4.15.0-36-generic
va fusionner config.common.ubuntu
, config.common.amd64
et config.flavour.generic
.
Le script qui effectue la fusion semble être debian / scripts / misc / kernelconfig et il contient le commentaire:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: il existe également un debian.master/config/annotations
fichier qui semble contenir la valeur de chaque config pour chaque arch, comment est-ce utilisé?
Quelqu'un devrait confirmer tout cela en exécutant les scripts de construction en mode détaillé, mais je suis paresseux maintenant, vous pouvez construire avec:
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
J'ai ensuite confirmé que cela produit exactement la même configuration que j'ai localement:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Notez que le dépôt git du noyau Ubuntu a également des milliers de correctifs au-dessus de Linux en amont, donc obtenir la bonne configuration ne sera pas suffisant pour reproduire le comportement.
Nous pouvons également vérifier que le noyau que nous avons construit correspond à celui empaqueté en regardant le début du dmesg
démarrage, qui contient:
[ 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 dans le .deb
Comme mentionné par d'autres, la configuration complète finale est également présente sous:
/boot/config-4.15.0-36-generic
qui correspondent à chaque image du noyau Linux:
/boot/vmlinuz-4.15.0-36-generic
Ainsi, pour les autres versions, nous pouvons trouver de quel package celles-ci proviennent:
dpkg -S /boot/config-4.15.0-36-generic
qui donne:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
puis vous pouvez simplement télécharger le .deb
depuis https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
et l'extraire pour obtenir la configuration:
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
Testé dans Ubuntu 18.04.
/boot-config-*
que d'essayer d'émuler la magie qu'ils utilisent pour les autogénérer au moment de la construction. Dommage qu'il n'y ait pas moyen de récupérer un fichier d'un package en ligne (ou est-ce qu'il y en a?)