Wydanie menedżera systemu systemd 261 oraz forka liberated-systemd 261

Po trzech miesiącach rozwoju dostępna jest wersja menedżera systemowego systemd 261. Kluczowe zmiany: przygotowanie do wsparcia API do weryfikacji wieku, wsparcie dla podsystemów Kexec Handover i Live Update Orchestration umożliwiających ponowne uruchomienie bez utraty stanu, podsystem IMDS (Instance Metadata Service), funkcjonalność mająca na celu ochronę uruchamiania na systemach bez fizycznego TPM (Trusted Platform Module), komponent systemd-sysinstall realizujący instalator.

Wśród zmian w nowej wersji:

  • Dodano nowy komponent systemd-sysinstall z realizacją prostego instalatora systemu operacyjnego, którym można zarządzać z poziomu wiersza poleceń lub przez interaktywny tekstowy interfejs użytkownika. Funkcjonalność systemd-sysinstall została stworzona na podstawie istniejących możliwości systemd: do konfiguracji partycji dyskowych wykorzystano systemd-repart, do instalacji jądra i generowania menu rozruchowego — polecenie „bootctl link”, do instalacji bootloadera systemd-boot — polecenie „bootctl install”, do wstępnej konfiguracji instalowanego systemu (np. wybór lokalizacji i układu klawiatury) — systemd-creds.
  • W ramach przygotowań do wdrożenia wymagań prawnych dotyczących integracji w systemie API do sprawdzania wieku w bazie danych userdb dodano pole birthDate z datą urodzenia użytkownika. Nowo dodane pole będzie mogło być używane w rozwijanym dla dystrybucji portalu xdg-desktop-portal oraz usłudze AccountsService do dostarczania aplikacjom informacji o kategorii wiekowej użytkownika przez interfejs D-Bus „org.freedesktop.AgeVerification1” lub „org.freedesktop.ParentalControls”. Do polecenia homectl dodano opcję „—birth-date”.
  • W obsługę PID1 dodano wsparcie dla podsystemów jądra Linux LUO (Live Update Orchestration) i KHO (Kexec Handover), które umożliwiają pełne ponowne uruchomienie i aktualizację jądra bez zatrzymywania pracy i bez utraty stanu systemu, urządzeń i procesów. KHO daje możliwości uruchomienia nowego jądra z starego bez utraty stanu systemu, a LUO realizuje zachowanie stanu urządzeń i pamięci operacyjnej, a także zapewnia ciągłość operacji związanych z DMA i obsługą przerwań.

    W systemd dla jednostek systemowych i użytkownikowskich wdrożono możliwość przechowywania deskryptorów plików przed wywołaniem kexec i ich przywracania po ponownym uruchomieniu jądra za pomocą kexec. W jednostkach można również tworzyć własne sesje LUO, które są zapisywane i przywracane podczas wykonywania kexec. Aby włączyć zachowanie stanu magazynu deskryptorów plików, należy użyć ustawienia 'FileDescriptorStorePreserve=yes'.

  • Wdrożono podsystem systemd-imdsd, który udostępnia API oparte na Varlink IPC, umożliwiające lokalnym programom dostęp do usług IMDS (Instance Metadata Service) oferowanych przez różnych dostawców chmur. IMDS daje możliwość maszyn wirtualnych uzyskiwania informacji o środowisku chmurowym, na przykład można otrzymać szczegóły dotyczące konfiguracji sieci, geograficznego położenia węzła, typu CPU i rozmiaru magazynu. W systemd-imdsd udostępniono zarówno niskopoziomowe API do dostępu do oddzielnych pól, jak i wysokopoziomowy interfejs do zapytań według typowych kluczy, przypisanych do kluczy specyficznych dla poszczególnych platform chmurowych. Aby współdziałać z systemd-imdsd, dodano narzędzie systemd-imds, które umożliwia importowanie pól z IMDS do lokalnego systemu kont użytkowników.

    Aby rozpoznać platformy chmurowe na podstawie informacji z SMBIOS i określić dostępne na bieżącym węźle funkcje IMDS, dodano nową bazę danych hwdb.d/40-imds.hwdb. Wdrożono rozpoznawanie platform chmurowych Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS oraz Vultr. Dostępny jest także procesor systemd-imds-generator do automatycznego podstawiania usługi do uzyskiwania danych przez IMDS w przypadku wykrycia działania na wspieranej platformie chmurowej. Możliwe jest tworzenie uniwersalnych obrazów, które wspierają korzystanie z IMDS podczas uruchamiania w środowiskach chmurowych, ale mogą działać również bez IMDS.

  • W systemd-stub wdrożono funkcjonalność 'boot secret', która umożliwia wygenerowanie klucza na podstawie zmiennej EFI, przechowywanej w niedostępnym dla systemu operacyjnego obszarze i zainicjowanej losową wartością. W initrd klucz jest przekazywany poprzez plik /.extra/boot-secret. Przedstawiona funkcjonalność może być wymagana do uzyskania specyficznego dla systemu losowego klucza do weryfikacji procesu uruchamiania lub szyfrowania na systemach bez sprzętowego TPM (Trusted Platform Module).
  • Dodano usługa systemd-tpm2-swtpm.service do uruchamiania emulatora chipów TPM swtpm (Emulator TPM Software), który można używać do automatycznego przełączania na programową implementację TPM dla bezpiecznego rozruchu na systemach bez sprzętowego TPM. Programowy TPM działa w przestrzeni użytkownika i nie zapewnia takiego samego poziomu zabezpieczeń jak sprzętowy TPM, ale w niektórych sytuacjach jego zastosowanie jest uzasadnione, w porównaniu do pracy bez TPM. Na przykład, programowy TPM może uzyskać klucz szyfrowania partycji dzięki nowej funkcjonalności „boot secret” i używać partycji ESP (EFI System Partition) na dysku do przechowywania swojego stanu. Aby automatycznie włączyć programowy TPM, zaproponowano parametr wiersza poleceń jądra systemd.tpm2_software_fallback.
  • Ogłoszono stabilny i umieszczony w /usr/bin/ komponent systemd-sysupdate, przeznaczony do automatycznego wykrywania, pobierania i instalowania aktualizacji z wykorzystaniem atomowego mechanizmu wymiany partycji, plików lub katalogów (wykorzystywane są dwa niezależne partycje/pliki/katalogi, z których jedna zawiera aktualnie działający zasób, a na drugiej instalowane jest kolejne aktualizacje, po czym partycje/pliki/katalogi są zamieniane miejscami).
  • W systemd-resolved wprowadzono możliwość nadpisywania lub wskazywania nowych rekordów DNS poprzez umieszczanie plików w formacie JSON w katalogach systemd/resolve/static.d/. W przeciwieństwie do /etc/hosts w nowych plikach można nie tylko wiązać adresy IP z nazwami hostów, ale również definiować zasobowe rekordy DNS RR, różne od „A” i „AAAA”. Ponadto w systemd-resolved dodano ustawienia rozmiaru pamięci podręcznej DNS: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ i ‘LLMNRCacheSize’.
  • Dodano narzędzie ‘storagectl’ do inspekcji urządzeń pamięci i zarządzania połączeniem urządzeń blokowych i systemów plików.
  • W ramach inicjatywy mającej na celu zmniejszenie zależności w libsystemd wprowadzono dynamiczne ładowanie bibliotek libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk i libcryptsetup
    za pomocą wywołania dlopen() w sytuacjach, gdy ich funkcje są rzeczywiście potrzebne.
  • W systemd-tmpfiles dodano opcję „—inline”, pozwalającą na ustawianie dyrektyw w linii poleceń bez tworzenia plików konfiguracyjnych w tmpfiles.d/ oraz bez przesyłania ustawień przez STDIN. Dodano nowy typ dyrektyw ‘k/K’ do ustawiania uprawnień. Dodano plik konfiguracyjny tmpfiles.d/root.conf, który ustawia prawa dostępu 0555 (-r-xr-xr-x) do katalogu głównego (/) w celu ochrony przed błędnym wskazaniem praw podczas dynamicznego formowania systemu plików root.
  • W narzędziu bootctl zapewniono możliwość zapisania kopii zapasowej ładowarki systemu systemd-boot i zapisania starej wersji w UEFI jako zapasowej opcji rozruchowej.
  • W systemd-vmspawn dodano wsparcie dla bezpośredniego uruchamiania jądra bez użycia firmware UEFI. Wprowadzono opcję „—firmware-features” do selektywnego włączania lub wyłączania poszczególnych funkcji firmware. Dodano tryb „—console=headless” do uruchamiania maszyny wirtualnej bez konsoli i ekranu. Dodano opcję „—image-disk-type” do wyboru stosowanego w VM typu pamięci blokowej (virtio-blk, virtio-scsi, nvme, scsi-cd). Dodano opcję „—coco” (Confidential Computing) do włączenia trybu szyfrowania pamięci. maszyn wirtualnych z wykorzystaniem technologii AMD SEV-SNP.
  • W systemd-hostnamed oraz w /etc/machine-info dodano wsparcie dla przypisywania do aktualnego systemu dowolnych tagów, przy użyciu parametru „Tags”. Ustawione tagi mogą być następnie wykorzystywane do selektywnego stosowania ustawień z weryfikacją przez wyrażenie ConditionMachineTag.
  • Dodano ustawienia EventLoopRateLimitIntervalSec oraz EventLoopRateLimitBurst, ograniczające intensywność cyklu przetwarzania zdarzeń w PID1 w celu zwolnienia zasobów CPU w przypadku zapętlenia.
  • W menedżerze usług wprowadzono ustawienie MinimumUptimeSec do określenia minimalnego czasu pracy systemu (domyślnie 15 sekund). Jeśli przed upływem tego czasu zainicjowane zostanie zakończenie pracy lub ponowne uruchomienie, do etapu zamykania dodawane jest odpowiednie opóźnienie.
  • Dla jednostek wprowadzono nowe ustawienia CPUSetPartition do określenia typu podziału cpuset w cgroup („root”, „isolated”, „member”), RestrictFileSystemAccess do zezwolenia na uruchamianie tylko plików wykonywalnych, które zostały zweryfikowane cyfrowym podpisem za pomocą dm-verity, oraz CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec do uzyskiwania powiadomień o wysokim obciążeniu CPU i I/O.
  • Rozszerzona lista metryk, które są wydawane przez narzędzie systemd-report. Na przykład dodano informacje o rozmiarze pamięci fizycznej oraz aktywnych rdzeniach CPU, dane dotyczące zawartości pól SMBIOS oraz /etc/machine-info, informacje o wsparciu trybu Confidential Computing oraz szczegóły dotyczące producenta chipów TPM2.
  • W systemd-oomd wprowadzono możliwość definiowania reguł do selekcji procesów w przypadku braku pamięci w systemie. Reguły można ustawiać w katalogu /etc/systemd/oomd/rules.d/ lub w jednostkach serwisowych poprzez dyrektywę OOMRule.
  • W systemd-socket-proxy dodano wsparcie dla protokołu „PROXY”, zgodnego z pierwszą wersją protokołu „haproxy”.
  • W systemd-networkd wprowadzono nowy backend sd-dhcp-relay dla relay DHCP. Ustawienia w sekcji „[DHCPServer]” — BindToInterface, RelayTarget, RelayAgentCircuitId oraz RelayAgentRemoteId zostały uznane za przestarzałe, zamiast nich należy używać parametru DHCPRelay w sekcji „[Network]” oraz serii nowych ustawień w sekcji [DHCPRelay] i w pliku networkd.conf. Dodano polecenie ‘networkctl dhcp-lease INTERFACE’ do zapisywania zrzutu z informacjami o przydzielonych adresach IP (dzierżawa DHCP).
  • Do narzędzia systemd-nspawn dodano opcję „—restrict-address-families”, a w plikach .nspawn ustawienie RestrictAddressFamilies w celu ograniczenia używanych w kontenerze rodzin adresów gniazd. W przyszłych wydaniach domyślnie będą dozwolone tylko rodziny AF_INET, AF_INET6 oraz AF_UNIX.
  • Zakończono wsparcie dla starego formatu bazy danych udev (wersja 0.x). Aktualizacja w czasie rzeczywistym z wersji systemd do wersji 247 nie jest już wspierana.
  • Podczas budowy z biblioteką C musl wymagane jest teraz co najmniej wydanie musl 1.2.6.

Dodatkowo można zauważyć wydanie projektu liberated-systemd 261, rozwijającego fork systemd, pozbawionego kodu, który może być używany do śledzenia użytkowników. W zaproponowanej wersji zmiany ograniczają się do usunięcia kodu, który dodaje do userdb pole birthDate z datą urodzenia użytkownika oraz do narzędzia homectl opcję „—birth-date” do ustawiania wieku.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster