[PATCH v2] debian: Replace SysV init script with native systemd unit

Clara Kowalsky <[email protected]> Fri, 31 Jul 2026 10:53:16 +0200
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
Debian trixie warns when relying on the generated compatibility unit for
/etc/init.d/xenomai.

This addresses

systemd-sysv-generator[1423]: SysV service '/etc/init.d/xenomai' lacks a native systemd unit file, automatically generating a unit file for compatibility.
systemd-sysv-generator[1423]: Please update package to include a native systemd unit file.
systemd-sysv-generator[1423]: ⚠ This compatibility logic is deprecated, expect removal soon. ⚠

The systemd unit uses the script /usr/lib/xenomai/xenomai-group for GID
handling.
See #54.

Signed-off-by: Clara Kowalsky <[email protected]>
---
 debian/libxenomai1.xenomai-group   | 26 +++++++++++++++++++++
 debian/libxenomai1.xenomai.init    | 36 ------------------------------
 debian/libxenomai1.xenomai.service | 12 ++++++++++
 debian/rules                       |  3 ++-
 4 files changed, 40 insertions(+), 37 deletions(-)
 create mode 100644 debian/libxenomai1.xenomai-group
 delete mode 100644 debian/libxenomai1.xenomai.init
 create mode 100644 debian/libxenomai1.xenomai.service

diff --git a/debian/libxenomai1.xenomai-group b/debian/libxenomai1.xenomai-group
new file mode 100644
index 000000000..ecb99ff20
--- /dev/null
+++ b/debian/libxenomai1.xenomai-group
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+
+GROUP=xenomai
+FILENAME=/sys/module/xenomai/parameters/allowed_group
+GID=$(getent group "$GROUP" | cut -d: -f3)
+
+test -e "$FILENAME" || exit 0
+test -n "$GID" || exit 0
+
+case "$1" in
+  start)
+        echo "$GID" > "$FILENAME"
+        ;;
+  stop)
+        echo "-1" > "$FILENAME"
+        ;;
+  restart|force-reload)
+        "$0" start
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/libxenomai1.xenomai.init b/debian/libxenomai1.xenomai.init
deleted file mode 100644
index 811fe25fd..000000000
--- a/debian/libxenomai1.xenomai.init
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh -e
-### BEGIN INIT INFO
-# Provides:          xenomai
-# Required-Start:    mountkernfs
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Set Xenomai group
-### END INIT INFO
-
-GROUP=xenomai
-INITNAME=/etc/init.d/xenomai
-FILENAME=/sys/module/xenomai/parameters/allowed_group
-GID=$(getent group $GROUP | cut -d: -f3)
-
-test -e $FILENAME || exit 0
-test -n "$GID" || exit 0
-
-case "$1" in
-  start)
-        echo "$GID" > $FILENAME
-        ;;
-  stop)
-        echo "-1" > $FILENAME
-        ;;
-  restart|force-reload)
-        $0 start
-        ;;
-  *)
-        echo "Usage: $INITNAME {start|stop|restart|force-reload}"
-        exit 1
-        ;;
-esac
-
-exit 0
-
diff --git a/debian/libxenomai1.xenomai.service b/debian/libxenomai1.xenomai.service
new file mode 100644
index 000000000..50ca3bcc1
--- /dev/null
+++ b/debian/libxenomai1.xenomai.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Set Xenomai group
+After=systemd-modules-load.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/xenomai/xenomai-group start
+ExecStop=/usr/lib/xenomai/xenomai-group stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/rules b/debian/rules
index 9e56de260..0ef5557fa 100755
--- a/debian/rules
+++ b/debian/rules
@@ -75,6 +75,7 @@ install: build
 	    cat $$f >> $(CURDIR)/debian/libxenomai1/etc/udev/xenomai.rules ; \
 	done
 	install -m 644 debian/libxenomai1.modprobe $(CURDIR)/debian/libxenomai1/etc/modprobe.d/xenomai.conf
+	install -D -m 755 debian/libxenomai1.xenomai-group $(CURDIR)/debian/libxenomai1/usr/lib/xenomai/xenomai-group
 	# remove empty directory
 	rm -rf $(CURDIR)/debian/xenomai-doc/usr/share/doc/xenomai-doc/ps
 	cp debian/libxenomai1.lintian $(CURDIR)/debian/libxenomai1/usr/share/lintian/overrides/libxenomai1
@@ -103,7 +104,7 @@ binary-indep: build install
 binary-arch: build install
 	dh_testdir -a
 	dh_testroot -a
-	dh_installinit -a --name=xenomai
+	dh_installsystemd -a --name=xenomai
 	dh_installman -a
 	dh_installdocs -a -A README
 	dh_link -a
-- 
2.54.0