首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新内核的安装不写到/var/run/reboot- Intel x64系统上是必需的(但在RasPi上工作)

新内核的安装不写到/var/run/reboot- Intel x64系统上是必需的(但在RasPi上工作)
EN

Ask Ubuntu用户
提问于 2022-05-25 07:18:58
回答 1查看 621关注 0票数 1

我在Intel (amd64)和Raspberry (arm64)上都安装了UbuntuServer22.04。

使用上一次内核更新(由unattended-upgrades安装),/var/run/reboot-required/var/run/reboot-required.pkgs文件还没有在Intel系统上创建(因此系统没有被标记为重新启动),但是在RasPi上,这是正常工作的。

Log条目来自/var/log/apt/history.log

英特尔Atom:

代码语言:javascript
运行
复制
Start-Date: 2022-05-24  06:52:55
Commandline: /usr/bin/unattended-upgrade
Install: linux-image-5.15.0-33-generic:amd64 (5.15.0-33.34, automatic), linux-headers-5.15.0-33-generic:amd64 (5.15.0-33.34, automatic), linux-modules-5.15.0-33-generic:amd64 (5.15.0-33.34, automatic), linux-headers-5.15.0-33:amd64 (5.15.0-33.34, automatic), linux-modules-extra-5.15.0-33-generic:amd64 (5.15.0-33.34, automatic)
Upgrade: linux-headers-generic:amd64 (5.15.0.30.33, 5.15.0.33.36), linux-generic:amd64 (5.15.0.30.33, 5.15.0.33.36), linux-image-generic:amd64 (5.15.0.30.33, 5.15.0.33.36)
End-Date: 2022-05-24  06:53:41

Start-Date: 2022-05-24  06:53:46
Commandline: /usr/bin/unattended-upgrade
Remove: linux-headers-5.15.0-27-generic:amd64 (5.15.0-27.28)
End-Date: 2022-05-24  06:53:47

Start-Date: 2022-05-24  06:53:51
Commandline: /usr/bin/unattended-upgrade
Remove: linux-modules-extra-5.15.0-27-generic:amd64 (5.15.0-27.28), linux-image-5.15.0-27-generic:amd64 (5.15.0-27.28), linux-modules-5.15.0-27-generic:amd64 (5.15.0-27.28)
End-Date: 2022-05-24  06:53:56

Start-Date: 2022-05-24  06:54:00
Commandline: /usr/bin/unattended-upgrade
Remove: linux-headers-5.15.0-27:amd64 (5.15.0-27.28)
End-Date: 2022-05-24  06:54:02

覆盆子皮:

代码语言:javascript
运行
复制
Start-Date: 2022-05-25  06:44:33
Commandline: /usr/bin/unattended-upgrade
Install: linux-modules-5.15.0-1008-raspi:arm64 (5.15.0-1008.8, automatic), linux-raspi-headers-5.15.0-1008:arm64 (5.15.0-1008.8, automatic), linux-image-5.15.0-1008-raspi:arm64 (5.15.0-1008.8, automatic), linux-headers-5.15.0-1008-raspi:arm64 (5.15.0-1008.8, automatic)
Upgrade: linux-headers-raspi:arm64 (5.15.0.1006.6, 5.15.0.1008.8), linux-raspi:arm64 (5.15.0.1006.6, 5.15.0.1008.8), linux-image-raspi:arm64 (5.15.0.1006.6, 5.15.0.1008.8)
End-Date: 2022-05-25  06:46:44

Start-Date: 2022-05-25  06:47:16
Commandline: /usr/bin/unattended-upgrade
Remove: linux-modules-5.15.0-1005-raspi:arm64 (5.15.0-1005.5), linux-image-5.15.0-1005-raspi:arm64 (5.15.0-1005.5)
End-Date: 2022-05-25  06:47:20

Start-Date: 2022-05-25  06:47:26
Commandline: /usr/bin/unattended-upgrade
Remove: linux-headers-5.15.0-1005-raspi:arm64 (5.15.0-1005.5)
End-Date: 2022-05-25  06:47:29

Start-Date: 2022-05-25  06:47:35
Commandline: /usr/bin/unattended-upgrade
Remove: linux-raspi-headers-5.15.0-1005:arm64 (5.15.0-1005.5)
End-Date: 2022-05-25  06:47:42

