我刚刚编译了一个新内核并问自己:在编译过程中是什么决定了哪些内核模块静态构建在内核中?
然后我删除了/lib/modules
,重新启动,发现我的系统工作正常,所以看起来所有必要的模块都是静态构建在内核中的。
如果没有/lib/modules
,内核将加载 22 个模块。如果存在目录,它将加载 67 个模块。
答案1
您可以在配置过程中执行此操作,通常是在运行 或类似操作时make config
执行make menuconfig
。您可以将模块设置为内置(标记为*
)或模块化(标记为M
)。
您可以在 的屏幕截图中看到这方面的示例make menuconfig
,来自这里:
答案2
/kernel
鉴于您除了 之外还添加了标签/linux-kernel
,我假设您也对通用情况感兴趣。
自 1991 年以来,在 Solaris 中,除了基本的内核粘合代码、默认调度程序和分页器/交换器之外,所有内容都是动态加载的。
甚至根文件系统代码和模块加载器也是动态加载的。
这避免了手动配置内核的需要。鉴于 Solaris 也不需要配置与大小相关的功能(只要有足够的内存,就会在运行时自动创建新的内核对象),因此不需要在 Solaris 上进行任何手动配置。
我想知道 Linux 何时会达到这种自动化状态...但是,我相信这永远不会发生,因为理论上不需要的内核配置(请参阅 Solaris)被用作告诉用户的有趣方法hey, you are able to control the linux kernel
。