5

我尝试使用make defconfig编译内核,但正如预期的那样,它无法启动。我想知道像 Canonical 这样的内核供应商为 Ubuntu 使用什么 .config 文件,内核能够开箱即用地启动。当然,我仍然是一个初学者,配置各种参数,目前有点超出我的范围。

具体来说,我正在寻找加载一个基本的“你好,世界!” 模块到我正在运行的内核 2.6.32.41。为此,我需要针对用于运行内核的相同 .config 文件编译内核源代码。

4

4 回答 4

14

CONFIG_IKCONFIG_PROC如果您正在运行的内核是使用该选项编译的,您可以在以下位置获取配置/proc/config.gz

$ zcat /proc/config.gz >my_config

复制my_config到您的内核构建目录.config并运行make config以提示您输入配置文件中缺少的配置选项(这只会在您使用比正在运行的内核更新的内核源时发生)。然后,您应该能够编译具有与当前内核相同功能的新内核。

发行版通常使用自己的内核配置,其中大多数驱动程序被编译为模块,以便在请求相应的硬件时动态加载。此外,内核需要使用相关的引导选项(例如指定根文件系统的选项)来引导。您的 defconfig 内核可能因此无法启动。

于 2012-06-27T03:22:52.727 回答
6

我不知道如何获得“适合您的硬件”的配置,但是您可以通过查找以/boot/name 开头的文件来使用 Ubuntu 为您提供的配置config。可能不止一个,在这种情况下使用命令uname -r告诉你当前正在运行哪个内核,然后你可以使用适当的配置。

于 2012-06-23T18:33:23.597 回答
5

选项1:

启动系统的源代码

cd /usr/src/linux-headers-3.2.0-29;

这将生成 .config

sudo make oldconfig; 
vi .config

选项2:

zcat /proc/config.gz > my_config

选项3:

echo /boot/config* > my_config
于 2014-12-05T18:36:35.873 回答
0

“defconfig”通常与常用硬件挂钩 - x86 或 x86_64,也许不是最近的芯片组或主板。有时,就像我的联想笔记本电脑一样,只有最新的内核源代码,并启用一些配置选项,在谷歌搜索 bugzilla 数据库后,它才能工作。

就像 Jeff Welling 所说的,要获得使用中的配置,你可以在 /boot 目录下查看。我的 Fedora Core 也一样。但是,如果您想将基本程序编译为“内核模块”,并且仅表示“可加载内核模块”,则不需要编译内核源代码。你只需要当前版本的内核头文件。例如,Ubuntu 10.04 中的“apt-cache search”返回几个可能的选项:

linux-headers-2.6.38 - Header files related to Linux kernel, specifically,
linux-libc-dev - Linux Kernel Headers for development

Ubuntu 通常会修补股票内核(来自 kernel.org)以拥有自己的内核。如果你已经下载了股票内核,并尝试使用 /boot 的配置文件(或者有时你可以找到当前加载的配置为 /proc/config.gz,比如 Backtrack 的 Ubuntu,它基于 10.04 LTS),那么你可能需要使用名为“.config”的当前配置文件执行“make oldconfig”。然后“make oldconfig”将使用 .config 生成与内核源代码兼容的新 .config。

于 2012-06-25T03:18:38.553 回答