View previous topic :: View next topic |
Author |
Message |
ManfredB Veteran
Joined: 27 Dec 2007 Posts: 1659
|
Posted: Wed Nov 06, 2019 10:06 am Post subject: Gentoo systemd - Erfahrungsbericht |
|
|
Hallo zusammen,
Gestern habe ich einen neuen Versuch gestartet, Gentoo systemd zu installieren.
Vor kurzem hatte ich hier einen Thread geöffnet mit der Frage, welches der Handbücher
zu nutzen ist oder ob beide zusammenhängen....
Mein Versuch basiert allein auf dem systemd-WIKI, und damit hatte ich Erfolg.
Denn dort beginnt die Installation an einem anderen Punkt als im AMD64-Handbuch:
Zuerst kommt der Kernel an die Reihe, und erst, wenn die Konfiguration gelaufen ist,
eselect profile list
emerge -avuDN world
Ich nutze beim Kernel immer auch genkernel, weil ich in --menuconfig eine bessere Übersicht habe.
In dem systemd-Handbuch steht da
genkernel --install all
Das habe ich zuerst gemacht in der Annahme, daß da alles drin ist, was für systemd erforderlich ist.
Doch da habe ich mich geirrt.
Als ich mit der gesamten Installation fertig war, kam ich nicht auf den Desktop.
Grund: die für die nvidia-Grafikkarte zu ändernden Einstellungen waren nicht vorgenommen.
Also habe ich erneut
genkernel --menuconfig all
durchgeführt und dabei alle NVIDIA-Sachen gelöscht.
Als das fertig war, konnte ich problemlos auf dem plasma-Desktop landen,
das hier schreibe ich von dort aus.
Übrigens habe ich einmal in der chroot-Umgebung, als das große Basis-Update kam,
aufgeschrieben, wie lange das gedauert hat:
Um 8.44 Uhr begann der Prozess mit 371 Paketen
Da sys-devel/gcc während dieses Prozesses ein Update erfährt,
wurde der Prozess unterbrochen, weil einige Pakete nicht installiert werden konnten.
Also gcc-config -l 8.3.0-r1
und gcc-config -f 2 9.2.0-r2
Danach 93 Pakete, die zT rebuilds waren
Der Rest des Updates 57 Pakete
Ende des Updates um 12.14 Uhr
Also 3 1/2 Stunden
Weil ich sicher gehen wollte, daß am Ende kein Problem ensteht,
habe ich innerhalb der chroot-Umgebung
kde-plasma/plasma-meta und kde-plasma/plasma-nm
kde-apps (nur 4 Gruppen und einige zusätzliche Pakete)
installiert.
Als ich mit allem ferig war, habe ich das System neu gestartet.
Was zuerst nicht geklappt hat, war das Internet, obwohl Kabel-Anschluss am PC vorhanden ist.
systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service
Trotzdem hatte ich kein Internet.
Bis ich auf den Fehler kam, den ich gemacht hatte:
/etc/resolv.conf als Link zu /run/systemd/resolve/resolv.conf
Als ich irgendwann diese /etc/resolv.conf mal in mc angeklickt habe,
dabei habe ich entdeckt, daß dort
resolf.conf
stand. Als ich diesen Schreibfehler korrigiert hatte, mußte ich die beiden Zeilen
systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service
wiederholen.
Nach Neustart des Systems hatte ich dann endlich Internet.
Ehrlich: ich habe schon viele Versuche mit systemd gestartet,
bin immer wieder an irgendwelchen Einstellungen gescheitert.
Doch diesmal habe ich Erfolg gehabt, und darüber bin ich sehr froh.
Gentoo-stable
Gentoo-unstable (ACCEPT_KEYWORDS="~amd64"
Gentoo-systemd (ACCEPT_KEYWORDS="~amd64"
Fazit: so intensiv, wie ich mich in den letzten Monaten mit gentoo beschäftigt habe,
habe ich das zuvor noch nie gemacht.
Aber ich habe sehr viel gelernt und nutze diese Kenntnisse
mit Freude.
Gruß
Manfred |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1942 Location: Schweiz
|
Posted: Wed Nov 06, 2019 12:24 pm Post subject: |
|
|
Gerade beim Netzwerk wundert es mich nicht das es nicht auf Anhieb geklappt hat, denn das ist auch genau der Teil der meiner Meinung nach im Gentoo-Wiki viel zu kurz kommt.
EDIT: Ubuntu hat eine recht gute Doku zu networkd.
https://wiki.ubuntuusers.de/systemd/networkd/ _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
ManfredB Veteran
Joined: 27 Dec 2007 Posts: 1659
|
Posted: Wed Nov 06, 2019 5:22 pm Post subject: |
|
|
Übrigens habe ich im AMD64-Handbuch einen Fehler gefunden:
grub2-mkconfig -o /boot/grub/grub.cfg
funktioniert nicht, denn auch wenn bei der Installation
emerge --ask --verbose sys-boot/grub:2
angezeigt wird, heisst es dennoch
grub-mkconfig -o /boot/grub/grub.cfg
Das noch als kleiner Nachtrag.
Gruß
Manfred |
|
Back to top |
|
|
ManfredB Veteran
Joined: 27 Dec 2007 Posts: 1659
|
Posted: Thu Nov 07, 2019 9:04 am Post subject: |
|
|
Neue Info:
Internet-Verbindung klappt nicht auf Anhieb.
Ich kann nur eins sagen: mein "Gentoo-Arzt" ist inzwischen ArchLinux.
Warum?
2 Programme, die es bei gentoo so nicht gibt, habe ich mir von ArchLinx geholt.
Nur damit das nicht mißverstanden wird: keine Installation im üblichen Sinn.
Meine erste Erfahrung habe ich mit genfstab gemacht, das ArchLinux-Paket
im mc angeklickt, dann wird es geöffnet und man sieht Verzeichnisse.
Genau die habe ich genutzt, um die Inhalte in dieselben Verzeichnisse bei Gentoo zu kopieren,
genfstab ist Inhalt des Programms arch-install-scripts.
3 Programme beinhaltet dieses script, eines davon genfstab.
Und dieses Programm funktioniert einwanfrei unter gentoo.
Nun kommt Programm 2:
netctl
/etc/netctl
Aus dem Unterverzeichnis "examples" habe ich "ethernet-dhcp" ins Verzeichnis /etc/netctl kopiert
und im Inhalt eth0 durch enp3s0 ersetzt.
Dann habe ich den Test gemacht:
netctl enable ethernet-dhcp
netctl start ethernet-dhcp
Und was ich erst nicht glauben wollte, hat funktioniert.
So wie bei ArchLinux habe ich jetzt unter gentoo systemd Internet ohne weitere Eingriffe.
Ich weiss, daß das nicht ein normaler Vorgang ist, aber da er funtkioniert, ist mir das schon recht.
Gruß
Manfred |
|
Back to top |
|
|
SkaaliaN Veteran
Joined: 21 Apr 2005 Posts: 1360 Location: Valhalla
|
Posted: Wed Nov 13, 2019 12:43 pm Post subject: |
|
|
Hallo zusammen,
hatte von euch schonmal jemand das Problem, dass ein Daemon trotz "systemctl enable xxx.service" nicht beim nächsten Neustart ausgeführt wird?
Die Verlinkung hat stattgefunden.
Code: | systemctl start xxx.service | funktioniert ebenfalls einwandfrei.
Danke,
lg _________________ c'ya !
skaalian |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1942 Location: Schweiz
|
Posted: Wed Nov 13, 2019 12:51 pm Post subject: |
|
|
@SkaaliaN
Ja, bei mir war es eine fehlerhafte Abhängigkeit innerhalb des jeweiligen Service-Unit.
Mein Dienst hatte ein "Requires=mysqld.service" drin aber installiert war ein MariaDB weshalb es kein "mysqld.service" gab. _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Wed Nov 13, 2019 2:41 pm Post subject: |
|
|
Quote: | hatte von euch schonmal jemand das Problem, dass ein Daemon trotz "systemctl enable xxx.service" nicht beim nächsten Neustart ausgeführt wird?
Die Verlinkung hat stattgefunden. |
Was sagt denn
Code: | systemctl status xxx.service |
direkt nach dem Neustart (bevor Du xxx mit "systemctl enable" von Hand gestartet hast)?
Steht sonst irgendetwas dazu im Journal?
Code: | journalctl -b | grep xxx |
|
|
Back to top |
|
|
SkaaliaN Veteran
Joined: 21 Apr 2005 Posts: 1360 Location: Valhalla
|
Posted: Wed Nov 13, 2019 4:07 pm Post subject: |
|
|
mike155 wrote: | Quote: | hatte von euch schonmal jemand das Problem, dass ein Daemon trotz "systemctl enable xxx.service" nicht beim nächsten Neustart ausgeführt wird?
Die Verlinkung hat stattgefunden. |
Was sagt denn
Code: | systemctl status xxx.service |
direkt nach dem Neustart (bevor Du xxx mit "systemctl enable" von Hand gestartet hast)?
Steht sonst irgendetwas dazu im Journal?
Code: | journalctl -b | grep xxx |
|
Code: | systemctl status dhcpcd
● dhcpcd.service - Lightweight DHCP client daemon
Loaded: loaded (/lib/systemd/system/dhcpcd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
|
Code: |
journalctl -b | grep dhcpcd
Nov 13 17:02:56 localhost dhcpcd[4022]: dev: loaded udev
Nov 13 17:02:56 localhost dhcpcd[4022]: no interfaces have a carrier
|
Die Netzwerkverbindung ist definitiv vorhanden und per Kabel verbunden.
Der Netzwerkservice ist ebenfalls gestartet:
Code: |
systemctl status systemd-networkd.service
● systemd-networkd.service - Network Service
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-11-13 17:01:14 CET; 1min 28s ago
Docs: man:systemd-networkd.service(8)
Main PID: 3074 (systemd-network)
Status: "Processing requests..."
CPU: 198ms
CGroup: /system.slice/systemd-networkd.service
└─3074 /lib/systemd/systemd-networkd
|
Starte ich dhcpcd selbst, funktioniert es einwandfrei:
Code: | systemctl status dhcpcd
● dhcpcd.service - Lightweight DHCP client daemon
Loaded: loaded (/lib/systemd/system/dhcpcd.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2019-11-13 17:02:56 CET; 5min ago
Process: 4022 ExecStart=/sbin/dhcpcd -q (code=exited, status=0/SUCCESS)
Main PID: 4034 (dhcpcd)
CPU: 85ms
CGroup: /system.slice/dhcpcd.service
└─4034 /sbin/dhcpcd -q
|
_________________ c'ya !
skaalian |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Wed Nov 13, 2019 4:47 pm Post subject: |
|
|
Systemd startet beim Booten die Netzwerk-Dienste bereits frühzeitig, auch wenn die Netzwerk-Interfaces noch nicht "up and running" sind.
Wenn die Netzwerk-Dienste dann Sockets öffnen, die an bestimmte Interfaces gebunden sind, gibt es Fehler - weil die Interfaces zu diesem Zeitpunkt noch nicht vorhanden sind.
Lösung: Wenn man Systemd verwendet, darf man Dienste nicht an einzelne Interfaces binden.
Beispiel für sshd_config:
Code: | Falsch bei Systemd: ListenAddress 10.0.0.1
Richtig bei Systemd: ListenAddress 0.0.0.0 |
|
|
Back to top |
|
|
Max Steel Advocate
Joined: 12 Feb 2007 Posts: 2246 Location: My own world! I and Gentoo!
|
Posted: Wed Nov 13, 2019 5:27 pm Post subject: |
|
|
Find ich doof...
ich hab Services die auf dem "Gast-Netz" nichts zu suchen haben, diese möchte ich auch nicht dort sehen.
Naja und die Aussage "Falsch und Richtig" ist eher was für Philosophen, ich würde es begrüßen müsste ich das nicht mit der Firewall erschlagen, weil die Firewall sowieso mit läuft, sondern verstehe die Firewall da als zusätzliche Netzseparation. _________________ mfg
Steel
___________________
Heim-PC: AMD Ryzen 5950X, 64GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-1145G7, 16GB RAM, Intel Iris Xe Graphic (leider WSL2) |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Wed Nov 13, 2019 5:45 pm Post subject: |
|
|
Quote: | Find ich doof...
ich hab Services die auf dem "Gast-Netz" nichts zu suchen haben, diese möchte ich auch nicht dort sehen. |
Sehe ich ganz genauso. Es ist eine klassische Sicherheits-Maßnahme, den SSH-Daemon nur am Management-Interface lauschen zu lassen - und nirgendwo sonst.
Aber Systemd ist nicht einfach nur ein Ersatz für Sysvinit oder OpenRC - sondern vieles funktioniert grundlegend anders. Hier muss man umdenken!
Zu dem "Network up and running"-Problem gibt es einen Artikel von Lennart Poettering: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/. Es gibt auch noch einen zweiten Artikel, in dem er denjenigen, die einen Dienst wirklich nur an einem Interface lauschen lassen wollen, den Einsatz einer Firewall-Regel empfiehlt - aber den finde ich gerade nicht. |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1942 Location: Schweiz
|
Posted: Wed Nov 13, 2019 6:56 pm Post subject: |
|
|
Hmm, so wirklich aktiviert sieht der Dienst aber nicht aus. Quote: | Loaded: loaded (/lib/systemd/system/dhcpcd.service; disabled; vendor preset: disabled) |
Und wenn der Dienst aufgrund seiner Konfiguration, oder wegen irgend etwas anderem, erst starten soll wenn das Netzwerk fertig eingerichtet ist wäre es möglicherweise sinnvoll eine entsprechende Abhängigkeit (mit "Requires=" und "After=") hinzuzufügen.
https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units#editing-unit-files
EDIT:
Ich habe mir mal das Service-Unit von dhcpcd angesehen und es hat eine Abhängigkeit zu "network-online.target", aber dieses Target kann (wenn networkd in Verwendung ist) nur richtig funktionieren wenn auch "systemd-networkd-wait-online.service" aktiviert wird. Dann geht "network-online.target" erst auf den Status gestartet wenn networkd alle seine Aufgaben erledigt hat. _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Wed Nov 13, 2019 7:56 pm Post subject: |
|
|
Quote: | erst starten soll wenn das Netzwerk fertig eingerichtet ist |
Wie ich oben schon schrieb: von diesem Konzept sollte man sich unter Systemd schnellstmöglich verabschieden (siehe auch der Link oben zu Lennarts Artikel). Stattdessen sollte man seine Dienste so schreiben oder konfigurieren, dass sie auch laufen, wenn das Netzwerk noch nicht fertig konfiguriert wurde! |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1942 Location: Schweiz
|
Posted: Wed Nov 13, 2019 8:09 pm Post subject: |
|
|
mike155 wrote: | Quote: | erst starten soll wenn das Netzwerk fertig eingerichtet ist |
Wie ich oben schon schrieb: von diesem Konzept sollte man sich unter Systemd schnellstmöglich verabschieden (siehe auch der Link oben zu Lennarts Artikel). Stattdessen sollte man seine Dienste so schreiben oder konfigurieren, dass sie auch laufen, wenn das Netzwerk noch nicht fertig konfiguriert wurde! |
Im seinem Fall geht es aber offenbar nicht anders und unabhängig davon ist es besser wenn dafür gesorgt wird das auf network-online.target verlass ist. _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Thu Nov 14, 2019 7:46 am Post subject: |
|
|
Quote: | hatte von euch schonmal jemand das Problem, dass ein Daemon trotz "systemctl enable xxx.service" nicht beim nächsten Neustart ausgeführt wird?
Die Verlinkung hat stattgefunden.
Code: | systemctl status dhcpcd
● dhcpcd.service - Lightweight DHCP client daemon
Loaded: loaded (/lib/systemd/system/dhcpcd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
|
|
Da hätte ich meine Zweifel. Das erste "disabled" sagt eindeutig aus, dass der Link nicht gesetzt ist (multi-user.target.wants/).
Davon mal abgesehen bringt systemd einen eigenen DHCP-Client mit. Du brauchst DHCPCD nicht. |
|
Back to top |
|
|
|