8.75. Systemd-255

Systemd pakken inneholder programmer for å kontrollere oppstarten, kjøring og avslutning av systemet.

Omtrentlig byggetid: 0.7 SBU
Nødvendig diskplass: 247 MB

8.75.1. Installasjon av systemd

Fjern to unødvendige grupper, render og sgx, fra standard udev regler:

sed -i -e 's/GROUP="render"/GROUP="video"/' \
       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in

Nå fiks en sikkerhetssårbarhet i DNSSEC verifiseringen av systemd-resolved og en feil som bryter kjørende systemd-analyze verify på en instansiert systemd enhet:

patch -Np1 -i ../systemd-255-upstream_fixes-1.patch

Forbered systemd for kompilering:

mkdir -p build
cd       build

meson setup \
      --prefix=/usr                 \
      --buildtype=release           \
      -Ddefault-dnssec=no           \
      -Dfirstboot=false             \
      -Dinstall-tests=false         \
      -Dldconfig=false              \
      -Dsysusers=false              \
      -Drpmmacrosdir=no             \
      -Dhomed=disabled              \
      -Duserdb=false                \
      -Dman=disabled                \
      -Dmode=release                \
      -Dpamconfdir=no               \
      -Ddev-kvm-mode=0660           \
      -Dnobody-group=nogroup        \
      -Dsysupdate=disabled          \
          -Dukify=disabled              \
      -Ddocdir=/usr/share/doc/systemd-255 \
      ..

Betydningen av meson alternativene:

--buildtype=release

Denne bryteren overstyrer standard byggetype (debug), som ville produsert uoptimaliserte binære filer.

-Ddefault-dnssec=no

Denne bryteren slår av den eksperimentelle DNSSEC støtten.

-Dfirstboot=false

Denne bryteren forhindrer installasjon av systemd tjenester ansvarlig for å sette opp systemet for den første gangen. De er ikke nyttige for LFS pga alt gjøres manuelt.

-Dinstall-tests=false

Denne bryteren forhindrer installasjon av de kompilerte testene.

-Dldconfig=false

Denne bryteren forhindrer installasjon av en systemd enhet som kjører ldconfig ved oppstart; dette er ikke nyttig for kildedistribusjoner som LFS, og gjør oppstartstiden lengre. Fjern dette alternativet for å aktivere kjøring av ldconfig ved oppstart.

-Dsysusers=false

Denne bryteren forhindrer installasjon av systemd tjenester som er ansvarlige for å sette opp /etc/group og /etc/passwd filer. Begge filene ble opprettet i forrige kapittel. Denne nissen (daemon) er ikke nyttig på et LFS system siden brukerkontoer opprettes manuelt.

-Drpmmacrosdir=no

Denne bryteren deaktiverer installasjon av RPM makroer for bruk med systemd fordi LFS ikke støtter RPM.

-Dhomed=disabled og -Duserdb=false

Fjerner to nisser som har avhengigheter som ikke passer omfanget av LFS.

-Dman=disabled

Forhindre generering av mansider for å unngå ekstra avhengigheter. Vi vil installere forhåndsgenererte mansider for systemd fra en tarball senere.

-Dmode=release

Deaktiver noen funksjoner som anses som eksperimentelle av oppstrøms.

-Dpamconfdir=no

Forhindrer installasjon av en PAM-konfigurasjonsfil som ikke er funksjonell på LFS.

-Ddev-kvm-mode=0660

Standard udevregler vil tillate alle brukere tilgang til /dev/kvm. Redaktørene anser det som farlig. Dette alternativet overstyrer det.

-Dnobody-group=nogroup

Forteller pakken gruppenavnet med GID 65534 er nogroup.

-Dsysupdate=disabled

Ikke installer systemd-sysupdate verktøyet. Det er designet for automatisk å oppgradere binære distros, Så det er ubrukelig for et grunnleggende Linux system bygget fra grunnen. Og det vil rapportere feil ved oppstart hvis det er aktivert, men ikke riktig konfigurert.

-Dukify=disabled

Ikke installer systemd-ukify skriptet. Ved kjøretid krever dette skriptet pefile Python modulen som verken LFS eller BLFS gir.

