Kapitel 3. Initialisering av systemet

# Kapitel 3. Initialisering av systemet

Det är klokt att du som systemadministratör vet ungefär hur Debian-systemet startas och konfigureras. Även om de exakta detaljerna finns i källfilerna för de installerade paketen och deras dokumentationer, är det lite överväldigande för de flesta av oss.

Här är en grov översikt över de viktigaste punkterna i initieringen av Debiansystemet. Eftersom Debiansystemet är ett rörligt mål, bör du läsa den senaste dokumentationen.

- Debian Linux Kernel Handbook är den primära källan till information om Debians kärnprogram.

- bootup(7) beskriver systemets uppstartsprocess baserad på `systemd`. (Senaste Debian)

- boot(7) beskriver systemets uppstartsprocess baserat på UNIX System V Release 4. (Äldre Debian)

## 3.1. En översikt av boot strap-processen

Datorsystemet genomgår flera faser av boot strap-processer från det att det slås på tills det erbjuder ett fullt fungerande operativsystem (OS) till användaren.

För enkelhetens skull begränsar jag diskussionen till den typiska PC-plattformen med standardinstallation.

Den typiska boot strap-processen är som en fyrstegsraket. Varje steg i raketen överlämnar systemkontrollen till nästa steg.

- Avsnitt 3.1.1, ”Steg 1: UEFI”

- Avsnitt 3.1.2, ”Steg 2: startladdaren”

- Avsnitt 3.1.3, ”Steg 3: mini-Debian-systemet”

- Avsnitt 3.1.4, ”Steg 4: det normala Debian-systemet”

Naturligtvis kan dessa konfigureras på olika sätt. Om du till exempel har kompilerat din egen kärna kanske du hoppar över steget med mini-Debian-systemet. Så anta inte att detta är fallet för ditt system förrän du har kontrollerat det själv.

### 3.1.1. Steg 1: UEFI

UEFI (Unified Extensible Firmware Interface) definierar en starthanterare som en del av UEFI-specifikationen. När en dator slås på är starthanteraren det första steget i startprocessen som kontrollerar startkonfigurationen och utifrån dess inställningar kör den angivna startladdaren för operativsystemet eller operativsystemets kärna (vanligtvis startladdaren). Startkonfigurationen definieras av variabler som lagras i NVRAM, inklusive variabler som anger filsystemets sökvägar till OS-laddare eller OS-kärnor.

En EFI-systempartition (ESP) är en datalagringsenhetspartition som används i datorer som följer UEFI-specifikationen. Den öppnas av UEFI-firmware när datorn slås på och lagrar UEFI-program och de filer som dessa program behöver för att köras, inklusive operativsystemets startladdare. (I äldre PC-system kan BIOS som lagras i MBR användas i stället)

### 3.1.2. Steg 2: startladdaren

Startladdaren är det andra steget i startprocessen som startas av UEFI. Den laddar systemkärnans avbildning och initrd-avbildningen till minnet och överlämnar kontrollen till dem. Denna initrd-bild är rotfilsystembilden och dess stöd beror på vilken startladdare som används.

Debian-systemet använder normalt Linux-kärnan som standardkärna för systemet. Initrd-avbildningen för den aktuella Linuxkärnan 5.x är tekniskt sett initramfs-avbildningen (initial RAM filesystem).

Det finns många olika boot loaders och konfigurationsalternativ.

Tabell 3.1. Lista över startladdare

paket | popcon | storlek | initrd | startladdare | beskrivning
--- | --- | --- | --- | --- | ---
grub-efi-amd64 | I:451 | 142 | Stöds | GRUB UEFI | Den är tillräckligt smart för att förstå diskpartitioner och filsystem som vfat, ext4, .... (UEFI)
grub-pc | V:17, I:525 | 479 | Stöds | GRUB 2 | Den är tillräckligt smart för att förstå diskpartitioner och filsystem som vfat, ext4, .... (BIOS)
grub-rescue-pc | V:0.06, I:0.59 | 7273 | Stöds | GRUB 2 | Detta är GRUB 2 startbara räddningsavbildningar (CD och diskett) (PC/BIOS-version)
grml-rescueboot | V:0.1, I:1.1 | 36 | N/A | GRUB 2 plug-in | grml-rescueboot adds live Linux ISO images to the grub2 boot menu
syslinux | V:3, I:32 | 325 | Stöds | Isolinux | Detta förstår filsystemet ISO9660. Detta används av start-CD:n.
syslinux | V:3, I:32 | 325 | Stöds | Syslinux | Detta förstår MSDOS filsystem (FAT). Detta används av startdisketten.
loadlin | V:0.03, I:0.40 | 87 | Stöds | Loadlin | Nytt system startas från FreeDOS/MSDOS-systemet.
mbr | V:0.3, I:2.9 | 47 | Stöds inte | MBR av Neil Turton | Detta är fri programvara som ersätter MSDOS MBR. Detta förstår bara diskpartitioner.

