闲暇时,我会帮助管理一个托管的 Debian Linux 服务器,该服务器为各种网站提供服务,并为少数人托管电子邮件。它不会产生大量流量,但我们当然希望能够妥善处理。然而,当我们第一次获得这台服务器时,有人为我们推出了一个自定义内核,这使我们能够做各种我们想做的事情(如 LVM、RAID 等)。那已经是几年前的事了,当然,已经修复了各种安全漏洞等,我们宁愿只使用保持最新的库存内核进行操作。
问题是,我们没有在推出自定义内核时启用的功能列表,并且尝试使用新内核的几次尝试都导致内核无法启动。所以问题是 - 我们如何使用现有的 Debian 内核,同时仍然能够拥有我们依赖的所有功能?我首先需要收集哪些信息,然后要采取哪些步骤来实现它?
答案1
首先,您需要评估内核到底需要做什么。这意味着要建立一个列表:
- 系统中的每个硬件
- 硬件相关功能,例如 LVM 和 RAID
- 网络功能,如路由、VPN、无线支持等。
- 文件系统,尤其你的根文件系统
- 其他特殊内核级需求
接下来,您应该尝试弄清楚当前内核如何处理它们,然后尝试将其转换为较新的内核。为此,您可以查看:
lspci
和的输出dmesg
- 这将帮助您对硬件进行分类以及当前内核在启动时执行的操作- 加载了哪些模块-查看
lsmod
- 内核配置(如果可用)- 有时它存在
/proc/config.gz
于/boot
了解硬件以及当前内核如何处理硬件后,您可以从 Debian 源代码中获取新内核。重点是获取最先启动的内核。一旦您能够使用新内核进入 shell,您就可以采用增量方法实现其余功能。重新编译,根据需要添加功能或驱动程序(可能作为模块来加速此过程),然后测试每个新内核。
最后再说一下 RAID。你应该小心当前的 RAID 设置,如果它是软件 RAID - 较新的内核和系统将使用管理用于管理这类事情,而旧系统往往使用突袭标签方法。您的方法将改变您在内核中处理 RAID 的方式,尤其是自动检测位。请查看出色的软件 RAID 指南了解更多信息。
答案2
如果构建你的自定义内核的人做了这件事Debian 方式目录 /boot 中可能有一个名为 config-2.?.? 的文件,它会告诉您在构建内核时使用了哪些选项。
既然你不确定,我想我会先拿一个 Debian活光盘看看 livecd 上的原版内核是否允许您引导访问所有硬件和磁盘。如果您可以通过 livecd 让所有东西正常工作,那么您只需要安装该内核即可。
您提到您尝试了原始内核,但无法启动。错误到底是什么?如果您发布消息,也许我们可以提供更多帮助。
答案3
您当前内核是否有 /proc/config.gz 或 /boot/config-XXX?
如果你这样做,只需比较你的配置和 Debian 的配置即可。
值得一提的是,Debian 配置几乎启用了所有内容 - 绝对是 RAID、LVM 等。只需确保在安装 Debian 内核时构建了 initrd,因为内核中的大多数东西都是模块化的。
我很久没有遇到过必须为 Debian 服务器构建自定义内核的情况了,除非我出于某种原因想要添加内核补丁。
答案4
设置 grub 来启动你的自定义内核后备系统以确保即使新内核启动失败,服务器也能重新启动。
使用它,您可以安全地apt-get install
为linux-image
您的硬件架构,最有可能的是linux-image-686
或linux-image-amd64
尝试重新启动到该内核。