diff --git a/Makefile b/Makefile index 453d7a2..debfb68 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ MAN1PAGES = docs/imds.1 MAN5PAGES = docs/tiny-cloud.conf.5 docs/cloud-config.5 docs/alpine-config.5 MAN8PAGES = docs/tiny-cloud.8 -SUBPACKAGES = core openrc $(CLOUDS) +SUBPACKAGES = core init $(CLOUDS) .PHONY: check install $(SUBPACKAGES) @@ -31,9 +31,13 @@ core: $(MAN1PAGES) $(MAN5PAGES) $(MAN8PAGES) install -Dm755 -t "$(PREFIX)"/usr/sbin \ sbin/tiny-cloud -openrc: - install -Dm755 -t "$(PREFIX)"/etc/init.d \ - dist/openrc/* +init: + [ $(command -v rc-status) ] && \ + install -Dm755 -t "$(PREFIX)"/etc/init.d \ + dist/openrc/* + [ $(command -v systemctl) ] && \ + install -Dm755 -t "$(PREFIX)"/etc/systemd/system \ + dist/systemd/* $(CLOUDS): install -Dm644 -t "$(PREFIX)"/usr/lib/tiny-cloud/cloud/$@ \ diff --git a/dist/systemd/tiny-cloud-boot.service b/dist/systemd/tiny-cloud-boot.service new file mode 100644 index 0000000..c14565c --- /dev/null +++ b/dist/systemd/tiny-cloud-boot.service @@ -0,0 +1,10 @@ +[Unit] +Description=Tiny Cloud Bootstrap - boot phase + +[Service] +Type=oneshot +ExecStart=tiny-cloud boot +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/dist/systemd/tiny-cloud-early.service b/dist/systemd/tiny-cloud-early.service new file mode 100644 index 0000000..57ec913 --- /dev/null +++ b/dist/systemd/tiny-cloud-early.service @@ -0,0 +1,11 @@ +[Unit] +Description=Tiny Cloud Bootstrap - early phase +After=network.target + +[Service] +Type=oneshot +ExecStart=tiny-cloud early +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/dist/systemd/tiny-cloud-final.service b/dist/systemd/tiny-cloud-final.service new file mode 100644 index 0000000..8d0e69b --- /dev/null +++ b/dist/systemd/tiny-cloud-final.service @@ -0,0 +1,11 @@ +[Unit] +Description=Tiny Cloud Bootstrap - final phase +After=tiny-cloud-boot.service tiny-cloud-main.service tiny-cloud-early.service + +[Service] +Type=oneshot +ExecStart=tiny-cloud final +Restart=no + +[Install] +WantedBy=multi-user.target diff --git a/dist/systemd/tiny-cloud-main.service b/dist/systemd/tiny-cloud-main.service new file mode 100644 index 0000000..3c1fe20 --- /dev/null +++ b/dist/systemd/tiny-cloud-main.service @@ -0,0 +1,12 @@ +[Unit] +Description=Tiny Cloud Bootstrap - main phase +After=network.target sshd.service + +[Service] +Type=oneshot +ExecStart=tiny-cloud main +Restart=no + +[Install] +WantedBy=multi-user.target +