För UEFI-system läser GRUB2 först ESP-partitionen och använder UUID som anges för `search.fs_uuid` i "`/boot/efi/EFI/debian/grub.cfg`" för att bestämma partitionen i GRUB2-menyns konfigurationsfil "`/boot/grub/grub.cfg`".

Den viktigaste delen av GRUB2-menykonfigurationsfilen ser ut som följer:

    menuentry 'Debian GNU/Linux' ... {
            load_video
            insmod gzio
            insmod part_gpt
            insmod ext2
            search --no-floppy --fs-uuid --set=root fe3e1db5-6454-46d6-a14c-071208ebe4b1
            echo    'Loading Linux 5.10.0-6-amd64 ...'
            linux   /boot/vmlinuz-5.10.0-6-amd64 root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet
            echo    'Loading initial ramdisk ...'
            initrd  /boot/initrd.img-5.10.0-6-amd64
    }

För den här delen av `/boot/grub/grub.cfg` betyder den här menyposten följande.

Tabell 3.2. Betydelsen av menyalternativet i ovanstående del av `/boot/grub/grub.cfg`

inställningen | värde
--- | ---
GRUB2-moduler laddade | `gzio`, `part_gpt`, `ext2`
root filsystem partition används | partition identifierad av `UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1`
sökväg till kärnavbildningen i rotfilsystemet | `/boot/vmlinuz-5.10.0-6-amd64`
parameter för kärnstart som används | "`root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet`"
initrd-bildsökväg i rotfilsystemet | `/boot/initrd.img-5.10.0-6-amd64`

On Debian system, "`/boot/grub/grub.cfg`" is managed by the installed GRUB package (e.g. `grub-efi-amd64`) and direct user modification to this file is deprecated. You should customize configuration files in "`/etc/grub.d/`" and "`/etc/default/grub`", instead. Then configure the GRUB configuration files and update NVRAM variables to automatically boot into Debian by:

    # dpkg-reconfigure grub-efi-amd64

| Tips
You can show kernel boot log messages by removing "`quiet`" from the "`GRUB_CMDLINE_LINUX_DEFAULT`" value in "`/etc/default/grub`".

| Tips
You can add GRUB splash background by placing its image file in "`/boot/grub/`".

See "`info grub`", grub-install(8), grub-mkconfig(8).

### 3.1.3. Steg 3: mini-Debian-systemet

Mini-Debian-systemet är det 3:e steget i startprocessen som startas av startladdaren. Det kör systemkärnan med dess rotfilsystem i minnet. Detta är ett valfritt förberedande steg i startprocessen.

| Notera
Termen "mini-Debian-systemet" har myntats av författaren för att beskriva det tredje steget i uppstartsprocessen i det här dokumentet. Det här systemet kallas vanligen initrd- eller initramfs-systemet. Ett liknande system i minnet används av Debians installationsprogram.

Programmet "`/init`" körs som det första programmet i detta rotfilsystem på minnet. Det är ett program som initierar kärnan i användarutrymmet och överlämnar kontrollen till nästa steg. Detta mini-Debian-system erbjuder flexibilitet i uppstartsprocessen, t.ex. genom att lägga till kärnmoduler före den huvudsakliga uppstartsprocessen eller genom att montera rotfilsystemet som ett krypterat filsystem.

- Programmet "`/init`" är ett skalskriptprogram om initramfs skapades av `initramfs-tools`.

  - Du kan avbryta denna del av startprocessen för att få root shell genom att ange "`break=init`" etc. till kernel boot parameter. Se skriptet "`/init`" för fler avbrottsvillkor. Den här skalmiljön är tillräckligt sofistikerad för att du ska kunna göra en bra inspektion av maskinens maskinvara.

  - De kommandon som finns tillgängliga i detta mini-Debian-system är avskalade och tillhandahålls huvudsakligen av ett GNU-verktyg som heter busybox(1).

- Programmet "`/init`" är ett binärt `systemd-program` om initramfs skapades av `dracut`.

  - Kommandon som är tillgängliga i detta mini-Debian-system är avskalade från systemd(1)-miljön.

