我想要实现的是,在第一次启动时立即启动一个新服务,以安装一行程序并为树莓派设置一些配置,以避免每次我想用以下程序创建新的树莓派时手动执行此操作。
使用 Ext2,我可以在 Windows 操作系统上通常无法访问的文件中添加/覆盖安装在 SD 卡上的文件。
我有一个名为 firstbootsetup.sh 的 bash 脚本:
#!/bin/sh
echo "Bump! I'm your first-boot script."
我有一个名为 firstboot.service 的 systemd 服务:
[Unit]
Description=This is first boot service
[Service]
ExecStart=/bin/bash /usr/bin/firstbootsetup.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
使用以下命令手动启用服务后:
sudo systemctl enable firstboot.service
重启后我可以查看日志
sudo journalctl -fu firstboot.service
看到脚本被执行,并且每 10 秒回显一次 bash 脚本中的行。这验证了它在启用后确实有效。
我看过systemd.preset — 服务启用预设但没有成功尝试在路径指定的配置文件中添加启用。使用我的系统,我在以下路径中进行了预设:
/lib/systemd/system-preset/90-systemd.preset
/usr/lib/systemd/user-preset/90-systemd.preset
这两个文件具有不同的启用功能,但向其中任何一个文件添加 firstboot.service 都无法启用该文件。
如果这些可以运行命令来启用 systemd 服务,那么使用 init.d 和 bash 脚本进行工作也可能会解决我的问题。