Po czterech miesiącach prac wprowadzono wydanie menedżera systemu systemd 255. Wśród najważniejszych ulepszeń znajdują się: wsparcie dla eksportowania urządzeń przez NVMe-TCP, komponent systemd-bsod do pełnoekranowego wyświetlania komunikatów o błędach, narzędzie systemd-vmspawn do uruchamiania maszyn wirtualnych, narzędzie varlinkctl do zarządzania usługami Varlink, narzędzie systemd-pcrlock do analizy rejestrów TPM2 PCR i generowania reguł dostępu oraz moduł uwierzytelniania pam_systemd_loadkey.so.
Kluczowe zmiany w nowym wydaniu:
- Dodano komponent 'systemd-storagetm', który umożliwia automatyczne eksportowanie wszystkich lokalnych urządzeń blokowych za pomocą sterownika NVMe-TCP (NVMe over TCP), umożliwiającego dostęp do dysków NVMe przez sieć (NVM Express over Fabrics) z wykorzystaniem protokołu TCP. Za zapewnienie dostępu w trybie NVMe over TCP odpowiada nowa jednostka 'storage-target-mode.target', którą można włączyć na etapie rozruchu, wskazując w linii poleceń jądra 'rd.systemd.unit=storage-target-mode.target', na przykład w przypadku potrzeby zdalnego dostępu do dysku w celach diagnostycznych.
- Dodano komponent 'systemd-bsod', który implementuje odpowiednik 'niebieskiego ekranu śmierci', umożliwiając wyświetlanie komunikatów o krytycznych błędach (LOG_EMERG) w formie pełnoekranowego powiadomienia podczas rozruchu.
- Dodano narzędzie 'systemd-vmspawn', które jest odpowiednikiem narzędzia systemd-nspawn do uruchamiania obrazu systemu operacyjnego w maszynie wirtualnej (narzędzie systemd-nspawn jest przeznaczone do uruchamiania kontenerów, a systemd-vmspawn zapewnia podobny interfejs do maszyn wirtualnych). Obecnie dostępny jest tylko backend oparty na QEMU do uruchamiania maszyn wirtualnych.
- Dodano narzędzie 'varlinkctl' do wywoływania i introspekcji usług, które korzystają z protokołu Varlink.
- Dodano narzędzie „systemd-pcrlock” do analizy i przewidywania stanów rejestrów TPM2 PCR (Platform Configuration Register) oraz tworzenia reguł dostępu TPM2 NV zapisywanych w indeksie, które zezwalają na dostęp do obiektów TPM2, takich jak klucze szyfrowania dysku, wyłącznie z zaufanych komponentów cyfrowo podpisanych uruchamianych na etapie sprawdzonego uruchamiania. Jako dane wejściowe do analizy mogą być używane wyniki zapytań o stan PCR w TPM2, dostarczane przez oprogramowanie UEFI log zdarzeń bieżącego uruchamiania (/sys/kernel/security/tpm0/binary_bios_measurements) lub lokalnie zapisany log TPM2 (/run/log/systemd/tpm2-measure.log). Obsługa reguł dostępu zapisywanych została dodana do systemd-cryptsetup, systemd-cryptenroll i systemd-repart.
- Dodano moduł PAM pam_systemd_loadkey.so, przeznaczony do automatycznego wydobywania z magazynu kluczy w jądrze (keyring) hasła używanego w cryptsetup do odblokowania zaszyfrowanego systemu plików root oraz ustawiania tego hasła jako tokena uwierzytelniającego (PAM authtok). Moduł może być stosowany na przykład w celu skonfigurowania automatycznego odblokowywania dostępu do GNOME Keyring i KDE Wallet przy włączonym automatycznym logowaniu.
- Dodano wsparcie dla przechodzenia w stan hibernacji (hibernation) z zachowaniem zawartości pamięci w plikach wymiany, przechowywanych w systemie plików Btrfs.
- Do jednostek dodano właściwości MemoryPeak, MemorySwapPeak, MemorySwapCurrent i MemoryZSwapCurrent, odpowiadające dostępnym przez cgroup v2 właściwościom memory.peak, memory.swap.peak, memory.swap.current i memory.zswap.current. Informacje o tych właściwościach zostały dołączone do wyjścia „systemctl status”.
- Przeprojektowano sposób uruchamiania usług, który przeszedł na wykorzystanie wywołania posix_spawn z opcjami CLONE_VM i CLONE_VFORK do uruchomienia procesu oraz zastosowanie osobnego pliku wykonywalnego systemd-executor do konfiguracji uruchamianego procesu. Wcześniej procesy były tworzone za pomocą funkcji fork z kopiowaniem pamięci procesu macierzystego w trybie copy-on-write i wykonywaniem niezbędnych ustawień (montowanie przestrzeni nazw i ustawienie CGroup) przed uruchomieniem docelowego pliku wykonywalnego za pomocą wywołania exec, co prowadziło do problemów z powodu niemożności uzyskania dostępu do niektórych interfejsów API Glibc na etapie między wykonaniem funkcji fork a exec.
- Kod do śledzenia wewnętrznych procesów został dostosowany do użycia PIDFD zamiast PID w środowiskach z jądrem obsługującym PIDFD (PIDFD jest powiązany z konkretnym procesem i nie zmienia się, podczas gdy PID może być przypisany do innego procesu po zakończeniu bieżącego procesu skojarzonego z tym PID). Wprowadzono możliwość tworzenia jednostek scope, używając PIDFD zamiast PID do wyboru procesów.
- Wsparcie dla rozdzielnych hierarchii katalogów (gdy /usr jest montowane oddzielnie od root lub katalogi /bin i /usr/bin, /lib i /usr/lib są rozdzielone) zostało zakończone. W przyszłości planowane jest również zakończenie wsparcia dla cgroups v1, skryptów usług System V oraz zmiennych EFI SystemdOptions.
- Polecenie «systemctl switch-root» zostało ograniczone do stosowania tylko w initrd. Aby zastąpić system plików root w zwykłym środowisku, należy użyć «systemctl soft-reboot».
- Parametry SuspendMode, HybridSleepMode, HibernateStat i HybridSleepState w sekcji «[Sleep]» pliku systemd-sleep.conf zostały oznaczone jako przestarzałe. Te parametry są teraz ignorowane i mogą przyjmować tylko wartości domyślne.
- Do jednostek dodano opcję SurviveFinalKillSignal, pozwalającą na zignorowanie końcowego sygnału SIGTERM/SIGKILL, wysyłanego podczas zakończenia pracy, co może być przydatne do pozostawienia jednostki uruchomionej podczas miękkiego restartu systemu w trybie soft-reboot.
- Dodano ustawienie NFTSet, umożliwiające użycie identyfikatorów cgroups do przełączania logiki w regułach zapory sieciowej.
- Dodano opcję ConditionSecurity=measured-uki, która zapewnia, że jednostka może być uruchomiona tylko w systemie załadowanym z weryfikowanego obrazu jądra w formacie UKI.
- W systemd-boot dodano nowe skróty klawiszowe «B» i «O» do ponownego uruchamiania i wyłączania systemu z menu bootowania. Dodano ustawienie «menu-disabled» do wyłączenia wyświetlania menu bootowania.
- Do narzędzia systemd-repart dodano nowe opcje «—copy-from» do pobierania opisów partycji z podanego obrazu systemu plików, «—copy-source» do wskazywania podstawowego katalogu dla parametru CopyFiles, «—make-ddi=confext», «—make-ddi=sysext» i «—make-ddi=portable» do generowania różnych typów DDI oraz «—tpm2-device-key» do powiązania dysku z określonym kluczem publicznym TPM2.
- W narzędziu journalctl dodano wartość «+N» do parametru «—lines» w celu wyświetlenia N najstarszych wpisów.
- W udevadm dodano flagę «—json» do wyjścia w formacie JSON.
- Do narzędzi systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl i systemd-binfmt dodano opcję „—tldr”, która wyświetla tylko faktyczne parametry konfiguracyjne, bez pustych przestrzeni i komentarzy.
- Do podsystemu seccomp dodano obsługę architektury LoongArch64. Umożliwiono korzystanie z seccomp do filtrowania wywołań systemowych w usługach, które nie są uruchamiane z uprawnieniami użytkownika root, bez włączania opcji NoNewPrivileges=yes.
- Do narzędzia systemd-mount dodano opcję „—tmpfs” do montowania nowego egzemplarza ‘tmpfs’.
Źródło: opennet.ru