| Observera
Du måste använda alternativet "`-n`" för `mount-kommandot` när du befinner dig på det skrivskyddade rotfilsystemet.

### 3.1.4. Steg 4: det normala Debian-systemet

The normal Debian system is the 4th stage of the boot process which is started by the mini-Debian system. The system kernel for the mini-Debian system continues to run in this environment. The root filesystem is switched from the one on the memory to the one on the physical storage device.

Init-programmet körs som det första programmet med PID=1 för att utföra den huvudsakliga startprocessen för att starta många program. Standardfilvägen för init-programmet är "`/usr/sbin/init`", men den kan ändras med kärnans startparameter "`init=/path/to/init_program`".

"`/usr/sbin/init`" är symlänkat till "`/lib/systemd/systemd`" efter Debian 8 Jessie (utgiven 2015).

| Tips
Det faktiska init-kommandot på ditt system kan verifieras med kommandot "`ps --pid 1 -f`".

Tabell 3.3. Lista över uppstartsverktyg för Debian-systemet

paket | popcon | storlek | beskrivning
--- | --- | --- | ---
`systemd` | V:919, I:979 | 11764 | händelsebaserad init(8)-daemon för samtidighet (alternativ till `sysvinit`)
`cloud-init` | V:4.3, I:6.8 | 3240 | initialiseringssystem för molninstanser för infrastruktur
`systemd-sysv` | V:909, I:980 | 68 | de manussidor och länkar som behövs för att `systemd` ska kunna ersätta `sysvinit`
`init-system-helpers` | V:594, I:987 | 133 | hjälpverktyg för att växla mellan `sysvinit` och `systemd`
`initscripts` | V:17, I:62 | 197 | skript för initiering och avstängning av systemet
`sysvinit-core` | V:3.4, I:3.9 | 365 | System-V-liknande init(8)-verktyg
`sysv-rc` | V:33, I:66 | 85 | System-V-liknande mekanism för ändring av runlevel
`sysvinit-utils` | V:726, I:1000 | 100 | System-V-liknande verktyg`(startpar`(8), bootlogd(8), ...)
`lsb-base` | V:227, I:332 | 12 | Funktionalitet för init-skript i Linux Standard Base 3.2
`insserv` | V:40, I:65 | 132 | verktyg för att organisera startsekvensen med hjälp av LSB init.d-skriptberoenden
`kexec-tools` | V:1.4, I:5.3 | 320 | kexec-verktyg för kexec(8)-omstart (varm omstart)
`systemd-bootchart` | V:0.16, I:0.55 | 131 | analysator för prestanda i startprocessen
`mingetty` | V:0.1, I:2.6 | 36 | konsol endast getty(8)
`mgetty` | V:0.13, I:0.48 | 318 | smart modem getty(8) ersättning

| Tips
Se Debian wiki: BootProcessSpeedup för de senaste tipsen för att snabba upp uppstartsprocessen.

## 3.2. Rescue system

| Varning
Do not perform system administration tasks around the boot strap process without having a rescue system.

Availability of a rescue system enables us to perform challenging tasks such as:

- Booting a system from a broken boot loader installation

- Fixing a broken boot loader installation

- Extracting data from a broken unbootable system

- Editing filesystems, disk partitions, and LVM volumes involving the root filesystem

Typically, a rescue system is provided as a ISO image file and written to a removable storage media such as:

- USB flash drive prepared as Avsnitt 9.7.2, ”Skriva direkt till hårddisken”

- CD / DVD prepared as Avsnitt 9.7.7, ”Skriva direkt till CD/DVD-R/RW”

For simplicity, USB flash drive cases are mentioned as examples below but CD or DVD may be used as well.

| Tips
You may need to change some UEFI NVRAM variables to boot arbitrary boot loaders on the removable storage media.

### 3.2.1. GRUB UEFI rescue system on USB

The GRUB UEFI rescue system with menu can be started by turning on system power with the "GRUB UEFI rescue system on USB" inserted.

This "GRUB UEFI rescue system on USB" is prepared by writing the Super Grub2 Disk ISO image to USB flash drive in advance.

In case of broken boot loader configuration by the installation of another operating system etc., you can fix this by:

- Start the GRUB UEFI rescue system to discover bootable installed systems automatically.

- Start the installed Debian system from the GRUB menu.

- At Linux root shell prompt:

      # dpkg-reconfigure grub-efi-amd64

| Notera
The bootable GRUB rescue ISO image can be generated by following "`info grub-mkrescue`", too. It offers a CLI GRUB shell prompt but doesn't offer automatic discovery of bootable installed systems.

