systemd-systemctl-native: add a systemctl wrapper

The wrapper allows for enabling services at rootfs generation thus
allowing systemd to be used in ready-only filesystems.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
Otavio Salvador
2011-11-04 17:25:58 +00:00
committed by Koen Kooi
parent 7f5ca6706a
commit 79f35231a3
2 changed files with 64 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
DESCRIPTION = "Wrapper to enable of systemd services"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
inherit native
SRC_URI = "file://systemctl"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/systemctl ${D}${bindir}
}

View File

@@ -0,0 +1,51 @@
#!/bin/sh
ROOT=
# parse command line params
while [ $# != 0 ]; do
opt="$1"
case "$opt" in
enable)
shift
service="$1"
shift
;;
--root=*)
ROOT=${opt##--root=}
shift
;;
*)
echo "'$opt' is an unkown option; exiting with error"
exit 1
;;
esac
done
# find service file
for p in $ROOT/etc/systemd/system \
$ROOT/lib/systemd/system \
$ROOT/usr/lib/systemd/system; do
if [ -e $p/$service ]; then
service_file=$p/$service
service_file=${service_file##$ROOT}
fi
done
if [ -z "$service_file" ]; then
echo "'$service' couldn't be found; exiting with error"
exit 1
fi
# create the required symbolic links
wanted_by=$(grep WantedBy $ROOT/$service_file \
| sed 's,WantedBy=,,g' \
| tr ',' '\n' \
| grep '\.target$')
for r in $wanted_by; do
mkdir -p $ROOT/etc/systemd/system/$r.wants
ln -s $service_file $ROOT/etc/systemd/system/$r.wants
echo "Enabled $service for $wanted_by."
done