Alpine Linux:安装 virt 内核后如何最好地安全地更改内核启动顺序?

Alpine Linux:安装 virt 内核后如何最好地安全地更改内核启动顺序?

最好卸载 -vanilla 内核还是以某种方式保留并修改启动设置 - 如果是这样,当操作系统更新文件时不会丢失的最佳方法是什么extlinux.cfg

不久前,我部署了一个 Alpine 3.12 边缘虚拟机来托管 Wireguard 服务器供我个人使用。最近我做了一个apk软件包更新(定期安全修补等),它安装了更新版本的 linux-vanilla...这破坏了 Wireguard 支持。很多 RTNETLINK 错误,modprobewireguard 不高兴,无法从软件包安装中加载现有的wireguard 模块。很乱。

因此,我决定侧升级到 linux-virt 内核以获得包含 Wireguard 支持的 5.4 版本。 Ran apk add linux-virt,它安装了 5.4.38-0-virt(2020 年 5 月 4 日构建),非常棒。但是如何更改启动默认值...?

当我更新内核并使 Wireguard 工作时,我通过控制台手动覆盖 - 然后忘记了直到今天早些时候重新启动虚拟机我才解决了启动顺序问题。我仍然无法找出最好的解决方案:

  • 覆盖默认启动并指定 -virt 内核工作正常。但是,如果我出于某种原因重新启动虚拟机,extlinux 将默认使用 -vanilla 内核,该内核已失效
  • 尽管拆开,/boot/extlinux.cfg我真的不想手动修改修改后的cfg,因为它可以由Alpine的update-extlinux程序自动更新。
  • extlinux.cfg 中的默认选项指向menu.c32syslinux 模块,它呈现 .cfg 中包含的菜单。我不想丢失 GUI 启动选择菜单,但我不知道如何在不手动修改配置文件中的顺序的情况下更新默认内核(并且以后每当操作系统更新文件时都会丢失它)。

我希望让这个 Alpine VM 尽可能接近部署的规格,我很少接触它,所以每次使用它时都必须重新学习。除非必要,否则我宁愿不改变 extlinux,但是 extlinux 是否提供了我想要做的事情?

此外,在尝试清理已安装的软件包时,我运行了apk del linux-vanilla它,还卸载了 87 个固件包。决定重新安装并决定做什么...

我预计不需要这些,因为这是一个虚拟机,但我很困惑是否可以真正删除 -vanilla 内核和这些关联的固件包而不损害安装。

我是否应该为附加固件包保留安装的普通内核并在启动时以某种方式覆盖到 -virt 内核?或者正如我怀疑的那样,是否可以简单地apk del linux-vanilla让 linux-virt 5.4 LTS 内核无限期地工作,而不会因未安装固件包而产生其他不良影响?扫描列表后,我的实例似乎没有使用任何要删除的内容,但我不确定删除它们可能会出现什么意外后果。

FWIW,在修复原来的Wireguard问题的过程中,系统已经安装/升级了

  • linux-vanilla-4.19.118-r0
  • linux-virt-4.19.118-r0
  • linux-vanilla-dev-4.19.118-r0
  • linux-virt-5.4.38-r0(当前正在运行)

请原谅关于如何最好地修改 的相对新手的问题,我在互联网上搜索过,但update-extlinux似乎缺乏特别是用于修改 extlinux 启动屏幕的文档,特别是以兼容的方式。或者我的 Google fu 抛弃了我......

答案1

我想最好的方法取决于您的要求。我没有完整的答案,因为我不是 Alpine 用户,但以下是我解决听起来类似问题的方法:

我有一些运行带有实时内核的 D​​ebian 的嵌入式机器。常规内核往往具有稍高的版本号,因此无需任何额外的工作,它们将成为启动的默认内核。在我的嵌入式计算机上启动常规内核有时可能会导致工业环境中出现微妙的计时问题,从而可能导致保护机制关闭我们的设施。存在相当大的风险,有人可能会引导错误的内核而没有注意到自己的错误。因此,在这种情况下,我决定卸载这些计算机上的所有常规内核软件包。通常我喜欢有第二个内核作为后备,以防我在升级主内核后遇到问题,但在这种情况下,我还能够在几分钟内自动重新安装混乱的机器。因此我认为在这些机器上安装常规内核的风险大于好处。

我决定不搞乱引导加载程序配置,因为我喜欢它简单可靠 - 并且允许配置管理系统修改引导加载程序配置会带来自身的风险。

在您的虚拟环境中,您可能会定期创建备份,因此我可能倾向于简单地卸载您不打算使用的内核。 Debian 提供了名为 linux-image-rt-amd64 的虚拟软件包,它始终依赖于最新的实时内核(例如 linux-image-4.19.0-8-rt-amd64)。我正在安装这个虚拟包并删除 linux-image-amd64 (没有“rt”)。这很容易自动化/记录。对阿尔派wireguard-virt似乎依赖linux-virt又不依赖linux-vanilla。因此,我建议不要apk del linux-vanilla太担心随之删除的固件包(确保创建虚拟机的快照,以防万一)。

答案2

我知道这是一个旧问题,但尚未得到解答,我也遇到了这个问题,我终于解决了:

/etc/update-extlinux.conf,更改行

default=<...>

无论你想要什么默认值,就我而言,我必须改变

default=virt

default=edge

然后运行update-extlinux

相关内容