我想为网络服务器创建一个最小的内核。
当你从源代码编译内核时,你如何获取硬件信息然后知道哪些驱动程序需要保留在内核中以便可以删除其余驱动程序?
答案1
你应该知道Arch 或Gentoo 等发行版;有专门的内核可用于虚拟化。例如,如果您想在 Virtuozzo 或 VMware 技术下运行 Linux。
使用该命令
lspci -n
并将其输出粘贴到http://kmuto.jp/debian/hcl;该站点为您提供了一般所需的内核模块。然后进入内核配置(例如menuconfig
)并按/搜索选项,找到它们的位置并激活它们。有一个名为“kernel seeds”的网站,它
.config
根据内核版本为通用内核制作文件。最好比较.config
您不确定的内核选项和模块。尝试自己构建内核并减少使用配置脚本;如果您想要与您的硬件相关的内核选项,那就更好了。
- 尝试使用最新版本的优质 live CD/USB 启动您的计算机。我建议菩提Linux或者胖狗/小狗 Linux。然后
lsmod
在那里查看已加载模块的列表。这些是您需要在内核中构建或作为模块添加到内核并在启动时加载的内核选项列表。
答案2
更新的内核附带了一个有用的脚本streamline_config.pl
1,它将帮助您创建一个.config
仅包含当前运行的内核所需的模块的文件。该脚本有一个带注释的“如何做”以及所有必要的步骤。
手动完成相同任务的另一种方法是使用localmodconfig
.解压并准备好下载的内核后,在新的自定义内核中插入您可能需要的任何外部设备,以便加载相关模块。
然后,您使用命令启动编译过程make localmodconfig
,您的.config
文件将根据以下内容生成:仅当前加载的模块。
在这两种情况下,最重要的是确保在lsmod
编译之前列出了所需的所有内容,否则这些模块将不会被选择进行构建。
第一次(几次)执行此操作时,请.config
在编译之前检查生成的文件,以检查它是否包含您需要的内容。
Arch Wiki 有一个传统方式编译页面并包括有关使用的详细信息localmodconfig
。
1.位于scripts/kconfig/