### 3.2.2. Linux live rescue system on USB

The Linux live rescue system can be started by turning on system power with the "Linux live rescue system on USB" inserted.

This "Linux live rescue system on USB" can be prepared by writing one of Linux live ISO images based on Debian to a USB flash drive in advance. Here are some examples of such Linux live images.

- Debian Live images

- Kali Linux Live

- Grml Live Linux

Here are some use cases of this Linux live rescue system:

- Fix the broken boot loader configuration caused by the installation of another operating system etc.:

  - Start the Linux live rescue system.

  - Mount the partition containing the root filesystem of the unbootable installed Debian system to "`/mnt`".

  - At Linux root shell prompt:

        # chroot /mnt; dpkg-reconfigure grub-efi-amd64

- Fix the broken `dpkg` package:

  - Start the Linux live rescue system.

  - Mount the partition containing the root filesystem of the installed Debian system with the broken `dpkg` package to "`/mnt`".

  - At Linux root shell prompt:

        # dpkg --root /mnt -i /mnt/var/cache/apt/archives/dpkg_old_version_amd64.deb

- Perform normally prohibited changes such as filesystem operations to the installed system (see Avsnitt 9.6, ”Tips om datalagring”).

| Varning
Your GUI screen of the Linux live system may be locked after the inactivity.

| Tips

- It's a good idea to set your password as soon as you start a Linux live system.

- You may set your password for example by "`sudo passwd user`" from the user's shell prompt on the Linux virtual consoles (see Avsnitt 1.1.6, ”Virtuella konsoler”).

- Some Linux live systems may set their default "user/password": "Debian Live" = "user/live", "Kali Linux Live" = "kali/kali"

### 3.2.3. Linux live rescue system from GRUB

The Linux live rescue system can be started from the GRUB menu entry. The GRUB configuration for this is prepared by the following:

- Installera paketet `grml-rescueboot`.

- Find a Linux live ISO image which has "`/boot/grub/loopback.cfg`" in its image.

  - ISO images mentioned in Avsnitt 3.2.2, ”Linux live rescue system on USB” have "`/boot/grub/loopback.cfg`" in their image.

- Copy some of these Linux live ISO images to the "`/boot/grml/`" directory.

- Update GRUB menu by:

      # dpkg-reconfigure grub-efi-amd64

Upon turning on system power, the GRUB displays menu with candidates for Linux live rescue systems.

## 3.3. Systemd

### 3.3.1. Systemd startas

När Debian-systemet startar, startas `/usr/sbin/init` symlänkad till `/usr/lib/systemd` som init-systemprocessen`(PID=1)` som ägs av root`(UID=0`). Se systemd(1).

`Systemd` init-processen skapar parallella processer baserat på enhetskonfigurationsfilerna (se `systemd`.unit(5)) som är skrivna i deklarativ stil istället för SysV-liknande procedurell stil.

De processer som skapas placeras i individuella Linux-kontrollgrupper som får sitt namn efter den enhet de tillhör i den privata systemd-hierarkin (se cgroups och Avsnitt 4.7.5, ”Säkerhetsfunktioner i Linux”).

Enheter för systemläget laddas från "System Unit Search Path" som beskrivs i `systemd`.unit(5). De viktigaste är följande i prioritetsordning:

- "`/etc/systemd/system/*`": Systemenheter som skapats av administratören

- "`/run/systemd/system/*`": Runtime-enheter

- "`/lib/systemd/system/*`": Systemenheter som installerats av distributionens pakethanterare

Deras inbördes beroenden specificeras av direktiven "`Wants=`", "`Requires=`", "`Before=`", "`After=`", ... (se "MAPPING OF UNIT PROPERTIES TO THEIR INVERSES" i `systemd`.unit(5)). Resurskontrollerna är också definierade (se systemd.resource-control(5)).

Suffixet i enhetens konfigurationsfil kodar deras typer som:

- *.service beskriver den process som styrs och övervakas av `systemd`. Se systemd.service(5).

- *.device beskriver den enhet som exponeras i sysfs(5) och udev(7) enhetsträdet. Se `systemd`.device(5).

- *.mount beskriver den monteringspunkt för filsystemet som kontrolleras och övervakas av `systemd`. Se systemd.mount(5).

- *.automount beskriver den automatiska monteringspunkten för filsystemet som kontrolleras och övervakas av `systemd`. Se systemd.automount(5).

- *.swap beskriver den swap-enhet eller -fil som kontrolleras och övervakas av `systemd`. Se systemd.swap(5).

