Ubuntu Livepatch 后自动重启

Ubuntu Livepatch 后自动重启

当 Ubuntu Livepatch 修补了内核但建议重新启动以启动到新版本时,motd 中会出现一条如下消息:

*** Livepatch has fixed kernel vulnerabilities. System restart recommended on the closest maintenance window

/run/reboot-required即使apt upgrade安装了新内核,它也不会受到影响。

我很幸运,每周都有一次维护窗口,我希望系统在 Livepatch 建议时自动重启。换句话说,我想要 Livepatch 的即时补丁功能,但我不需要长时间正常运行。

实现这一目标的最佳方法是什么?据我所知,有四种可能性:

  1. 有没有办法将 Livepatch 设置为触摸/run/reboot-required
  2. /run/reboot-required即使 Livepatch 处于活动状态,内核升级后是否有办法将 apt 设置为 touch ?
  3. 有没有办法将无人值守升级设置为在 Livepatch 建议时重新启动,即使/run/reboot-required不存在?
  4. 有没有办法通过编程来测试 Livepatch 是否建议重新启动?canonical-livepatch kernel-upgrade-required似乎会产生特定的返回代码,但这些似乎没有官方记录。

答案1

问题中描述的问题是 Ubuntu 对无人值守升级包所做的更改所产生的(可能无法预料的)副作用。

在 Ubuntu 解决此问题之前,我发现最好的解决方法是使用当前版本 Debian 中的这个脚本,它将在内核升级后恢复通常需要重启的行为,而不考虑 Livepatch:

#!/bin/sh

case "$DPKG_MAINTSCRIPT_PACKAGE::$DPKG_MAINTSCRIPT_NAME" in
   linux-image-extra*::postrm)
      exit 0;;
esac

if [ -d /var/run ]; then
    touch /var/run/reboot-required
    if ! grep -q "^$DPKG_MAINTSCRIPT_PACKAGE$" /var/run/reboot-required.pkgs 2> /dev/null ; then
        echo "$DPKG_MAINTSCRIPT_PACKAGE" >> /var/run/reboot-required.pkgs
    fi
fi

细节:

  • 将其作为新文件添加至/etc/kernel/postinst.d目录中(例如/etc/kernel/postinst.d/x-user-unattended-upgrades)。
  • 在某些情况下,它可能会重复在其他内核安装后挂钩脚本中发现的功能,但它不会造成危害。
  • 系统需要安装无人值守升级包才能使用该脚本。
  • 在撰写本文时,我已确认它适用于所有最新版本的 Ubuntu。如果您在遥远的未来某个时候遇到此答案,请仔细检查它是否仍然适用且相关。

Launchpad 中已记录了与此问题相关的一个错误。

相关内容