Arch Linux auf systemd umstellen

Da es anscheinend noch keine Anleitung auf deutsch gibt wie man sein Arch Linux auf systemd umstellt, werde ich mich nun daran versuchen. Folgend werden wir ein Arch Linux vom alten init-System auf systemd umstellen.

Pakete installieren

Zu allererst ein volles Update des Systems mit dem Befehl:

pacman -Syu

Nun installieren wir systemd mit dem Befehl:

pacman -S systemd

Konfigurationsdateien erstellen

Jetzt legen wir folgende Dateien an mit dem jeweiligen Inhalt:

/etc/hostname

#hostname vom Rechner

 

/etc/vconsole.conf

KEYMAP="de-latin1.map.gz"
FONT=lat9w-16
FONT_MAP=8859-1_to_uni

 

/etc/locale.conf

LANG=de_DE.utf8
LC_COLLATE=C

 

/etc/timezone

Europe/Berlin

Kernelmodule eintragen

Wenn zusätzliche Kernelmodule geladen werden müssen die in der /etc/rc.conf stehen, so müssen diese noch extra eingerichtet werden, da die rc.conf bei systemd in diesem Falle ignoriert wird.

Legen Sie für jedes Kernelmodul das geladen werden soll im Ordner

/etc/modules-load.d/

eine Datei an. Hier am Beispiel vom vboxdrv

touch /etc/modules-load.d/vboxdrv.conf

und schreiben Sie in die Datei den Namen des Kernelmoduls

vboxdrv

Dies wiederholen Sie mit allen zu ladenen Kernelmodulen.

systemd einrichten

Nun kommen wir zur eigentlichen systemd Konfiguration. Zuerst müssen wir das target, also das Ziel festlegen, was in unserem Fall das Ursprüngliche init 5 oder bei systemd das graphical.target ist.

Mit dem Befehl

systemctl enable graphical.target

geben wir dies an systemd weiter.

Nun müssen wir noch alle Deamons die beim Start geladen werden sollen, angeben. Schauen Sie dazu in die /etc/rc.conf hinein und übertragen Sie alle zu startenden Deamons in systemd.

Steht in der rc.conf zum Beispiel

DAEMONS=(syslog-ng acpid dbus iptables networkmanager ntpd alsa cupsd crond kdm)

sehen die Befehle an systemd so aus:

systemctl enable syslog-ng.service
systemctl enable acpid.service
systemctl enable apcid.socket
systemctl enable iptables.service
systemctl enable NetworkManager.service
systemctl enable ntpd.service
systemctl enable cupsd.service
systemctl enable cronie.service
systemctl enable kdm.service

Ohne NetworkManager benutzen Sie einfach

systemctl enable dhcpcd@eth0.service

Tipp: Manche Deamons haben andere Namen im systemd. So heisst zum Beispiel cupsd bei systemd cups.service. Um den richtigen Namen zu finden kann mit

systemctl --all | grep cups

gesucht werden.

Altes init-System löschen

Nun müssen Sie noch das alte init-System löschen

pacman -R initscripts
pacman -S systemd-sysvcompat

Das war es auch schon. Nach einem Neustart sollte systemd den Rechner nun ohne Probleme hochfahren. Sollte ein Deamon nicht starten können Sie die Fehlermeldung mit

systemctl status [deamon].service

abrufen.

Mehr Informationen zum Thema systemd in Arch Linux gibt es in dem sehr ausführlichen Artikel unter https://wiki.archlinux.org/index.php/Systemd

Wichtig: Wer auf der sicheren Seite sein möchte kann initscripts auch erstmal behalten und mit dem Kernelparameter

init=/bin/systemd

ausprobieren ob systemd wie erwartet funktioniert. Ist dies der Fall kann dann das alte init-System wie im letzen Kapitel beschrieben gelöscht werden.

6 Gedanken zu “Arch Linux auf systemd umstellen

  1. Vielen Dank für die nachvollziehbare Anleitung, hat alles soweit gut funktioniert! Man muss nur manchmal beachten, dass die Daemons, die mit systemctl enable aktiviert werden nicht genau die gleiche Bezeichnung haben wie in der Liste in rc.conf, z.B. im Fall von crond und cronie. Cupsd.service konnte bei mir mit systemctl nicht gestartet werden, allerdings cups.service.

  2. Was mir auch noch aufgefallen ist, das manche Dienste kein Systemd Service Script haben. Diese müssen dann nur reinstalliert werden, damit diese Scripte generiert werden (War zumindest so bei meinem Notebook)

  3. Pingback: Booten im Jahr 2012 – slette.de

  4. Ok – danke fuer die Beschreibung. Habe gerade meinen Arbeits Laptop upgegraded, und dachte mir ich stelle auch gleich auf systemd um, da ab Januar ja wirklich langsam der support fuer initscripts und rc.conf etc, wegfaellt. Nach einem Neustart ging dann erstmal gar nichts. Ganz wichtig die init=/bin/systemd in menu.lst anzupassen und auch systemctl enable graphical.target nicht vergessen. Dankesehr.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *