我是 gentoo 用户。编译内核时,有很多选项可以根据硬件情况启用。
我的问题是如何知道要启用/禁用什么,我知道我正在使用的硬件(处理器指令集、内核数量等/主板 NB 和 SB/sata 驱动器等),但仍然不知道在内核设置脚本中选择选项时,不清楚要做什么。
因此我遇到了一些奇怪的问题(在 #gentoo 的帮助下解决了)。有人可以给我一些关于这个主题的参考吗?人们如何学习做到这一点?
PS 请不要告诉我我不应该编译内核,这是我想学习的东西,也是为什么不获得一些速度并更好地利用我的硬件。
答案1
看到gentoo用户提出这样的问题,感觉很奇怪。
为了能够深思熟虑地进行选择,您需要了解每个选项的含义,因此您最好对内核是什么及其工作原理有一个基本的了解。
首先尝试阅读gentoo手册http://www.gentoo.org/doc/en/kernel-config.xml,http://kernelnewbies.org/或者google一下linux内核。
答案2
了解正确选项的最简单方法是获取“默认”.config 文件。大多数内核源代码都附带一个默认文件,其中包含为各种配置设置的所有正确选项。它们存储在主内核目录的 configs 目录中。如果您的架构/系统受支持,则输入可能会非常简单:
make rconfig
其中 rconfig 是系统默认 .config 文件的名称,位于 configs 文件夹中。
完成此操作后,您将在内核根目录中获得一个 .config 文件,其中设置了所有默认选项。此时,如果您输入:
make menuconfig
它将从新的 .config 文件加载所有默认设置,您的任务现在更容易了。您只需浏览选项,看看是否需要自己修改它们以满足任何特定的配置需求。 .config 文件是一个文本文件,可以通过 grep 来查看默认选项所在的位置。
假设您有一个默认配置文件,并且您正在了解如何在其中实现隧道支持。您可以简单地执行以下操作:
grep -in 'tun' .config
你会看到它输出以下行:
#CONFIG_TUN = N
一旦删除注释并使用 Y 而不是 N,内核配置就会更改以提供隧道驱动程序。
答案3
这就是我在新硬件上安装 gentoo 时所做的事情。
从默认配置开始内核种子
检查 (
lsmod
,modinfo
) livecd 加载的模块(我正在运行它来安装 gentoo)并启用它们
这让我开始使用可启动内核,之后我继续调整选项,并保留该内核作为备份。
答案4
编译自己的内核不会获得更好的速度。你会获得痛苦的经历和记忆。如果做得正确,您将节省数百千字节的内存。
至少,运行make localmodconfig
以包含当前加载到内核中的所有驱动程序。这将确保您不会丢失当前正在使用的某些关键驱动程序。
您仍然应该包含额外的驱动程序作为所有 USB 和您有一天想要添加的其他可热插拔设备的模块。检查您是否也将直接启动所需的所有内容都包含在内核中。如果您只包含 initramfs 功能并将其他所有内容都作为一个模块,那么在这方面会更容易 — 但不要忘记重建 initramfs。