![为什么 Linux 内核包含所有设备的文件?](https://linux22.com/image/1380946/%E4%B8%BA%E4%BB%80%E4%B9%88%20Linux%20%E5%86%85%E6%A0%B8%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E8%AE%BE%E5%A4%87%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我的设备的内核包含太多其他设备和我的设备无法使用的情况的文件。内核包含所有文件,比我的设备的文件大得多。
这是什么原因?为什么不删除不必要的文件并采用更小的内核呢?
答案1
如果您愿意,实际上您可以为您的特定硬件构建一个内核。我认为 gentoo 是一个很好的发行版,可以说明这一点 - 您可以运行针对您的硬件进行调整的内核或运行 genkernel。
您可以使用通用内核(它更大),或者根据需要构建内核。如果忘记了无法作为模块加载的内容,则需要重建整个内核。
当然有内核模块(即许多第三方驱动程序的打包方式),但拥有一组默认的合理内核模块的目的是能够知道您的系统是否能够正常工作。想象一下,由于您忘记启用 X,您需要花几个小时来编译内核(上次我尝试安装 gentoo 时就遇到过这种情况)!
但是你没有全部设备 - 您通常最终会自己安装驱动程序 - 例如,nvidia 在许多发行版的 noveau 软件包之外有单独的驱动程序(并且这在内核之外),许多网卡也是如此。还有一些机制只根据需要加载必要的模块
如果你想只需在精简的内核上安装一组最小的驱动程序,并根据您自己系统的规格进行构建即可。请记住,这需要大量工作,而通用内核通常是发行版开发人员选择的一套合理的权衡方案,因为它可靠。
答案2
因为开发人员永远不知道您将在 Linux 上使用哪种硬件。当然,您可以根据硬件自定义文件。