编译内核在 90 年代到 00 年代初的 Linux 用户中算是一种“入门仪式”。不过,现在几乎很少有人再这样做了,原因是什么呢?
什么是自定义内核?
Linux 内核是系统的核心,负责几乎所有重要的功能,类似于其他操作系统的内核。比如微软的 Windows 也有内核,但不同之处在于,Linux 的内核是可以修改并重新编译的,这意味着你可以按需重新设计自己的操作系统。
用户可以通过图形界面或终端菜单系统来选择需要的内核选项。虽然不必是专业开发人员,但具备一些基础计算机知识会有所帮助。
为什么要编译内核?
在 Linux 刚兴起时,内核是为兼容各种硬件而设计的,适用于多种设备,这种“通用”内核体积较大,以便兼容更多的系统。由于当时的电脑资源较为有限,编译一个精简的内核可以减少内存占用,使系统运行更流畅。
另外,默认内核可能不支持一些硬件,比如显卡或声卡。自定义内核可以加载相应驱动,从而更好地利用你的电脑。例如,我在安装 Slackware 时,默认内核缺少电源管理功能,所以每次关机后我都得手动按电源按钮关机,这让我回想起 1998 年的情景。
现在的情况如何?
如今,自定义内核更多是用于嵌入式开发等特定场景,因为这些系统需要尽可能小的内核。内核开发者也会编译内核以进行测试。像 Gentoo 这样的爱好者发行版在安装过程中仍然会要求用户编译内核。
你的发行版内核可能已经足够好
如今,即使是几年前的电脑也可以运行较大的通用内核而不会影响性能,因此默认内核很可能已经兼容你的机器。对于普通用户而言,没有必要自己编译内核。如果硬件能与系统匹配,使用发行版的默认内核通常是最明智的选择,因为开发者已经尽力优化了硬件支持和内核性能。
如果你使用的是现代机器,基本不必担心内存不足的问题。与其花时间“优化”内核,不如直接用来享受系统的功能。
自定义内核的支持可能不完善
自定义内核有一个明显的缺点:它与特定机器绑定,而通用内核可以支持更多种类的硬件。例如在 Ubuntu 中,开发者通常默认用户使用的是通用内核,因此系统更新可能会导致自定义内核不兼容。
如果遇到问题,去求助Linux论坛或 IRC,虽然热心网友会尽力帮你,但你可能还是得自己解决问题。
总之,现在的通用内核已经非常强大。如果你只是觉得编译内核很有趣,不妨尝试一下,但如果希望在遇到问题时能依靠社区帮助,还是用默认内核更妥当。或者,你可以选择在虚拟机或备用设备上试试,避免影响日常使用的主机。