Seit Arch Linux komplett auf systemd umgestellt hat, gibt es die Datei /etc/rc.local nicht mehr. Will man trotzdem Befehle direkt beim Systemstart ausführen, kann man sich einen systemd Service schreiben.
Service schreiben
Services unter systemd sind viel einfacher aufgebaut, als die Startskripte unter SysVinit.
Die Services (egal ob aktiviert oder nicht), liegen im Verzeichnis /lib/systemd/system/. Dort kann man seine Services erstellen:
Ein simpler Service, welcher ein Befehl ausführt, der im Target multi-user (entspricht etwa dem Runlevel 2 unter SysVinit) geladen wird, sieht so aus:
#
# disablebluetooth.service
# systemd service: disable bluetooth at start
#
#########################################################################
[Unit]
Description=Disable Bluetooth
[Service]
Type=oneshot
ExecStart=/usr/sbin/rfkill block bluetooth
[Install]
WantedBy=multi-user.target
# EOF
Diese Beispieldatei ist ziemlich selbsterklärend. Beim betreten des Targets multi-user wird der Befehl unter ExecStart ausgeführt.
Wichtig ist, dass man den kompletten Pfad zum Programm/Skript angibt, weil $PATH nicht verfügbar ist. Man könnte jedoch auch bash -c
Sicherheit
Damit nach dem Erstellen des Services nicht andere Benutzer böse Befehle in den Service schreiben können, müssen noch die Berechtigungen passend gesetzt werden:
$ sudo chmod 644 /lib/systemd/system/disablebluetooth.service
$ ls -l /lib/systemd/system/disablebluetooth.service
-rw-r--r-- 1 root root 375 28. Feb 18:37 /lib/systemd/system/disablebluetooth.service
Service aktivieren
Da der Service noch nicht aktiviert ist, muss man dies noch tun:
ln -s '/usr/lib/systemd/system/disablebluetooth.service' '/etc/systemd/system/multi-user.target.wants/disablebluetooth.service'
Man sieht, dass systemctl einen Symlink im Verzeichnis /etc/systemd/system/multi-user.target.wants anlegt. Dies könnte man auch von Hand mittels ln -s machen.
Service starten
Der Service wird jetzt beim Betreten des Targets multi-user automatisch gestartet. Wer den Service jetzt sofort starten will, kann das so machen:
Links und weitere Informationen
- Systemd Service Configuration: http://www.freedesktop.org/software/systemd/man/systemd.service.html