aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Graña2023-12-12 20:36:21 -0300
committerDaniel Graña2023-12-12 20:36:21 -0300
commit82b79e0413e97d41c27b62b0b6d8af248d6c04cd (patch)
tree14c8b7dcac34a129f8d0789cef463dc821aa90d5
parent15b87339dd4c106a63f611bf5557e0a3d08d7e5f (diff)
downloadaur-82b79e0413e97d41c27b62b0b6d8af248d6c04cd.tar.gz
Add busybox init style hook
-rw-r--r--.SRCINFO10
-rw-r--r--Makefile14
-rw-r--r--PKGBUILD15
-rwxr-xr-xsetup-initcpio-tailscale2
-rw-r--r--tailscale_hook19
-rw-r--r--tailscale_install49
6 files changed, 95 insertions, 14 deletions
diff --git a/.SRCINFO b/.SRCINFO
index e37e1e9909d5..7df1b88bc207 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,14 +1,18 @@
pkgbase = mkinitcpio-tailscale
pkgdesc = Collection of mkinitcpio install hooks to integrate Tailscale into initramfs
- pkgver = 0.1
- pkgrel = 6
+ pkgver = 0.2
+ pkgrel = 1
url = https://github.com/dangra/mkinitcpio-tailscale
arch = any
license = GPL-2.0-or-later
depends = mkinitcpio
source = sd-tailscale
+ source = tailscale_hook
+ source = tailscale_install
source = setup-initcpio-tailscale
sha256sums = c57ea49b3dd783b0b127e1e795edc048df4caa6928100f7f0483e8167ac3fb40
- sha256sums = 2630df3dadb9679cf8f9c38f8974e9f3f5be6c9a5694963104386d652e03eea8
+ sha256sums = d9c513e6b8eea84cbce8ca9c36edcf245e6a46ac29bdbf73e1b9001062dafdbd
+ sha256sums = 50333551578d53f0f43b2a3e4a9e1ed390f9217f844dcef4a353c3cce9763c86
+ sha256sums = 480dec84c705dc437cb6fb1715031c1ea8e48c6b89cb0fd8c86a3af7169062f7
pkgname = mkinitcpio-tailscale
diff --git a/Makefile b/Makefile
index 8de844eca7ca..17311759d065 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,12 @@
-.PHONY: update
+.PHONY: build install update checksums srcinfo
+
+
+build: update
+ makepkg -cCf
+
+install: update
+ makepkg -icCf
update: checksums srcinfo
@@ -9,8 +16,3 @@ checksums:
srcinfo:
makepkg --printsrcinfo >.SRCINFO
-build: update
- makepkg -cCf
-
-install: update
- makepkg -icCf
diff --git a/PKGBUILD b/PKGBUILD
index 2175d687921a..9fc496e517e8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,18 +1,25 @@
# Maintainer: Daniel Graña <dangra at gmail dot com>
pkgname=mkinitcpio-tailscale
-pkgver=0.1
-pkgrel=6
+pkgver=0.2
+pkgrel=1
pkgdesc="Collection of mkinitcpio install hooks to integrate Tailscale into initramfs"
arch=("any")
url="https://github.com/dangra/mkinitcpio-tailscale"
license=("GPL-2.0-or-later")
depends=("mkinitcpio")
-source=("sd-tailscale" "setup-initcpio-tailscale")
+source=("sd-tailscale"
+ "tailscale_hook"
+ "tailscale_install"
+ "setup-initcpio-tailscale")
sha256sums=('c57ea49b3dd783b0b127e1e795edc048df4caa6928100f7f0483e8167ac3fb40'
- '2630df3dadb9679cf8f9c38f8974e9f3f5be6c9a5694963104386d652e03eea8')
+ 'd9c513e6b8eea84cbce8ca9c36edcf245e6a46ac29bdbf73e1b9001062dafdbd'
+ '50333551578d53f0f43b2a3e4a9e1ed390f9217f844dcef4a353c3cce9763c86'
+ '480dec84c705dc437cb6fb1715031c1ea8e48c6b89cb0fd8c86a3af7169062f7')
package() {
install -m 755 -D ${srcdir}/setup-initcpio-tailscale ${pkgdir}/usr/bin/setup-initcpio-tailscale
install -m 644 -D ${srcdir}/sd-tailscale ${pkgdir}/usr/lib/initcpio/install/sd-tailscale
+ install -m 644 -D ${srcdir}/tailscale_install ${pkgdir}/usr/lib/initcpio/install/tailscale
+ install -m 644 -D ${srcdir}/tailscale_hook ${pkgdir}/usr/lib/initcpio/hooks/tailscale
}
diff --git a/setup-initcpio-tailscale b/setup-initcpio-tailscale
index 741775e57976..92f50c386e28 100755
--- a/setup-initcpio-tailscale
+++ b/setup-initcpio-tailscale
@@ -79,7 +79,7 @@ info "tailscale successfully configured.
Next steps:
* Disable key expiry for '${TS_HOSTNAME}' at https://login.tailscale.com/admin/machines
* Review ${TS_STATEDIR}/default.env (as root)
- * Add 'systemd' and 'sd-tailscale' hooks to /etc/mkinitcpio.conf
+ * Edit /etc/mkinitcpio.conf and add 'tailscale' hook for busybox init, or sd-tailscale' hook for systemd init.
* Run 'mkinitcpio -P' to rebuild initramfs
* Check the README at https://github.com/dangra/mkinitcpio-tailscale for security considerations
diff --git a/tailscale_hook b/tailscale_hook
new file mode 100644
index 000000000000..c0529c5165e3
--- /dev/null
+++ b/tailscale_hook
@@ -0,0 +1,19 @@
+#!/usr/bin/env ash
+
+run_hook() (
+ echo "Starting Tailscale"
+ . /etc/default/tailscaled
+
+ # Launch tailscale agent in the background
+ /usr/sbin/tailscaled \
+ --state=/var/lib/tailscale/tailscaled.state \
+ --socket=/run/tailscale/tailscaled.sock \
+ --port="${PORT}" ${FLAGS} &
+
+ echo "$!" >/run/tailscaled.pid
+)
+
+run_cleanuphook() {
+ local pid=$(cat /run/tailscaled.pid 2>/dev/null)
+ [[ -z $pid ]] || kill "$pid"
+}
diff --git a/tailscale_install b/tailscale_install
new file mode 100644
index 000000000000..b18585f98440
--- /dev/null
+++ b/tailscale_install
@@ -0,0 +1,49 @@
+#!/usr/bin/env ash
+
+build() {
+ if ! pacman -Qi tailscale >/dev/null 2>&1; then
+ error "Package tailscale not installed"
+ return 1
+ fi
+
+ local setupdir="/etc/initcpio/tailscale"
+ for fn in tailscaled.state default.env; do
+ if ! [[ -r "${setupdir}/${fn}" && -s "${setupdir}/${fn}" ]]; then
+ error "Missing configuration file at ${setupdir}/${fn}. Have you run setup-initcpio-tailscale yet?"
+ return 1
+ fi
+ done
+ add_file ${setupdir}/default.env /etc/default/tailscaled
+ add_file ${setupdir}/tailscaled.state /var/lib/tailscale/tailscaled.state
+
+ # tailscale requirements
+ add_module tun
+ add_full_dir /usr/lib/xtables
+ add_all_modules netfilter
+ map add_binary iptables ip6tables tailscale tailscaled
+
+ add_run_script
+}
+
+help() {
+ cat <<-__EOF_HELP__
+ This hook enables tailscale service within busybox initramfs.
+
+ It copies all required files and binaries to initramfs and runs
+ tailscale daemon in the background. Remember to place it before
+ any other hook that blocks for input like the 'encrypt' hook.
+
+ Configuration is copied into the initramfs from:
+
+ * /etc/initcpio/tailscale/tailscaled.state to /var/lib/tailscale/tailscaled.state
+ * /etc/initcpio/tailscale/default.env to /etc/default/tailscaled
+
+ Run setup-initcpio-tailscale to initialize /etc/initcpio/tailscale/ configuration files.
+
+ This hook must come after the network is setup and before other hooks that blocks the
+ init chain. Place it before 'encrypt' if you plan to unlock a rootfs remotely.
+
+ __EOF_HELP__
+}
+
+# vim: noexpandtab