systemd: stadko zamieniających Uniksa demonów



Czytając o systemd można czasem przeoczyć większą wizję. Celem nie jest jedynie napisanie kolejnego zastępcy inita. To tylko element całości, którą jest zdefiniowanie (również poprzez stworzenie) platformy Linuksowej. Ostatecznie będzie można powiedzieć, że ,,w Linuksie''

  • jest ustawiona nazwa hosta
  • listę zalogowanych użytkowników uzyskujemy przez systemd-loginctl list-sessions
  • startujemy usługi na żądanie tworząc definicje .socket
  • usługi potrzebujące haseł korzystają ze zdefiniowanej metody pytania
  • unikalny identyfikator systemu można odczytać z /etc/machine-id
  • itp.
I to zawsze. Dostawca oprogramowania nie będzie musiał tworzyć zawiłych skryptów sprawdzających czy używamy xinetd, inetd czy jeszcze czegoś innego. Osuszanie bagienka różnic między dystrybucjami powinno ułatwić dostarczanie oprogramowania firmom trzecim.

Aby osiągnać ten cel, systemd dostarczany jest wraz z garścią pomocniczych programików pojedynczego zastosowania. Część ujednolica czynności wykonywane we wszystkich dystrybucjach, część implementuje nowe mechanizmy mające stać się API Linuksa. Najprostsze (ograniczające się do pojedyńczych syscalli) wbudowane są w samą binarkę systemd.

Do czego zacząć się przyzwyczajać?

  • hostname1 — dostępna przez D-Bus usługa zarządzająca krótką oraz opisową nazwą komputera; konfigurowana w /etc/hostname
  • systemd-localed — dostępne przez D-Bus ustawianie języka systemu; konfigurowane w /etc/locale.conf
  • systemd-timedated — D-Bus; ustawianie czasu, daty, strefy czasowej; konfiguracja w /etc/adjtime, /etc/timezone, /etc/locatime
  • systemd-vconsole-setup — ustawienie układu klawiatury i fontu na konsoli tekstowej; konfiguracja w /etc/vconsole.conf
  • systemd-binfmt — konfiguracja jak traktować różne pliki wykonywalne; katalog z konfiguracją: /etc/bindfmt.d
  • systemd-tmpfiles — tworzenie plików, katalogów i gniazd przy starcie systemu; również kasowanie starych, nie używanych plików; konfiguracja z /usr/lib/tmpfiles.d i /etc/tmpfiles.d
  • systemd-sysctl — ustawienie zmiennych jądra; konfiguracje z katalogów {/usr/lib,/etc,/run}/sysctl.d i pliku /etc/sysctl.conf
  • systemd-modules-load — ładowanie modułów jądra; pliki konfiguracyjne w /etc/modules-load.d
  • systemd-kmsg-syslogd — minimalny demon zapamiętujący informacje przed uruchomieniem właściwego syslogd
  • systemd-random-seed — inicjacja puli entropii generatora pseudolosowego; również zapisanie stanu przy wyłączaniu komputera

Wydzielenie tych drobiazgów ze skryptow startowych umożliwia:

  1. ujednolicenie zachowania wszystkich dystrybucji Linuksa
  2. ujednolicenie sposobów np. zmiany nazwy komputera na wszystkich dystrybucjach
  3. uruchamianie powyższych czynności jednocześnie
  4. uruchamianie w razie potrzeby w trakcie działania komputera (np. pojawienie się nowego pliku w /etc/binfmt.d)

Ważnym nowością jest systemd-loginctl i skojarzony /etc/systemd/systemd-logind.conf zarządzajacy sesjami użytkownika. Odpowiada m. in. za automatycznie uruchamianie getty na konsolach, na które przełącza się użytkownik. Login manager daje informacje o zalogowanych użytkownikach, aktywnych sesjach i także pilnuje sprzątania procesów po użytkownikach wylogowanych. Poleceniem systemd-loginctl enable-linger można zażyczyć sobie uruchamiania sesji dla zwykłych użytkowników przy starcie systemu.

systemd-logind zarządza również wszystkimi zestawami klawiatura+mysz+monitor+inne urządzenia, ułatwiając pracę wielu użytkowników jednocześnie. Jest to efekt zapowiadanego pozbycia się ConsoleKit.


Archived comments:

abc 2011-08-04 17:10:38

... tylko czemu ten systemd nie działa w chroocie (cały system, a nie tylko usługa) ani w vserverowym gueście? :-/

Remigiusz 'lRem' Modrzejewski 2011-08-04 17:16:06

Nie działa w gueście? No to pozamiatane...

m 2011-08-04 17:23:05

I dlaczego wymaga dbusa?

zdz 2011-08-04 17:43:49

abc: jak nie działa? Ma problem z zamountowaniem katalogów czy coś innego? Jak używasz "systemd-nspawn" jako helpera chrootowego to też jest problem?

m: bo wymaga IPC. Można było użyć czegoś znanego, przetestowanego i zdebugowanego (D-Bus) albo wymyślać koło samemu.

abc 2011-08-04 18:39:07

zdz: w gueście vservera nie masz uprawnien do montowania czegokolwiek w najczęstrzym przypadku. chroot jest dużo mniej interesujący więc go pomińmy.

d33tah 2011-08-05 10:37:36

http://xkcd.com/927/

Comments


Comments powered by Disqus