Kompiler pakken:

ninja

Installer pakken:

ninja install

Installer mansidene:

tar -xf ../../systemd-man-pages-255.tar.xz \
    --no-same-owner --strip-components=1   \
    -C /usr/share/man

Opprett filen /etc/machine-id som trengs av systemd-journald:

systemd-machine-id-setup

Sett opp den grunnleggende målstrukturen:

systemctl preset-all

8.75.2. Innhold i systemd

Installerte programmer: busctl, coredumpctl, halt (symlenke til systemctl), hostnamectl, init, journalctl, kernel-install, localectl, loginctl, machinectl, mount.ddi (symlenke til systemd-dissect), networkctl, oomctl, portablectl, poweroff (symlenke til systemctl), reboot (symlenke til systemctl), resolvconf (symlenke til resolvectl), resolvectl, runlevel (symlenke til systemctl), shutdown (symlenke til systemctl), systemctl, systemd-ac-power, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, systemd-confext (symlenke til systemd-sysext), systemd-creds, systemd-delta, systemd-detect-virt, systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128, systemd-inhibit, systemd-machine-id-setup, systemd-mount, systemd-notify, systemd-nspawn, systemd-path, systemd-repart, systemd-resolve (symlenke til resolvectl), systemd-run, systemd-socket-activate, systemd-stdio-bridge, systemd-sysext, systemd-tmpfiles, systemd-tty-ask-password-agent, systemd-umount (symlenke til systemd-mount), telinit (symlenke til systemctl), timedatectl, og udevadm
Installerte biblioteker: libnss_myhostname.so.2, libnss_mymachines.so.2, libnss_resolve.so.2, libnss_systemd.so.2, libsystemd.so, libsystemd-shared-255.so (in /usr/lib/systemd), og libudev.so
Installerte mapper: /etc/binfmt.d, /etc/init.d, /etc/kernel, /etc/modules-load.d, /etc/sysctl.d, /etc/systemd, /etc/tmpfiles.d, /etc/udev, /etc/xdg/systemd, /usr/lib/systemd, /usr/lib/udev, /usr/include/systemd, /usr/lib/binfmt.d, /usr/lib/environment.d, /usr/lib/kernel, /usr/lib/modules-load.d, /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d, /usr/share/doc/systemd-255, /usr/share/factory, /usr/share/systemd, /var/lib/systemd, og /var/log/journal

Korte beskrivelser

busctl

Brukes til å selvransake og overvåke D-Bus bussen

coredumpctl

Brukes til å hente kjernedumper fra systemd journalen

halt

Starter vanligvis shutdown med -h alternativet, bortsett fra når du allerede er på kjørenivå 0, når den ber kjernen om å stoppe systemet; noterer den i filen /var/log/wtmp at systemet blir slått av

hostnamectl

Brukes til å spørre og endre systemets vertsnavn og relaterte innstillinger

init

Er den første prosessen som startes når kjernen har initialisert maskinvaren; init tar over oppstartsprosessen og starter alle prosesser i henhold til sine konfigurasjonsfiler. I dette tilfellet starter den systemd

journalctl

Brukes til å spørre om innholdet i systemd journalen

kernel-install

Brukes til å legge til og fjerne kjerne- og initramfs-bilder til og fra /boot. I LFS gjøres dette manuelt

localectl

Brukes til å spørre og endre systemlokaliteten og tastaturoppsettets innstillinger

loginctl

Brukes til å selvransake og kontrollere tilstanden til systemd påloggingsbehandler

machinectl

Brukes til å selvransake og kontrollere tilstanden til systemd virtuelle maskin og container registreringsbehandler

networkctl

Brukes til å selvransake og konfigurere nettverkets koblinger konfigurert av systemd-networkd

oomctl

Styrer systemd tomt for minne (Out Of Memory) nissen

portablectl

Brukes til å koble til eller koble fra flyttbare tjenester fra det lokale systemet

poweroff

Instruerer kjernen om å stoppe systemet og slå av datamaskinen (se halt)

reboot

Instruerer kjernen om å starte systemet på nytt (se halt)

resolvconf

Registrerer DNS server og domenekonfigurasjon med systemd-resolved