Kernel历史 (5.15内核行):dpkg --list *linux-image* | grep "\-5.15" | grep -v "un"

Intel Atom:(现在安装了内核5.15.0-30和5.15.0-33 )

代码语言:javascript
运行
复制
rc  linux-image-5.15.0-27-generic          5.15.0-27.28  amd64        Signed kernel image generic
ii  linux-image-5.15.0-30-generic          5.15.0-30.31  amd64        Signed kernel image generic
ii  linux-image-5.15.0-33-generic          5.15.0-33.34  amd64        Signed kernel image generic

树莓Pi:(现在安装了5.15.0-1006和5.15.0-1008内核)

代码语言:javascript
运行
复制
rc  linux-image-5.15.0-1005-raspi          5.15.0-1005.5 arm64        Linux kernel image for version 5.15.0 on ARMv8 SMP
ii  linux-image-5.15.0-1006-raspi          5.15.0-1006.6 arm64        Linux kernel image for version 5.15.0 on ARMv8 SMP
ii  linux-image-5.15.0-1008-raspi          5.15.0-1008.8 arm64        Linux kernel image for version 5.15.0 on ARMv8 SMP

文件的Cat /var/run/reboot-required/var/run/reboot-required.pkgs

英特尔Atom:

代码语言:javascript
运行
复制
$ cat /var/run/reboot-required
cat: /var/run/reboot-required: No such file or directory

$ cat /var/run/reboot-required.pkgs
cat: /var/run/reboot-required.pkgs: No such file or directory

覆盆子皮:

代码语言:javascript
运行
复制
$ cat /var/run/reboot-required
*** System restart required ***

$ cat /var/run/reboot-required.pkgs
linux-image-5.15.0-1008-raspi
linux-base

我已经读过这个答案了,但是我已经在这两个系统上安装了包update-notifier-common。是的,符号链/run -> /var/run也存在。

这两个系统都已从20.04升级,在这里,它在这两个系统上都像预期的那样工作。还应该注意的是,对于其他包(如libssl3),我确信/var/run/reboot-required在这两个系统上都得到了更新。

这对我来说有点烦人,因为我使用这些文件,既可以知道内核更新已经安装,也可以在指定的时间触发手动重新启动。因此,任何关于如何解决此问题并编写/var/run/reboot-required文件的建议都将不胜感激。

注:我刚从一位朋友那里得到确认(也是与一台英特尔服务器),这里的文件是按预期编写的。所以看起来它也不是一个包错误。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2022-06-05 07:30:42

因此,现在,我的解决方案是每天使用cron运行以下脚本,以模仿apt/unattended-upgrade所需的行为:

代码语言:javascript
运行
复制
#!/bin/bash

# Get last reboot time and installed kernel
lastreboot=$(date -r /home/am/last_reboot +%s)
kernelinst=$(grep 'Upgrade: linux-headers-generic' /var/log/apt/history.log -A 1 -B 1 | tail -n 3)

# Get kernel version and install date
if [[ -n "$kernelinst" ]]
then
  kernelvers=$(echo "$kernelinst" | grep -oP 'linux-image-[0-9]+\.[0-9]+\.[0-9-]+[A-Z-a-z]+')
  kerneldate=$(date -d $(echo "$kernelinst" | grep 'End-Date' | awk '{print $2}') +%s)
fi

# Check if reboot-required.pkgs is already updated
if [[ -f /var/run/reboot-required.pkgs ]]
then
  kernelpkgs=$(grep "$kernelvers" /var/run/reboot-required.pkgs)
fi

# Write to reboot-required/reboot-required.pkgs if conditions are met
if [[ "$kerneldate" -gt "$lastreboot" ]] && [[ "$kernelvers" != "$kernelpkgs" ]]
then
  # Echo to /var/run/reboot-required
  echo "*** System restart required ***" | tee /var/run/reboot-required
  # Echo to /var/run/reboot-required.pkgs
  echo "$kernelvers" | tee -a /var/run/reboot-required.pkgs
  echo "linux-base" | tee -a /var/run/reboot-required.pkgs
else
  echo "Do nothing"
fi
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1410490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档