编译不同的内核版本

编译不同的内核版本

对于可以针对特定操作系统软件库成功编译和运行哪些版本的内核,是否有任何规则?

也就是说,假设我使用的是 Ubuntu 16.04,其中包括一些特定版本的 glibc、GTK 和大量其他支持软件,我想我不能只是编译任何内核版本并运行它,因为这些支持用户态组件中的大部分可能依赖于特定的内核版本。那么有什么基本规则吗?例如,在次要版本内就可以了,等等。

答案1

Linux 内核维护者非常重视向后兼容性。如果系统在某个版本的内核上运行,它也应该在任何更新的版本上运行。由于 Ubuntu 16.04 附带内核 4.4.0,因此任何比 4.4.0 更新的版本都应该可以工作。

没有太多软件依赖于最新的内核功能。除了 libc 和一些系统实用程序之外,大多数软件并不直接与内核交互,而是通过 libc 进行交互。有些系统必须在不重新启动的情况下保持运行很长一段时间,但人们希望运行较新的软件(通常在主要的、非常重要的、从未升级的安装的 chroot 中),因此 libc 往往不需要最新的内核版本。 Ubuntu 16.04 附带glibc 2.23它接受 2.6.32 之前的 Linux 内核。大多数 Ubuntu 16.04 软件应该在此类较旧的内核上运行,但某些系统软件(例如 systemd 和 udev)需要更新的内核:截至v229,您至少需要 3.11。

请注意,所有这些仅适用于用户层软件。如果您需要编译任何第三方驱动程序,则需要您自己进行。内部内核 API 经常更改。

相关内容