在没有initrd.img的情况下可以引导linux吗?我计划添加默认驱动程序作为内核的一部分,并完全避免initrd。
哪些模块应该成为内核的一部分而不是可加载的模块?
发布于 2011-03-17 11:50:38
是的,除非您的根卷位于LVM、dmcrypt分区上,或者需要运行命令才能访问它。
我已经好几年没在服务器上使用initrd了。您至少需要在以下内容中内置这些模块:
lspci/lsmod可以帮助您从当前运行的内核中获得帮助,查看其中的内容,并在编译之前使用menuconfig搜索选项来找到启用模块的位置。发布于 2021-10-23 18:13:12
计划添加默认驱动程序
然后从make defconfig && make开始,这是一个简洁的答案。首先是默认的(x86_64?) .config。
这样你就可以得到一个相当大的内核--今天是9MB。唯一的作为模块是网络过滤模块。
更定制的配置结果是4.5MB内核和一些模块(特别是i915模块)。
有些模块必须内置。见其他答案。十年后,我还应该显式地添加I/O设备: USB_HID用于键盘,FB (帧缓冲区)用于集成显卡,这取决于系统。
设备,似乎,不喜欢保持非驱动后,电源:图形卡模块和网络模块,加上一些巴士助手减少我的瓦茨从5.1到3.1。这有点违背直觉,原因是驱动程序将设备置于正确的挂起状态,或者以其他方式使设备平静下来。
虽然e1000e模块可以被移除(大约0.2瓦的功率似乎没有恢复;网络也会关闭),但i915甚至不能被移除。因此,这些“模块”的行为非常不同。
在make defconfig之后,并配备了来自initrd/udevd安装/发行版的lsmod,您可以通过make nconfig或类似的方式开始清除(甚至添加一些东西)。与Kconfig合作。
修改后的.config准备就绪:
make -jx bzImage
可以安装此映像(复制并提供KCL:root=)并启动测试。如果它有效,并且您还希望模块:
make -jx modules
make INSTALL_MOD_PATH=/maybe/mnt/elseroot modules_install不要忘记在重新配置之前保存和命名.config文件。
有些模块(netfilter,文件系统支持)可以很好地移动。模块与bzImage分开编译,可以节省内核重复编译的时间。否则,差别并不大,除非您关心lsmod输出的外观。
哦,然后systemd也有一些要求和期望。
https://unix.stackexchange.com/questions/9451
复制相似问题