![自动内核升级](https://linux22.com/image/38522/%E8%87%AA%E5%8A%A8%E5%86%85%E6%A0%B8%E5%8D%87%E7%BA%A7.png)
我正在编写一个 BASH 脚本,可以自动配置、构建和安装最新的内核映像。生成的内核应包含网络安全补丁集。它将使用之前的配置/proc/config.gz
,该配置是我在计算机上编译第一个自定义内核时手动创建的。
完全自动化该过程是否安全?它看起来像这样:
grsecurity
检查可用的最新内核- 下载
grsecurity
补丁集和匹配的内核源代码树 - 给内核打补丁
- 将之前的内核配置文件复制到内核源码目录中
- 运行
make olddefconfig
根据之前的配置来配置内核 - 编译内核
fakeroot make deb-pkg
- 安装生成的软件包并更改引导加载程序优先级
- 给我发邮件表明需要重新启动
主要问题:如果之前的配置工作正常,那么编译的内核是否可能olddefconfig
包含错误,导致系统无法启动?这非常重要,因为它是通过 SSH 访问的远程服务器,手动救援需要花费大量精力。
答案1
如果你无法承受失败,那就进行测试。
即使你可以承受失败,测试也是好的。如果可能的话,在专用测试环境中运行构建。在许多情况下,虚拟访客可以构成足够的测试系统。当您重新启动到更新的内核并且任何后续测试也成功完成时,才将新软件包复制并部署到远程系统。
现在回答您的主要问题:您的计划是否make olddefconfig
包含会导致启动失败的错误?
只有白痴才会相信任何系统都是完全万无一失的。当你想运行最近的内核,正如您所说,您将处于最前沿,并拥有与之相关的所有优势和风险。降低风险是选择一个长期版本,其中功能集被冻结,并且仅引入错误/安全修复。
无论如何:任何重新启动都有很小的失败风险。
旁注:过去我在数据中心花费了太多时间来修复服务器中的问题/配置错误,因此我建议每个人始终添加合适的远程管理选项(例如 HP ILO、Dell 的 DRAC、Oracle 的 ILOM 等或 KVM)通过 IP 网关)连接到远程服务器,使您可以在舒适的办公桌上解决大多数问题。