我有一台机器,最初使用的是 Linux 2.4.x,后来更新到了 Linux 2.6.x。现在它已经更新到了 Linux 2.6.18。每次都只更新了内核。原来的工具集(binutils、glibc……)保持不变(显然这并不理想)。
我的问题是,在内核更新和旧工具的情况下,我是否应该期望机器正常运行?或者,是否存在内核版本 xyz 破坏兼容性的情况,而您需要一套新的工具?
如果有关系的话,机器所做的最奇特的事情是软件 RAID(但这可能会消失)和 NFS。
答案1
试试运气:
*nix 通常设计得相当模块化——但我认为从 2.4.x 升级到 2.6.x 可能不太好,因为这是一个主要版本。这是因为有些程序在构建时会使用内核提供的标头和数据结构(keepalived 就是一个例子)。
考虑一个分布:
发行版存在的主要原因之一就是为了保持兼容性。在众多组织的支持下,许多兼容性问题会在它们进入稳定状态之前被发现和解决。我会考虑使用标准发行版,例如 CentOS/Redhat 或 Debian/Ubuntu。
不知道具体细节,我猜你之所以处于这种境地,是因为你无法通过新安装轻松地重建这台机器及其功能。如果你真的处于这种境地,那可就糟了。如果你发生故障并需要恢复,那将非常令人紧张。
答案2
大部分情况下,它会按预期工作。
您的用户进程可能正在使用已弃用的(或更糟的是,已退役的)Linux 系统调用,但通常这些调用不会在没有警告的情况下被退役。您看到过任何警告吗?
您可能还拥有使用比 binutils/glibc 版本中可用的更新的调用的内核/模块,但是如果您遇到这些,它将在构建时出错。
答案3
在大多数情况下,如果您已成功升级到 2.6.18,那么 2.6.32 甚至 3.0 应该不会出现重大问题。有些驱动程序名称更改可能会对您产生影响,但确保您的旧内核在 grub 中仍然可用,这应该可以帮助您避免需要使用救援光盘的情况。
您可能需要验证一些软件包是否与您即将使用的内核兼容,它们是 udev、initscripts(如果您使用 debian、redhat 或类似系统)、iptables/etables/arptables。