- *.path beskriver den sökväg som övervakas av `systemd` för sökvägsbaserad aktivering. Se systemd.path(5).

- *.socket beskriver det uttag som styrs och övervakas av `systemd` för uttagsbaserad aktivering. Se systemd.socket(5).

- *.timer beskriver den timer som styrs och övervakas av `systemd` för timerbaserad aktivering. Se systemd.timer(5).

- *.slice hanterar resurser med cgroups(7). Se systemd.slice(5).

- *.scope skapas programmatiskt med hjälp av bussgränssnitten i `systemd` för att hantera en uppsättning systemprocesser. Se systemd.scope(5).

- *.target grupperar andra enhetskonfigurationsfiler för att skapa synkroniseringspunkten under uppstarten. Se systemd.target(5).

Vid systemstart (dvs. init) försöker `systemd-processen` att starta "`/lib/systemd/system/default.target` (normalt symlänkat till "`graphical.target`"). Först dras några speciella målenheter (se `systemd`.special(7)) som "`local-fs`.target", "`swap`.target" och "`cryptsetup`.target" in för att montera filsystemet. Sedan dras även andra målenheter in genom målenhetsberoendena. För mer information, läs bootup(7).

`systemd` erbjuder funktioner för bakåtkompatibilitet. Startskript i SysV-stil i "`/etc/init.d/rc[0123456S].d/[KS]name`" tolkas fortfarande och telinit(8) översätts till begäran om aktivering av systemd-enheter.

| Observera
Emulerade runlevel 2 till 4 är alla symlänkade till samma "`multi-user.target`".

### 3.3.2. Systemd-inloggning

När en användare loggar in på Debiansystemet via gdm3(8), sshd(8), etc., startas `/lib/systemd/system --user` som den process för hantering av användartjänster som ägs av motsvarande användare. Se systemd(1).

Processen `systemd` user service manager skapar parallella processer baserat på de deklarativa konfigurationsfilerna för enheter (se `systemd`.unit(5) och `user@`.service(5)).

Enheter för användarläget laddas från "User Unit Search Path" som beskrivs i `systemd`.unit(5). De viktigaste är följande i prioritetsordning:

- "`~/.config/systemd/user/*`": Enheter för användarkonfiguration

- "`/etc/systemd/user/*`": Användarenheter som skapats av administratören

- "`/run/systemd/user/*`": Runtime-enheter

- "`/lib/systemd/user/*`": Användarenheter som installerats av distributionens pakethanterare

Dessa hanteras på samma sätt som Avsnitt 3.3.1, ”Systemd startas”.

## 3.4. Kärnans meddelande

Det kärnfelmeddelande som visas på konsolen kan konfigureras genom att ställa in dess tröskelnivå.

    # dmesg -n3

Tabell 3.4. Lista över felnivåer i kärnan

fel nivå värde | namn på felnivå | betydelse
--- | --- | ---
0 | KERN_EMERG | systemet är oanvändbart
1 | KERN_ALERT | åtgärder måste vidtas omedelbart
2 | KERN_CRIT | kritiska förhållanden
3 | KERN_ERR | felförhållanden
4 | KERN_VARNING | varningsvillkor
5 | KERN_NOTICE | normalt men signifikant tillstånd
6 | KERN_INFO | informativ
7 | KERN_DEBUG | meddelanden på felsökningsnivå

## 3.5. Systemets meddelande

Under `systemd` loggas både kärn- och systemmeddelanden av journaltjänsten `systemd-journald.service` (a.k.a `journald`) antingen till en beständig binär data under "`/var/log/journal`" eller till en flyktig binär data under "`/run/log/journal/`". Dessa binära loggdata nås med kommandot journalctl(1). Du kan t.ex. visa loggen från den senaste uppstarten på följande sätt:

    $ journalctl -b

Tabell 3.5. Lista över typiska `journalctl-kommandoutdrag`

Operation | Kommandosnuttar
--- | ---
Visa loggen för systemtjänster och kärnan från den senaste uppstarten | "`journalctl -b --system`"
Visa logg för tjänster för den aktuella användaren från den senaste uppstarten | "`journalctl -b --user`"
Visa jobblogg för "`$unit`" från den senaste uppstarten | "`journalctl -b -u $enhet`"
Visa jobblogg för "`$unit`" ( "`tail -f`"-stil) från den senaste uppstarten | "`journalctl -b -u $unit -f`"

