我的几个同事一直在为他们的工作站和服务器构建定制内核。
构建自定义内核有哪些优点/缺点?
为什么我应该构建自定义内核?
答案1
人们选择手动编译内核的原因有多种。我将尝试列出我能想到的:
- 一个经常被引用但经常错误的原因是它会更快地发挥作用。通过为特定系统定制编译器标志,理论上您可以创建更好的字节码。但对于现代编译器来说,这种情况并不常见。
- 更改某些编译时标志。例如:编译包含调试信息的内核。尽管这可能不适用于您的情况。
- 从内核中删除不必要的部分。但正如 @jordanm 所说,这些部分几乎都是模块,可能并不重要。但在某些情况下,差异可能很大。
- 出于学术目的。编译您自己的内核可以帮助您了解有关构建过程的很多信息。此外,人们还可以了解各种配置选项。
- 替换某些模块。例如,使用 con kolivas 补丁集、实时补丁集等。
- 在某些情况下,特别是在嵌入式场景中,可以向内核添加自定义系统调用。这些也需要自定义编译。
- 有些人像我一样,只是喜欢修补系统。并会随机改变一些配置选项,看看最终系统如何响应它们。然而这样的人是很少见的。
答案2
通过创建自定义内核,您可以删除内核中一些不必要的部分,以减少开销(嵌入式设备)或安全漏洞(服务器)。