systemd-Nachbau
- From: Markus Wichmann <nullplan@xxxxxxx>
- Date: Sat, 19 May 2012 13:36:01 +0200
Hi all,
ich bastle gerade an einem Nachbau des systemd (ich find die Idee toll,
aber die Umsetzung... naja, bei mir funktioniert sie schon mal nicht).
Falls einer nicht weiß, was das ist: Es ist im Prinzip ein inetd auf
Drogen: Man konfiguriert für jeden beliebigen Dienst einen Socket
(derzeit geplant sind die Adressfamilien AF_INET, AF_INET6 und AF_UNIX,
sowie die Socket-Typen SOCK_STREAM, SOCK_SEQPACKET und SOCK_DGRAM) und
der systemd baut dann diesen Socket auf und wartet auf Verbindung, um
den Dienst erst dann zu starten. Wenn man das als initd einsetzt, werden
bei Systemstart also im Prinzip keine Dienste mehr gestartet, sondern
erst später, wenn sie gebraucht werden.
Ja, dies erfordert, dass man Daemons patcht, aber das wird schon. Das
ist dann der nächste Schritt, erstmal muss der systemd gehen. :-)
So, ich hatte an ein Abhängigkeitensystem gedacht. Dabei darf man aber
nur diejenigen Abhängigkeiten aufschreiben, die nicht durch gegenseitige
Aufrufe von Sockets abgedeckt sind (wenn z.B. der ftpd ins syslog
schreibt, muss man diese Abhängigkeit nicht aufschreiben, denn sobald
der ftpd wirklich schreibt, wird der syslog durch den Socket gestartet.
Allerdings erfordert z.B. ein an localhost gebundener Service eine
Abhängigkeit zu dem Job, der "ip link set lo up" ausführt. Und diese
Abhängigkeit muss sogar laufen, bevor überhaupt der Socket fertig
gemacht wird. Wobei das eh besser ist, wenn alle Abhängigkeiten erfüllt
sind, wenn die Sockets fertig gemacht werden).
Anmerkungen bisher?
So, dann jetzt die praktischen Fragen: Woran erkenne ich bei einem
Stream-Socket, dass jemand eine Verbindung aufbauen will? Ich habe mal
irgendwo gelesen, dass das durch Schreibbarkeit signalisiert wird.
(select() gibt den Socket in den Write-FDs zurück, poll() und epoll
signalisieren POLLOUT/EPOLLOUT) Das kommt mir auf den ersten Blick etwas
nonintuitiv vor. Sicher, dass nicht auch Lesbarkeit geht? (Das wäre dann
nämlich bei allen Dateitypen, die mir gerade einfallen, gleich.)
Wie bastel ich das System so, dass es am Ende für die meisten Computer
benutzbar wird? Beispiel: Auf einem Laptop ist ein hochgefahrenes
Netzwerk ein Bonus, aber wichtig ist, dass ein getty hochgefahren wird,
damit der Nutzer sich einloggen kann. Auf einem Server hingegen ist das
getty nebensächlich, viel wichtiger ist ein hochgefahrenes Netzwerk (und
dass die Sockets bereitstehen).
Gedanken dazu?
Ciao,
Markus
.
- Follow-Ups:
- Re: systemd-Nachbau
- From: Rainer Weikusat
- Re: systemd-Nachbau
- Prev by Date: Re: Reader-writer-Problem
- Next by Date: Re: Reader-writer-Problem
- Previous by thread: Reader-writer-Problem
- Next by thread: Re: systemd-Nachbau
- Index(es):
Relevant Pages
|