我正在使用 Debian preseed 构建一个“基本”Linux 操作系统,其中我创建了一个“firstboot.service”,在首次启动时运行,以设置设备特定设置 - 即主机名。我通过 clonezilla 将基本映像分发到各个信息亭,而不是在每个设备上运行预置。
为了强制首次启动 ConditionFirstBoot=true,我在创建 Clonezille 映像之前的最后一步中删除了文件 /etc/machine-id。
自定义完成后,如何从首次启动脚本自动重新启动自助服务终端?我需要执行此操作,直到我的自定义(即主机名)重新启动后,lightdm 才会自动登录。
我尝试强制重新启动,但它不起作用并且出现错误。
如何从第一个启动脚本执行重新启动?
Firstboot.service 内容 /lib/systemd/system/firstboot.service
[Unit]
Description=FirstBootSetup
ConditionFirstBoot=true
[Service]
Type=idle
RemainAfterExit=yes
ExecStart=/bin/bash /root/firstboot.bash
[Install]
WantedBy=multi-user.target
由firstboot.service /root/firstboot.bash运行的脚本
systemd-machine-id-setup
hostname "RANDOM"
if [ -f /etc/machine-id ]; then
systemctl --force --force reboot
endif
systemctl 状态首次启动
systemctl status firstboot
firstboot.service - FirstBootSetup
Loaded: loaded (/lib/systemd/system/firstboot.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2019-02-07 11:41:45 AEST; 1h 00min ago
Process: 562 ExecStart=/bin/bash /root/firstboot.bash (code=exited, status=2)
Main PID: 562 (code=exited, status=2)
答案1
事实证明,shell 脚本的语法不正确,shell 根本没有运行命令。正如问题评论中提到的,它应该有,但fi
实际上有endif
。