在业余时间,我帮助管理一个托管的 Debian Linux 服务器,该服务器服务于各种网站并为少数人托管电子邮件。它没有看到大量的流量,但我们当然希望正确地做事。然而,当我们第一次得到这台服务器时,有人为我们推出了一个自定义内核,它允许我们做各种我们想做的事情(比如 LVM、RAID 等)。那是几年前的事了,当然修复了各种安全错误等,我们宁愿只使用保持最新的库存内核进行操作。
问题是我们没有在推出自定义内核时启用的功能列表,并且几次尝试使用新内核导致内核无法启动。所以问题是——我们如何在使用现有的 Debian 内核的同时仍然能够拥有我们所依赖的所有功能?我需要首先收集哪些信息,然后采取哪些步骤来实现它?
首先,您需要评估您需要内核做什么。这意味着建立一个列表:
接下来,您应该尝试弄清楚当前内核如何处理它们,然后尝试将其转换为更新的内核。为此,您可以查看:
lspci
和的输出dmesg
- 这将帮助您编目硬件以及当前内核在启动时的作用lsmod
/proc/config.gz
于/boot
一旦您了解了您的硬件以及当前内核是如何处理它的,您就可以从 Debian 源代码中推出一个新内核。专注于获得首先启动的内核。一旦您可以使用新内核进入 shell,您就可以对其余功能采取增量方法。重新编译,根据需要添加特性或驱动程序(可能作为模块来加速这个过程),然后测试每个新内核。
关于 RAID 的最后一句话。如果是软件 RAID,您应该小心当前的 RAID 设置 - 较新的内核和系统将使用mdadm来管理此类事情,而较旧的系统倾向于使用raidtab方法。您的方法将改变您在内核中处理 RAID 的方式,尤其是自动检测位。查看优秀的Software RAID Howto了解更多信息。
如果构建您的自定义内核的人以debian 方式进行,他们可能在目录 /boot 中有一个名为 config-2.?.? 的文件。这将告诉您在构建内核时使用了哪些选项。
既然你不确定,我想我会先拿一个 Debian livecd开始,看看 livecd 上的股票内核是否允许你引导访问你的所有硬件和磁盘。如果您可以从 livecd 获得一切工作,那么您只需要安装该内核。
你提到你尝试了一个股票内核,它不会启动。究竟是什么错误,也许如果您发布消息我们可以提供更多帮助。
您当前的内核有 /proc/config.gz 或 /boot/config-XXX 吗?
如果你这样做,只需区分你的配置和 Debian 配置。
值得一提的是,Debian 配置几乎可以启用所有功能 - 肯定是 RAID、LVM 等。只要确保在安装 Debian 内核时构建 initrd,因为大多数东西在其内核中都是模块化的。
很长一段时间以来,我没有遇到任何必须为 Debian 服务器构建自定义内核的情况,除非我出于某种原因想要添加内核补丁。
设置您的 grub 以将您的自定义内核作为后备系统引导,以确保即使新内核无法引导,服务器也能重新启动。
使用它,您可以安全地
apt-get install
使用linux-image
您的硬件架构,这很可能是linux-image-686
或者linux-image-amd64
尝试重新启动到该内核。