Under `systemd` kan systemloggningsverktyget rsyslogd(8) avinstalleras. Om det installeras ändrar det sitt beteende för att läsa flyktiga binära loggdata (i stället för "`/dev/log`" som var standard före systemd) och för att skapa traditionella permanenta ASCII-systemloggdata. Detta kan anpassas med "`/etc/default/rsyslog`" och "`/etc/rsyslog.conf`" för både loggfilen och visningen på skärmen. Se rsyslogd(8) och rsyslog.conf(5). Se även Avsnitt 9.3.2, ”Logganalysator”.

## 3.6. Systemhantering

`Systemd` erbjuder inte bara init-system utan även generiska systemhanteringsåtgärder med kommandot systemctl(1).

Tabell 3.6. Lista över typiska kommandoutdrag för `systemctl`

Operation | Kommandosnuttar
--- | ---
Lista alla tillgängliga enhetstyper | "`systemctl list-units --type=help`"
Lista alla målenheter i minnet | "`systemctl list-units --type=target`"
Lista alla serviceenheter i minnet | "`systemctl list-units -typ=service`"
Lista alla enheter i minnet | "`systemctl list-units --type=device`"
Lista alla monteringsenheter i minnet | "`systemctl list-units --type=mount`"
Lista alla uttagsenheter i minnet | "`systemctl list-sockets`"
Lista alla timerenheter i minnet | "`systemctl list-timers`"
Starta "`$unit`" | "`systemctl start $unit`"
Stoppa "`$enhet`" | "`systemctl stop $unit`"
Ladda om tjänstespecifik konfiguration | "`systemctl reload $unit`"
Stoppa och starta alla "`$enheter`" | "`systemctl restart $unit`"
Starta "`$unit`" och stoppa alla andra | "`systemctl isolate $unit`"
Byt till "`grafisk`" (GUI-system) | "`systemctl isolera grafisk`"
Växla till "`multi-user`" (CLI-system) | "`systemctl isolate multi-user`"
Växla till "`räddning`" (CLI-system med en användare) | "`systemctl isolate rescue`"
Skicka dödssignal till "`$unit`" | "`systemctl kill $unit`"
Kontrollera om tjänsten "`$unit`" är aktiv | "`systemctl is-active $unit`"
Kontrollera om tjänsten "`$unit`" är misslyckad | "`systemctl is-failed $unit`"
Kontrollera status för "`$unit|$PID|device`" | "`systemctl status $unit|$PID|$device`"
Visa egenskaper för "`$unit|$job`" | "`systemctl show $unit|$job`"
Återställning misslyckades "`$unit`" | "`systemctl reset-failed $unit"`
Lista beroendet av alla enhetstjänster | "`systemctl list-beroenden --all`"
Lista enhetsfiler installerade på systemet | "`systemctl list-unit-files`"
Aktivera "`$unit`" (lägg till symlänk) | "`systemctl enable $unit`"
Inaktivera "`$unit`" (ta bort symlänk) | "`systemctl disable $unit`"
Avmaskera "`$unit`" (ta bort symlänken till "`/dev/null`") | "`systemctl unmask $unit`"
Mask "`$unit`" (lägg till symlänk till "`/dev/null`") | "`systemctl mask $enhet`"
Hämta inställning för standardmål | "`systemctl get-default`"
Ställ in default-target till "`graphical`" (GUI-system) | "`systemctl set-default graphical`"
Ställ in default-target till "`multi-user`" (CLI-system) | "`systemctl set-default multi-user`"
Visa arbetsmiljön | "`systemctl show-environment`"
Ställ in "`variabel"` för jobbmiljö till "`värde`" | "`systemctl set-environment variable=value`"
Oreglerad "`variabel`" i arbetsmiljön | "`systemctl unset-environment variable`"
Ladda om alla enhetsfiler och daemons | "`systemctl daemon-reload`"
Stäng av systemet | "`systemctl poweroff`"
Stänga av och starta om systemet | "`systemctl reboot`"
Stänga av systemet | "`systemctl suspend`"
Lägg systemet i viloläge | "`systemctl hibernate`"

Här kan "`$unit`" i exemplen ovan vara ett enskilt enhetsnamn (suffix som `.service` och `.target` är valfria) eller, i många fall, flera enhetsspecifikationer (globs i shell-stil "`*`", "`?`", "`[]`" med fnmatch(3) som kommer att matchas mot de primära namnen på alla enheter som för närvarande finns i minnet).

Kommandon som ändrar systemtillståndet i exemplen ovan föregås vanligtvis av "`sudo`" för att uppnå den administrativa behörighet som krävs.

Utdata från "`systemctl status $unit|$PID|$device`" använder punktens färg ("●") för att sammanfatta enhetens tillstånd på ett överskådligt sätt.

