在 Debian 预置期间安排在后台重新启动

在 Debian 预置期间安排在后台重新启动

我想在 Debian 预置中安排一个 30 分钟的重新启动计时器,以便在出现下载问题等情况下安装不会挂起(需要现场人员手动重新启动机器)。

我正在从网络启动映像安装。

以下不起作用(它不在后台运行,而是在前台运行):

d-i preseed/early_command string reboot -d 1800 &
d-i preseed/early_command string sh -c 'reboot -d 1800 &' ;

我认为罪魁祸首是log-output这里使用的程序https://salsa.debian.org/installer-team/preseed/-/blob/master/preseed_command#L16

是否有其他方法可以完成计划的重新启动?如果我不需要安装额外的软件,那就太好了(同样,网络问题......)

答案1

编辑

我意识到screen可以在 Debian 的安装程序环境中使用(它是不是在 Ubuntu 中可用)。因此,您可以使用类似于此代码片段的预置配置。

d-i preseed/early_command string \
  screen -dmS reboot /sbin/reboot -d 60

原帖

在深入研究之后,我认为要完全按照您想要的方式进行操作,您需要编写一个能够正确后台运行并执行的守护进程/sbin/reboot。您可以用来early_command下载并运行编译后的守护进程。

我首先测试以下预置片段。它在 Ubuntu 20.04 中按照您想要的方式工作,但是不是在 Debian Buster 中工作(如您所经历的)。

d-i preseed/early_command string \
  /sbin/reboot -d 60 &

在两个安装程序中的 shell 中进行的测试表明,log-output这就是 Debian 表现不同的原因。

我发现那log-output.c修补过的处理“如果辅助进程启动一个未完全断开其标准文件描述符的守护进程”。虽然 Ubuntu 仍然有这个补丁,但 Debian恢复了它由于它引起的错误。

安装程序环境非常小。它没有nohupscreen、 或start-stop-daemon可用作后台进程的替代方法。因此,我认为您需要一个可以正确后台运行并运行您想要的命令的可执行文件。

链接

相关内容