[gelöscht]
Hi,
ich bin neugierig geworden und möchte gerne, da es in absehbarer Zeit so oder so kommen wird (Zitat: "systemd will use /etc/rc.conf if these files are absent (Note this is temporary and not a long-term solution. It is strongly advised to use the systemd configuration files on any system, since initscripts can use them)."), mein System vollständig auf systemd umstellen.
Bisher habe ich, bis auf libsystemd und systemd-tools, mit systemd noch nichts zu tun. Das heißt, dass ich bisher noch die konventionelle rc.conf mit den Einträgen LOCALE, DAEMON_LOCALE, HARDWARECLOCK, TIMEZONE, KEYMAP, CONSOLEFONT, CONSOLEMAP, USECOLOR, MODULES, UDEV_TIMEOUT, USEDMRAID, USEBTRFS, USELVM, HOSTNAME, interface, NETWORK_PERSIST und DAEMONS nutze.
Welche Schritte genau, außer das Anlegen von /etc/hostname, /etc/vconsole.conf, /etc/locale.conf, /etc/timezone und einigen weiteren nativen Konfigurationsdateien, muss ich noch beachten und ausführen?
Hat so einen Umstieg, ohne Neuinstallation von Arch, schonmal jemand gemacht? Danke schonmal an alle ...
fs4000
Du könntest noch schauen, dass /etc/localtime korrekt verlinkt ist. (Sollte allerdings bereits der Fall sein.)
Und natürlich musst du deine ganzen Dienste mit "systemctl enable" aktivieren.
[gelöscht]
/etc/localtime ist bereits ordnungsgemäß auf /usr/share/zoneinfo/Europe/Berlin verlinkt.
Wo und wie genau muss ich die Dienste aktivieren?
Muss ich systemd dann, wenn ich das durchziehe (bisher plane ich ja nur und bereite vor), in die rc.conf als DAEMON eintragen oder wie ersetze ich den init-Prozess?
Und, ach ja, muss ich, außer das Paket systemd, dann noch mehr installieren?
Schlummi
Hallo stoerti,
ich bastle auch grad an dem Thema. Ich bin da wie folgt vorgegangen:
pacman -S systemd
installiert SystemD.
Dann die von SystemD benötigten Dateien erstellt, - hast du ja schon gemacht.
Nun kannst du testweise SystemD benutzen, indem du beim Booten an die Kernelzeile
init=/bin/systemd
anhängst.
Das ignoriert für den nächsten Start die Initscripte und nutzt SystemD.
Im laufenden System kannst du nun wie fs4000 schon schrieb alle von dir benötigten Dienste starten und sehen ob sie einwandfrei hochlaufen.
Bei einem
fail entweder
systemctl status <dienstname>.service
oder
journalctl
eingeben, um zu sehen wo es hakt.
Für viele Standarddienste gibt es schon vorgefertigte Service-Units.
Probleme hatte ich mit meiner locale nachdem ich dann endgültig
initscripts
deinstalliert habe. Trotz richtiger Konfiguration sprach mein System auf einmal POSIX.
Abhilfe schafft hier das Paket
systemd-sysvcompat
Gruß... Schlummi
[gelöscht]
Nochmal ne Frage zu den Diensten. Wenn ich jetzt, während ich noch mit SysVinit gebootet habe, ps -A eingebe, werden mir ja eine Menge Dienste aufgelistet. Werden diese mit systemd auch alle autmoatisch gestartet oder sind das wirklich alles Dienste, die ich nach dem Booten mit systemctl enable selbst aktivieren muss?
Hackepeter
Also ich hab lediglich die Deamons per systemd gestartet, die ich vorher in der rc.conf eingetragen hatte.
Du kannst übrigens auch einfach mal systemd testen und ohne Probleme wieder zurückkehren, wenn was nicht funktioniert.
s.h. auch
https://wiki.archlinux.org/index.php/Systemd
P.S. Wobei ich sagen muss, dass ich dies nur auf dem Netbook gemacht habe. Auf dem Dekstop erkennen ich keinerlei Vorteil von systemd und bleibe erstmal beim alten initsystem
Grüsse
[gelöscht]
So, ein erster Boot mittels systemd verlief schonmal ziemlich zügig - bis dahin erstmal begeistert. Bis auf, dass weder KDM gestartet wurde (ich glaube, dass nichtmal X gestartet wurde - bin mir aber nicht sicher) und die Netzwerk-Verbindung wurde nicht gestartet. Ich nehme mal an, dass dies die Dienste sind, die ich mit systemctl enable aktivieren muss, wa? In meiner rc.conf habe ich stehen
DAEMONS=(syslog-ng cpufreq acpid iptables network dbus @sshd @crond @ntpd @cupsd @dictd @kdm)
wogegen in der neueren rc.conf.pacnew nur noch syslog-ng, network und crond stehen. Den Rest, den ich noch stehen habe, muss ich dann via systemd starten, korrekt?
Schlummi
Also ich habe ja keine rc.conf mit einem Daemon-Array mehr, daher starte ich alle Dienste via systemD.
So weit ich weiß, startet systemd eine Netzwerkverbindung auf eth0 mit DHCP automatisch. Alle anderen Verbindungsarten müssen dann mit einer Service-Unit realisiert werden.
Ich habe hier z.B. eine für eine statische IP im lokalen Netzwerk, die ich natürlich per systemctl aktivieren mußte.
Standarmäßig startet systemd die default.target, welche dann ein Link auf graphical.target für Runlevel 5 ist, oder multi-user.target für Runlevel 3
swordfish
stoerti schrieb[...] wogegen in der neueren rc.conf.pacnew nur noch syslog-ng, network und crond stehen. Den Rest, den ich noch stehen habe, muss ich dann via systemd starten, korrekt?
Die kurze Antwort lautet: Ja 😃
Die lange Antwort hängt davon ab, "wie" du systemd installiert hast - als standalone oder neben sysvinit. In letzterem Fall (und unter Hinzuziehung des Pakets 'initscripts-systemd' könntest Du auch noch die alte rc.conf benutzen.
Aktuell gibt es offenbar aufgrund der "Übergangsphase" hin zu systemd auch die Möglichkeit, ein Mischsystem zu fahren (was ich persönlich aber eher verwirrend finde - anyway).
[gelöscht]
Also, ich habe inzwischen mittels systemctl enable hinbekommen, dass beim Start syslog-ng, iptables, sshd, ntpd und kdm gestartet wird - ich kann also wieder ein GUI nutzen. Den Rest der Dienste, die ich noch in der DAEMON-Liste stehen habe, bekomme ich aber nicht zum Laufen. Allen voran network, cupsd und dictd. Ich habe also momentan kein Netzwerkzugriff. Interessanter Weise läuft, obwohl ich es nicht explizit geladen oder aktiviert habe, cpufreq und dbus einwandfrei.
[gelöscht]
@ swordfish
Im Moment habe ich sowohl systemd als auch SysVinit installiert, da ich erstmal alles zu Ende konfigurieren will. Letztlich habe ich aber vor SysVinit komplett zu deinstallieren, also kein Mischbetrieb. Will also von der bisherigen rc.conf komplett weg.
swordfish
Schlummi schriebAlso ich habe ja keine rc.conf mit einem Daemon-Array mehr, daher starte ich alle Dienste via systemD.
So weit ich weiß, startet systemd eine Netzwerkverbindung auf eth0 mit DHCP automatisch. Alle anderen Verbindungsarten müssen dann mit einer Service-Unit realisiert werden.
Ich habe hier z.B. eine für eine statische IP im lokalen Netzwerk, die ich natürlich per systemctl aktivieren mußte.
Standarmäßig startet systemd die default.target, welche dann ein Link auf graphical.target für Runlevel 5 ist, oder multi-user.target für Runlevel 3
Welche service-units laufen, zeigt Dir:
$ systemctl -t service
Und bei mir wurde
kein dhcp-service automatisch gestartet (lässt sich aber mit obigem Befehl leicht rausfinden)!
Da ich unter KDE den Networkmanager nutze, hab' ich den entsprechenden service händisch gestartet:
# systemctl start NetworkManager.service
und damit der service immer beim Systemstart mitgeladen wird:
# sytstemctl enable NetworkManager.service
Wenn man keinen Networkmanager benutzt, sollte das hier funktionieren:
# systemctl start dhcpcd@.service
Voraussetzung: Das Paket 'systemd-arch-units' ist installiert (wenn nicht, sollte eth0 mit angegeben werden - 'systemctl start
dhcpcd@eth0.service')
und
# systemctl enable dhcpcd@.service
swordfish
stoerti schriebAlso, ich habe inzwischen mittels systemctl enable hinbekommen, dass beim Start syslog-ng, iptables, sshd, ntpd und kdm gestartet wird - ich kann also wieder ein GUI nutzen.
syslog-ng ist überflüssig (s.:
https://wiki.archlinux.org/index.php/Systemd#Systemd_Journal)
stoerti schriebDen Rest der Dienste, die ich noch in der DAEMON-Liste stehen habe, bekomme ich aber nicht zum Laufen. Allen voran network, cupsd und dictd. Ich habe also momentan kein Netzwerkzugriff. Interessanter Weise läuft, obwohl ich es nicht explizit geladen oder aktiviert habe, cpufreq und dbus einwandfrei.
Schau bitte mal mit
$ systemctl -t service
welche services aktuell laufen. Außerdem kannste auch gleich nachsehen, ob irgendwas verreckt ist:
$ systemctl --failed
Falls ja, mal mit
$ systemctl status XXX.service
checken.
In Sachen Network könntest Du mal schauen, was:
$ systemctl -t target
Dir zeigt. Ich hab' da beispielsweise das hier stehen:
network.target loaded active active Network
Wenn das bei Dir auch steht, dann schau mal, was ich oben (22.11 Uhr als Antwort auf 'Schlummi') geschrieben habe.
cupsd wird über:
# systemctl enable cups.service
aktiviert.
$ systemctl status cups.service
cups.service - CUPS Printing Service
Loaded: loaded (/usr/lib/systemd/system/cups.service; enabled)
Active: active (running) since Wed, 01 Aug 2012 21:18:25 +0200; 1h 17min ago
Main PID: 741 (cupsd)
CGroup: name=systemd:/system/cups.service
└ 741 /usr/sbin/cupsd -f
Schlummi
@swordish:
Und bei mir wurde kein dhcp-service automatisch gestartet (lässt sich aber mit obigem Befehl leicht rausfinden)!
Da hast du recht. Ist mir nicht direkt aufgefallen, da ich zusätzlich mit initscripts, also rc.conf, gebootet hatte. Da wurde das Netzwerk ja noch automatisch gestartet. Danach hatte ich meinen eigenen network.service konfiguriert.
[gelöscht]
@ swordfish
Dann disable ich syslog-ng halt wieder. 🙂
systemctl -t service zeigt console-kit-daemon, cosole-kit-log-system-start, dbus, getty@tty1, kdm, ntpd, sshd, systemd-journald, systemd-logind, systemd-modules-load, systemd-remount-fs, systemd-sysctl, systemd-tmpfiles-setup, systemd-udev-trigger, systemd-udevd, systemd-user-sessions, systemd-vconsole-setup und upower an.
systemctl --failed zeigt keine units an.
systemctl -t target zeigt basic, cryptsetup, getty, graphical, local-fs-pre, local-fs, multi-user, printer, remote-fs, sockets, sound, swap und sysinit an.
Also leider nichts mit Network.
CUPS habe ich inzwischen auch enabled bekommen. 🙂
fs4000
Für CUPS kann man auch den cups.socket nehmen für Socket-Activation. Nur startet Gnome den momentan trotzdem dauerhaft.
[gelöscht]
So, habe DHCP zum laufen bekommen. Hatte vergessen das Paket systemd-arch-units zu installieren.
Bleibt nur noch die Frage wie ich dictd zum Laufen kriege.
Abgesehen davon denke ich, dass ich, rein theoretisch, wagen könnte, SysVinit runterzuschmeißen. Oder sieht noch jemand etwas, was ich übersehen habe?
[gelöscht]
Müsste ich evtl vor der endgültigen Entfernung von SysVinit das Paket netcfg installieren und einrichten? Oder startet systemd trotzdem den network-Daemon?
swordfish
stoerti schriebMüsste ich evtl vor der endgültigen Entfernung von SysVinit das Paket netcfg installieren und einrichten? Oder startet systemd trotzdem den network-Daemon?
'netcfg' brauchste wohl nur, wenn Du Dir 'ne statische Netzwerkverbindung einrichtest (also kein dhcp) oder wenn Du noch 'ne Wireless-Nic mitkonfigurieren möchtest. Alternativ kannste natürlich den Networkmanager nutzen. Kommt aber natürlich darauf an, welche Desktop-Umgebung Du nutzt bzw. welchen Windowmanager und was Dir lieber ist 🙂 .
Siehe auch:
https://wiki.archlinux.org/index.php/Systemd#Network (Abschnitt: "Other configurations")
[gelöscht]
@ swordfish
Ja, hab ich gestern auch noch rausgekriegt.
Ich hab jetzt nur noch zwei Sachen offen, bevor ich versuchen möchte, SysVinit zu entfernen: Einmal bekomme ich dictd noch nicht automatisch gestartet. Und die zweite Sache ist acpid: Im englischen Wiki steht, dass man dies durch systemd ersetzen kann. Ist dies für'n Desktop-PC überhaupt notwendig?
Anonsten läuft der Rest inzwischen über systemd:iptables, sshd, crond als cronie, ntpd, cupsd und kdm.
cpufreq und dbus brauchte ich nicht aktivieren, die liefen interessanter weise ohne Eingreifen.
Das hieße ja auch, dass ich die rc.conf letztlich auch komplett weglassen könnte, oder?