- Vitt "●" anger ett "inaktivt" eller "avaktiverande" tillstånd.

- Röd "●" indikerar ett "misslyckat" eller "felaktigt" tillstånd.

- Grönt "●" indikerar ett "aktivt", "omladdande" eller "aktiverande" tillstånd.

## 3.7. Andra systemövervakare

Här är en lista över andra kommandoutdrag för övervakning under `systemd`. Läs relevanta manpages inklusive cgroups(7).

Tabell 3.7. Lista över andra kommandosnuttar för övervakning under `systemd`

Operation | Kommandosnuttar
--- | ---
Visa tidsåtgången för varje initialiseringssteg | "`systemd-analysera tid`"
Lista över alla enheter efter tid för initialisering | "`systemd-analyze blame`"
Ladda och upptäcka fel i filen "`$unit`" | "`systemd-analyze verify $unit`"
Visa kortfattad runtime-statusinformation för användaren av den uppringandes session | "`loginctl användarstatus`"
Visa kortfattad statusinformation under körning för den uppringandes session | "`loginctl session-status`"
Spåra startprocessen av cgroups | "`systemd-cgls`"
Spåra startprocessen av cgroups | "`ps xawf -eo pid,user,cgroup,args`"
Spåra startprocessen av cgroups | Läs sysfs under "`/sys/fs/cgroup/`"

## 3.8. Systemkonfiguration

### 3.8.1. Värdnamnet

Kärnan underhåller systemets värdnamn. Systemenheten som startas av `systemd-hostnamed.service` ställer in systemets värdnamn vid start till det namn som finns lagrat i "`/etc/hostname`". Den här filen ska bara innehålla systemets värdnamn, inte ett fullständigt kvalificerat domännamn.

För att skriva ut det aktuella värdnamnet kör hostname(1) utan argument.

### 3.8.2. Filsystemet

Monteringsalternativen för normala disk- och nätverksfilsystem anges i "`/etc/fstab`". Se fstab(5) och Avsnitt 9.6.7, ”Optimering av filsystem med hjälp av mount-alternativ”.

Konfigurationen av det krypterade filsystemet anges i "`/etc/crypttab`". Se crypttab(5)

Konfigurationen av RAID-programvara med mdadm(8) anges i "`/etc/mdadm/mdadm.conf`". Se mdadm.conf(5).

| Varning
Efter montering av alla filsystem rensas temporära filer i "`/tmp`", "`/var/lock`" och "`/var/run`" vid varje uppstart.

### 3.8.3. Initialisering av nätverksgränssnitt

Nätverksgränssnitt initialiseras vanligtvis i "`networking.service`" för `lo-gränssnittet` och "`NetworkManager.service`" för andra gränssnitt på moderna Debian-skrivbordssystem under `systemd`.

Se Kapitel 5, Nätverkskonfiguration för information om hur du konfigurerar dem.

### 3.8.4. Initialisering av molnsystem

Molnsysteminstansen kan startas som en klon av "Debian Official Cloud Images" eller liknande bilder. För en sådan systeminstans kan personligheter som värdnamn, filsystem, nätverk, lokal, SSH-nycklar, användare och grupper konfigureras med hjälp av funktioner som tillhandahålls av `cloud-init-` och `netplan.io-paketen` med flera datakällor, t.ex. filer som placerats i den ursprungliga systemavbildningen och externa data som tillhandahålls under lanseringen. Dessa paket möjliggör deklarativ systemkonfiguration med hjälp av YAML-data.

Se mer på "Cloud Computing with Debian and its descendants", "Cloud-init documentation" och Avsnitt 5.4, ”Den moderna nätverkskonfigurationen för moln”.

### 3.8.5. Anpassningsexempel för att justera sshd-tjänsten

Vid standardinstallation startas många nätverkstjänster (se Kapitel 6, Nätverkstillämpningar) som daemonprocesser efter network `.target` vid uppstarten av `systemd`. "`sshd`" är inget undantag. Låt oss ändra detta till on-demand start av "`sshd`" som ett exempel på anpassning.

Först inaktiverar du den systeminstallerade serviceenheten.

     $ sudo systemctl stop sshd.service
     $ sudo systemctl mask sshd.service

Systemet för aktivering av uttag på begäran i de klassiska Unix-tjänsterna skedde via superservern `inetd` (eller `xinetd`). Under `systemd` kan motsvarande aktiveras genom att lägga till enhetskonfigurationsfilerna *.socket och * .service.

