systemd-Nachbau



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
.



Relevant Pages

  • =?iso-8859-1?Q?Re:_=22kein_Pufferspeicher_verf=FCgbar=22_bei_Winsock-Cont?= =?iso-88
    ... schließt Du dann den socket und nimmt mit diesem die ... jeder Endpoint besteht aus IP-addresse und Port. ... Initiiert ein Client eine Verbindung, dann legt dieser alle 4 Werte ... Verbindungsanfragen zu melden, ...
    (microsoft.public.de.vb)
  • Re: FBN "Friends Backup Network"
    ... IPv4 und einem oftmals mit Neuaufbau der Verbindung verbundenem Wechsel ... Server zu erzeugen, auf der anderen Seite mit "-L" um einen lokalen ... socket mit dem "Listening Socket" auf der Remote-Seite zu verbinden). ...
    (de.comp.os.unix.networking.misc)
  • Re: TCP Kommunikationsproblem
    ... Verbindungsanfragen zu melden, ... entfernt sie aus der queue und liefert einen neuen socket ... Damit im Connection_Request Ereignis die meldende Winsock-Instanz die ... Anfragen entgegen bis sie voll ist. ...
    (microsoft.public.de.vb)
  • Re: TCP-Verbindungen unter hoher CPU-Last
    ... als Dienst oder normal als Programm gestartet werden), ... Port (Socket) öffnet. ... Verbindung repraesentiert wird nach jeder "Session" geschlossen. ...
    (microsoft.public.de.vc)
  • Re: Verbindung über Sockets, Shared Memory Vergleich
    ... Verbindung auf einer Maschine nicht über Sockets zu machen? ... SHM statt Socket einzustellen? ... Speicher, sofern beim Start die Option --shared-memory angegeben wurde. ...
    (de.comp.datenbanken.mysql)