Grub2 错误 grub-boot-success.service:主进程已退出,代码=exited,状态=1/FAILURE

Grub2 错误 grub-boot-success.service:主进程已退出,代码=exited,状态=1/FAILURE

我正在运行带有 Alma Linux 8.8.0 的 VPS,带有 WHM/cPanel 和大约 60 个用户、多个网站等。

我经常在服务器的“消息”日志中看到这些内容:

Nov 16 11:39:01 ark grub2-set-bootflag[312712]: Error setuid(0) failed: Operation not permitted
Nov 16 11:39:01 ark systemd[312226]: grub-boot-success.service: Main process exited, code=exited, status=1/FAILURE
Nov 16 11:39:01 ark systemd[312226]: grub-boot-success.service: Failed with result 'exit-code'.

这似乎是 grub 过去的一个已知问题 - 我找到了 2020 年的这个开发者讨论,其中讨论了解决方案:

https://bugs.mageia.org/show_bug.cgi?id=27269

他们建议更改文件中的一行

/usr/lib/systemd/user/grub-boot-success.service

从:

ExecStart=/usr/sbin/grub2-set-bootflag boot_success

到:

ExecStart=/usr/bin/pkexec /usr/sbin/grub2-set-bootflag boot_success

但后来的讨论中说,这个解决方案会触发密码输入请求(这对我来说没有用,因为这是一个系统运行命令)并继续提到这个错误已经解决。

我的系统正在运行 GRUB2:

[root@myserver systemd]# grub2-install --version
grub2-install (GRUB) 2.03

问题:

a) 我是否应该将 Grub 升级到 2.06(我相信这是最新版本)?如果是,我该如何安全地执行此操作 - 当然,我不希望任何事情冒着我的系统无法启动的风险。

b) 我是否应该将这些文件编辑为“正确”?替代行,或者这只会使系统需要输入密码?(我尝试过并在日志中看到“主进程已退出,代码=退出,状态=127 / n / a”表示“未找到命令”)

c) 我是不是应该什么都不做就没事了?

非常感谢!

答案1

我已经为此构建了一个修复程序,虽然它并不“理想”,而且我不知道是否需要它,但它有效(并从日志中删除了错误)。

在文件中:

/usr/lib/systemd/user/grub-boot-success.service

改变:

ExecStart=/usr/sbin/grub2-set-bootflag boot_success

到:

ExecStart=touch ./grubbootsuccessflag

这是因为 grub-boot-success.service 是在登录用户的文件系统中运行的,因此在运行此服务之前会触发两分钟的超时。然后会在用户主目录中创建此“标志”文件,该文件归该用户所有。

然后创建一个 cron 任务,每分钟以 root 身份运行以下批处理脚本:

removed=$(find /home/ -name 'grubbootsuccessflag' -delete -print)
if [[ -n "$removed" ]]; then
    /usr/sbin/grub2-set-bootflag boot_success
    echo "BOOT SUCCESS $removed"
fi

(谢谢https://stackoverflow.com/users/9072753/kamilcuk对于此脚本)

该脚本在所有用户主目录(以及效率低下的“/home/”中的所有其他目录)中搜索标志,如果找到则删除,然后由具有完全 setuid(0) 权限的 root 运行“服务”中不起作用的命令。

笔记:

  • 这可以变得更有效率——每分钟搜索整个“主”文件夹和子文件夹来查找此匹配项并不理想。
  • 我不确定实际服务器本身的重新启动是否也会在“home”文件夹以外的某个地方创建“grubbootsuccessflag”。

相关内容