`sshd.socket` för att ange ett uttag att lyssna på

    [Unit]
    Description=SSH Socket for Per-Connection Servers

    [Socket]
    ListenStream=22
    Accept=yes

    [Install]
    WantedBy=sockets.target

`sshd@.service` som den matchande servicefilen för `sshd.socket`

    [Unit]
    Description=SSH Per-Connection Server

    [Service]
    ExecStart=-/usr/sbin/sshd -i
    StandardInput=socket

Ladda sedan om.

     $ sudo systemctl daemon-reload

## 3.9. Udev-systemet

Systemet udev tillhandahåller en mekanism för automatisk upptäckt och initialisering av maskinvara (se udev(7)) sedan Linux-kärnan 2.6. När kärnan upptäcker varje enhet startar udev-systemet en användarprocess som använder information från sysfs-filsystemet (se Avsnitt 1.2.12, ”procfs och sysfs”), laddar nödvändiga kärnmoduler med hjälp av modprobe(8)-programmet (se Avsnitt 3.10, ”Initialisering av kärnmodulen”) och skapar motsvarande enhetsnoder.

| Tips

Om "`/lib/modules/kernel-version/modules.dep`" av någon anledning inte genererades korrekt av depmod(8), kan det hända att moduler inte laddas som förväntat av udev-systemet. Kör "`depmod -a`" för att åtgärda det.

För monteringsregler i "`/etc/fstab`" behöver enhetsnoderna inte vara statiska. Du kan använda UUID för att montera enheter istället för enhetsnamn som t.ex. "`/dev/sda`". Se Avsnitt 9.6.3, ”Åtkomst till partition med hjälp av UUID”.

Eftersom udev-systemet är något av ett rörligt mål, lämnar jag detaljerna till andra dokumentationer och beskriver minimiinformationen här.

| Varning
Försök inte att köra långvariga program som t.ex. säkerhetskopieringsskript med `RUN` i udev-reglerna som nämns i udev(7). Skapa en korrekt systemd.service(5)-fil och aktivera den istället. Se Avsnitt 10.2.3.2, ”Montera händelsestyrd säkerhetskopiering”.

## 3.10. Initialisering av kärnmodulen

Programmet modprobe(8) gör det möjligt för oss att konfigurera Linux-kärnan från användarprocessen genom att lägga till och ta bort kärnmoduler. Udev-systemet (se Avsnitt 3.9, ”Udev-systemet”) automatiserar dess anrop för att underlätta initieringen av kärnmodulen.

Det finns moduler som inte är hårdvarumoduler och speciella drivrutinsmoduler för hårdvara, t.ex. följande, som måste förinstalleras genom att de listas i filen "`/etc/modules`" (se modules(5)).

- TUN/TAP-moduler som tillhandahåller virtuell enhet för punkt-till-punkt-nätverk (TUN) och virtuell enhet för Ethernet-nätverk (TAP),

- netfilter-moduler som ger netfilter-brandväggsfunktioner`(iptables`(8), Avsnitt 5.7, ”Netfilters infrastruktur”), och

- drivmoduler för watchdog-timer.

Konfigurationsfilerna för modprobe(8)-programmet finns i katalogen "`/etc/modprobes`.d/", vilket förklaras i modprobe.conf(5). (Om du vill undvika att vissa kärnmoduler laddas automatiskt kan du överväga att svartlista dem i filen "`/etc/modprobes.d/blacklist`")

Filen "`/lib/modules/version/modules.dep`" som genereras av programmet depmod(8) beskriver modulberoenden som används av programmet modprobe(8).

| Notera
Om du har problem med modulinläsningen vid start eller med modprobe(8) kan "`depmod -a`" lösa problemen genom att rekonstruera "`modules.dep`".

Programmet modinfo(8) visar information om en modul i Linux-kärnan.

Programmet lsmod(8) formaterar innehållet i "`/proc/modules`" på ett snyggt sätt och visar vilka kärnmoduler som för närvarande är inlästa.

| Tips
Du kan identifiera exakt maskinvara i ditt system. Se Avsnitt 9.5.3, ”Identifiering av hårdvara”. Du kan konfigurera maskinvaran vid start för att aktivera förväntade maskinvarufunktioner. Se Avsnitt 9.5.4, ”Konfiguration av hårdvara”. Du kan förmodligen lägga till stöd för din speciella enhet genom att kompilera om kärnan. Se Avsnitt 9.10, ”Kärnan”.

Kapitel 2. Debians pakethantering |  | Kapitel 4. Autentisering och åtkomstkontroll