![利用 systemd 的 Linux 容器初始化脚本](https://linux22.com/image/224986/%E5%88%A9%E7%94%A8%20systemd%20%E7%9A%84%20Linux%20%E5%AE%B9%E5%99%A8%E5%88%9D%E5%A7%8B%E5%8C%96%E8%84%9A%E6%9C%AC.png)
我正在尝试为我的 systemd-nspawn 容器制作一个模板文件系统。容器文件系统将通过 btrfs 快照从此模板克隆。我需要容器在容器首次启动时运行初始化脚本。在阅读了很多文档之后,我编写了以下 systemd 单元。
/etc/systemd/system/init-script.service
[Unit]
Description=Init script
Wants=network-online.target first-boot-complete.target
After=network-online.target
Before=first-boot-complete.target
ConditionFirstBoot=yes
[Service]
Type=oneshot
ExecStart=/root/init-script.sh
但我仍然不太清楚 systemd 启动过程,我不确定哪个 systemd 目标应该拉入我的 init-script.service 。
我应该使用
[Unit]
DefaultDependencies=no
[Install]
WantedBy=sysinit.target
或者
[Install]
WantedBy=multi-user.target
初始化脚本的内容是设置该容器的服务的命令,例如设置Apache反向代理或Postfix。