为什么要构建自定义内核?

tbe*_*nz9 7 kernel linux-kernel

我的几个同事一直在为他们的工作站和服务器构建自定义内核。

构建自定义内核有什么优点/缺点?

为什么要构建自定义内核?

dar*_*nir 6

选择手动编译内核的原因有多种。我会试着列出我能想到的,在我的脑海里:

  1. 一个经常被引用但通常是错误的理由是它会运行得更快。通过为特定系统定制编译器标志,理论上您可以创建更好的字节码。但是对于现代编译器,情况并非如此。
  2. 更改某些编译时标志。例如:编译包含调试信息的内核。尽管这可能不适用于您的情况。
  3. 从内核中删除不必要的部分。但正如@jordanm 所说,这些部分几乎总是模块,可能无关紧要。但在某些情况下,差异可能很大。
  4. 出于学术目的。编译您自己的内核可以帮助您了解有关构建过程的很多信息。此外,还可以了解各种配置选项。
  5. 更换某些模块。例如,使用 con kolivas 补丁集、实时补丁集等。
  6. 在某些情况下,尤其是在嵌入式场景中,可以向内核添加自定义系统调用。这些也需要自定义编译。
  7. 有些人喜欢我,就是喜欢摆弄系统。并且会随机改变一些配置选项,看看最终系统如何响应它们。然而,这样的人很少而且很少见。