Хранилище ядра Ubuntu git
debian/Метаданные , который содержит конфигу, и дерево ядра отслеживаются как в одном хранилище мерзавца на выпуск: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
Затем репо имеет метку для каждого пакета ядра, например , в моей Ubuntu 18.04, у меня есть пакет linux-image-4.15.0-36-generic, который я предполагаю , что соответствует тегу: Ubuntu-4.15.0-36.39.
https://help.ubuntu.com/community/Kernel/Compile объясняет, как скомпилировать ядро, и, следовательно, как его настроить и как объединить конфиги в финальную конфигурацию.
Кажется, что все конфиги, под debian.master/config/ARCHкоторыми содержится:
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
поэтому я предполагаю , что linux-image-4.15.0-36-genericсольются config.common.ubuntu, config.common.amd64и config.flavour.generic.
Сценарий, выполняющий объединение, выглядит как debian / scripts / misc / kernelconfig и содержит комментарий:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
TODO: есть также debian.master/config/annotationsфайл, который, кажется, содержит значение для каждой конфигурации для каждой арки, как это используется?
Кто-то должен подтвердить все это, запустив сценарии сборки в подробном режиме, но я ленив, теперь вы можете создавать с помощью:
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
Затем я подтвердил, что это производит тот же конфиг, что и у меня локально:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Обратите внимание, что git-репозиторий с ядром Ubuntu также имеет тысячи патчей в верхней части Linux, поэтому просто получить правильную конфигурацию будет недостаточно для воспроизведения поведения.
Мы также можем трижды проверить, что построенное нами ядро соответствует упакованному, посмотрев в начало dmesgзагрузки, которая содержит:
[ 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)
Конфиг в .deb
Как уже упоминалось, окончательный полный конфиг также присутствует в:
/boot/config-4.15.0-36-generic
которые соответствуют каждому образу ядра Linux:
/boot/vmlinuz-4.15.0-36-generic
Итак, для других версий мы можем найти, из какого пакета они приходят:
dpkg -S /boot/config-4.15.0-36-generic
который дает:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
а затем вы можете просто скачать .debс https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
и распаковать его, чтобы получить конфигурацию:
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
Проверено в Ubuntu 18.04.
/boot-config-*чем пытаться эмулировать волшебство, которое они используют, чтобы автоматически генерировать их во время сборки. Обидно, что нет способа получить один файл из пакета онлайн (или есть?)