resolvectl

Sender kontrollkommandoer til nettverksnavnoppløsningens behandler, eller løser domenenavn, IPv4- og IPv6-adresser, DNS poster og tjenester

runlevel

Sender ut forrige og gjeldende kjøringsnivå som nevnt i siste run-level oppføring i /run/utmp

shutdown

Bringer systemet ned på en trygg og sikker måte, signaliserer alle prosesser og varsle alle påloggede brukere

systemctl

Brukes til å selvransake og kontrollere tilstanden til systemd system og servicebehandler

systemd-ac-power

Rapporterer om systemet er koblet til en ekstern strømkilde.

systemd-analyze

Brukes til å analysere systemoppstartsytelse, samt identifisere plagsomme systemenheter

systemd-ask-password

Brukes til å spørre om et systempassord eller passordfrase fra brukeren, ved å bruke en spørsmålsmelding spesifisert på kommandolinjen

systemd-cat

Brukes til å koble til STDOUT og STDERR utdata til en prosess med systemd journal

systemd-cgls

Viser rekursivt innholdet i den valgte Linux kontrollgruppens hierarki i et tre

systemd-cgtop

Viser de øverste kontrollgruppene til den lokale Linux kontrollgruppens hierarki, sortert etter CPU, minne og disk I/O-belastning

systemd-creds

Viser og behandler akkreditiver

systemd-delta

Brukes til å identifisere og sammenligne konfigurasjonsfiler i /etc som overstyrer standard i /usr

systemd-detect-virt

Oppdager om systemet kjøres i et virtuelt miljø, og justerer udev deretter

systemd-dissect

Brukes til å inspisere OS diskbilder

systemd-escape

Brukes til escape strenger for inkludering i systemd enhetsnavn

systemd-hwdb

Brukes til å administrere maskinvaredatabasen (hwdb)

systemd-id128

Genererer og skriver ut id128 (UUID) strenger

systemd-inhibit

Brukes til å kjøre et program med avstenging, hvilemodus eller inaktiv hemmerlås tatt, forhindrer en handling som for eksempel en systemavslutning til prosessen er fullført

systemd-machine-id-setup

Brukes av systeminstallasjonsverktøy for å initialisere maskin-ID lagret i /etc/machine-id ved installasjonstidspunktet med en tilfeldig generert ID

systemd-mount

Brukes til midlertidig montering eller automontering av disker

systemd-notify

Brukes av nisseskript for å varsle init-systemet om status endringer

systemd-nspawn

Brukes til å kjøre en kommando eller OS i en lett navneområde container

systemd-path

Is used to query system and user paths

systemd-repart

Brukes til å vokse og legge til partisjoner til en partisjonstabell når systemd brukes i et OS bilde (f.eks. en container)

systemd-resolve

Brukes til å løse domenenavn, IPV4- og IPv6-adresser, DNS ressursposter og tjenester

systemd-run

Brukes til å opprette og starte en forbigående .service eller en .scope enhet og kjøre den angitte kommandoen i den. Dette er nyttig for validering av systemenheter

systemd-socket-activate

Brukes til å lytte på socket enheter og starte en prosess med en vellykket tilkobling til en socket

systemd-sysext

Aktiverer systemutvidelsesbilder

systemd-tmpfiles

Oppretter, sletter og rydder opp i flyktige og midlertidige filer og mapper, basert på konfigurasjonsfilformatet og plasseringen spesifisert i tmpfiles.d mappene

systemd-umount

Avmonterer monteringspunkter

systemd-tty-ask-password-agent

Brukes til å liste og/eller behandle ventende systemd passord forespørsler

telinit

Forteller init hvilket kjørenivå det skal endres til

timedatectl

Brukes til å spørre og endre systemklokken og dens innstillinger

udevadm

Er et generisk udev administrasjonsverktøy som kontrollerer udevd nissen, gir informasjon fra Udev maskinvaredatabasen, overvåker uevents, venter på at uevents skal fullføres, tester udev konfigurasjon og utløser uevents for en gitt enhet

libsystemd

Er det viktigste systemd verktøybiblioteket

libudev

Er et bibliotek for å få tilgang til Udev enhetsinformasjon