我正在使用 Maverick 和 kernel.org 上最新的可用内核,并自行构建它们。到目前为止,我的配置都是基于 Maverick 原版内核并接受make oldconfig
默认设置。我已经对 3 个主要版本这样做了,所以我认为我开始落后于当前的“标准”。
我想根据新的 Natty.config
文件重新构建我的内核。这在网上哪里可以找到吗?还是我必须下载整个内核包并解压?
编辑:我手动从最新的 Natty 内核包中提取了配置,我可以确认我应该早点这样做。我的旧“进化”配置和 Natty 默认配置之间有很多不同。现在,如果我能做到这一点而不用花 20 分钟寻找和下载包,那么我将来就可以重新设置了。
答案1
每个linux-image
软件包都包含其在 中构建的确切配置文件/boot/config-*
。要查看当前正在运行的 Linux 内核的配置文件,请执行以下操作:
less /boot/config-$(uname -r)
我已经向 Ubuntu 内核人员(在 Freenode 上#ubuntu-kernel
)核实过,他们证实了我的观点,即实际上不存在“这配置”,但它实际上是在构建/编译时通过包含许多Kconfig
文件而构建的;这些文件取决于确切的体系结构和目标(桌面/服务器/云)。您应该能够在以下位置阅读该(简短)对话:
可以使用以下方式找到该品种的列表packages.ubuntu.com以及以下搜索:
四处搜寻后,似乎软件包.config
中还包含linux-headers-*
。这些.deb
文件(是简单的.ar
存档,可以使用 打开file-roller
)每个只有大约 800 kB。如果您知道所需的特定目标、架构和版本,您可以直接从 Launchpad 或存档本身获取这些文件:
- archive.ubuntu.com/ubuntu/pool/main/l/linux/Linux 头文件-2.6*.deb
- 然后看看
/usr/src/linux-headers-2.6*/
.config
如果您想将整个过程自动化为一个命令,您可以尝试以下步骤;确保将其全部放在一行上!
wget -qO- http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-2.6.38-6-generic_2.6.38-6.34_i386.deb | dpkg-deb --fsys-tarfile /dev/stdin | tar Ox --wildcards './usr/src/*/.config'
希望有帮助!
答案2
内核团队在这里发布了 Natty 的配置:
资料来源:
答案3
在我的 Ubuntu 11.10 系统上,内核配置位于文件“/boot/config-3.0.0-12-generic”中。
答案4
Ubuntu git 内核存储库
包含配置的元debian/
数据和内核树在每个版本的单个 git 存储库中被跟踪:http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
然后,repo 为每个内核包都有一个标签,例如在我的 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/内核配置其中包含以下评论:
# 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
请注意,Ubuntu 内核 git repo 还在 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 中测试。