Inhaltsverzeichnis
Als Systemadministrator sollten Sie grob wissen, wie das Debian-System gestartet und konfiguriert wird. Obwohl die genauen Details in den Quelldateien der installierten Pakete und deren Dokumentation zu finden sind, ist dies für die meisten von uns ein bisschen viel.
Here is a rough overview of the key points of the Debian system initialization. Since the Debian system is a moving target, you should refer to the latest documentation.
Debian Linux Kernel Handbook is the primary source of information on the Debian kernel.
bootup
(7) beschreibt den System-Boot-Prozess basierend
auf systemd
(derzeitiges Debian-System).
boot
(7) beschreibt den System-Boot-Prozess basierend auf
UNIX System V Release 4 (älteres Debian-System).
Das Computer-System durchläuft verschiedene Phasen des Bootstrap-Prozesses vom Einschalten bis zur Bereitstellung des funktionalen Betriebssystems an den Benutzer.
Der Einfachheit halber beschränke ich meine Betrachtung auf die weit verbreitete PC-Plattform mit einer Standardinstallation.
Der typische Bootstrap-Prozess ist wie eine 4-stufige Rakete. Jede Stufe übergibt die Systemkontrolle an die jeweils nachfolgende Stufe:
Natürlich können diese unterschiedlich konfiguriert werden. Wenn Sie zum Beispiel Ihren eigenen Kernel kompilieren, werden Sie unter Umständen den Schritt mit dem Mini-Debian-System überspringen. Gehen Sie daher nicht davon aus, dass dies alles in Ihrem Fall zutrifft, solange Sie es nicht selbst überprüft haben.
The Unified Extensible Firmware Interface (UEFI) defines a boot manager as part of the UEFI specification. When a computer is powered on, the boot manager is the 1st stage of the boot process which checks the boot configuration and based on its settings, then executes the specified OS boot loader or operating system kernel (usually boot loader). The boot configuration is defined by variables stored in NVRAM, including variables that indicate the file system paths to OS loaders or OS kernels. An EFI system partition (ESP) is a data storage device partition that is used in computers adhering to the UEFI specification. Accessed by the UEFI firmware when a computer is powered up, it stores UEFI applications and the files these applications need to run, including operating system boot loaders. (On the legacy PC system, BIOS stored in the MBR may be used instead.)
The boot loader is the 2nd stage of the boot process which is started by the UEFI. It loads the system kernel image and the initrd image to the memory and hands control over to them. This initrd image is the root filesystem image and its support depends on the bootloader used.
The Debian system normally uses the Linux kernel as the default system kernel. The initrd image for the current 5.x Linux kernel is technically the initramfs (initial RAM filesystem) image.
There are many boot loaders and configuration options available.
Tabelle 3.1. Liste der Bootloader
Paket | Popcon | Größe | initrd | Bootloader | Beschreibung |
---|---|---|---|---|---|
grub-efi-amd64 | I:236 | 158 | Unterstützt | GRUB UEFI | This is smart enough to understand disk partitions and filesystems such as vfat, ext4, …. (UEFI) |
grub-pc | V:25, I:737 | 533 | Unterstützt | GRUB 2 | This is smart enough to understand disk partitions and filesystems such as vfat, ext4, …. (BIOS) |
grub-rescue-pc | V:0, I:1 | 6476 | Unterstützt | GRUB 2 | Dies ist das boot-fähige Rettungs-Image von GRUB 2 (CD und Diskette) (PC/BIOS-Version). |
lilo | V:0, I:1 | 697 | Unterstützt | Lilo | Beruht auf den Sektorbereichen der Daten auf der Festplatte (alt). |
syslinux | V:3, I:43 | 344 | Unterstützt | Isolinux | Unterstützt das ISO9660-Dateisystem. Dies wird von Boot-CDs verwendet. |
syslinux | V:3, I:43 | 344 | Unterstützt | Syslinux | Unterstützt das MSDOS-Dateisystem FAT. Dies wird von Boot-Disketten verwendet. |
loadlin | V:0, I:0 | 90 | Unterstützt | Loadlin | Das gewünschte Betriebssystem wird aus dem laufenden FreeDOS-/MSDOS-System heraus gestartet. |
mbr | V:0, I:6 | 50 | Nicht unterstützt | MBR von Neil Turton | Dies ist freie Software, die den MSDOS-MBR ersetzt. Unterstützt nur Festplattenpartitionen. |
![]() |
Warnung |
---|---|
Spielen Sie nicht mit Bootloadern herum, ohne boot-fähige Rettungsmedien
(USB-Stick, CD, Diskette) zur Hand zu haben, die von Images im
|
For GRUB 2, the menu configuration file is located at
"/boot/grub/grub.cfg
" and its key part of menu entry
looks like:
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 }
For this part of /boot/grub/grub.cfg
, this menu entry
means the following.
Tabelle 3.2. The meaning of the menu entry of the above part of
/boot/grub/grub.cfg
setting | Wert |
---|---|
GRUB2 modules loaded | gzio , part_gpt ,
ext2 |
root file system partition used | partition identified by
UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 |
kernel image path in the root file system | /boot/vmlinuz-5.10.0-6-amd64 |
kernel boot parameter used | "root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet " |
initrd image path in the root file system | /boot/initrd.img-5.10.0-6-amd64 |
![]() |
Tipp |
---|---|
You can customize GRUB splash image by setting
|
Weitere Infos finden Sie unter "info grub
" und
grub-install
(8).
Das Mini-Debian-System ist die dritte Stufe des Boot-Prozesses und wird durch den Bootloader gestartet. Es lässt den System-Kernel mit seinem eigenen Wurzeldateisystem im Speicher laufen. Dies ist ein optionaler, vorbereitender Schritt des Boot-Prozesses.
![]() |
Anmerkung |
---|---|
Der Begriff "Mini-Debian-System" wurde von dem Autor erfunden, um diese dritte Stufe des Boot-Prozesses in diesem Dokument zu beschreiben. Dieses System wird normalerweise initrd- oder initramfs-System genannt. Ein ähnliches System wird im Speicher auch durch den Debian Installer verwendet. |
"/init
" wird als erstes Programm aus diesem
Wurzeldateisystem im Speicher ausgeführt. Es ist ein Programm, das den
Kernel im Userspace initialisiert und die Kontrolle an die nächste Stufe
übergibt. Dieses Mini-Debian-System bietet Flexibilität für den
Boot-Prozess, um zum Beispiel Kernel-Module vor dem Hauptteil des
Boot-Prozesses hinzuzufügen oder um das Wurzeldateisystem als
verschlüsseltes Dateisystem einzubinden.
"/init
" ist ein Shell-Skript, wenn das initfamfs durch
initramfs-tools
erstellt wurde.
Sie können diesen Teil des Boot-Prozesses unterbrechen, um eine root-Shell
zu bekommen, indem Sie "break=init
" usw. zu den
Kernel-Boot-Parametern hinzufügen. Informationen zu weiteren
Unterbrechungsmöglichkeiten finden Sie im
"/init
"-Skript. Diese Shell-Umgebung ist ausgeklügelt
genug, um eine gute Überprüfung der Hardware Ihrer Maschine zu ermöglichen.
Die verfügbaren Befehle in diesem Mini-Debian-System gehen auf ein
GNU-Werkzeug namens busybox
(1) zurück und werden auch
hauptsächlich von diesem bereitgestellt.
"/init
" ist ein binäres
systemd
-Programm, wenn das initramfs durch
dracut
erstellt wurde.
Befehle in diesem Mini-Debian-System sind in ihrer Funktionalität auf die
systemd
(1)-Umgebung reduziert.
![]() |
Achtung |
---|---|
Sie müssen die Option " |
Das normale Debian-System ist die vierte Stufe des Boot-Prozesses und wird von dem Mini-Debian-System gestartet. Der System-Kernel des Mini-Debian-Systems läuft in dieser Umgebung weiter. Das verwendete Wurzeldateisystem wird von dem im Arbeitsspeicher umgeschwenkt zu dem auf der echten Festplatte.
Das Programm init wird als erstes Programm mit
PID=1 ausgeführt und erledigt die eigentliche Hauptarbeit beim Booten, das
Starten verschiedener Programme. Der Standardpfad zum init-Programm ist
"/sbin/init
", aber er kann über einen
Kernel-Boot-Parameter wie "init=/pfad/zum/init-programm
"
auch geändert werden.
"/sbin/init
" is symlinked to
"/lib/systemd/systemd
" after Debian 8 Jessie (released in
2015).
![]() |
Tipp |
---|---|
Mittels " |
Tabelle 3.3. Liste von Boot-Hilfsprogrammen für das Debian-System
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
systemd
|
V:849, I:941 | 16625 | Ereignis-basierter init (8)-Daemon für gleichzeitige
Ausführung (Alternative zu sysvinit ) |
systemd-sysv
|
V:820, I:939 | 147 | die Handbuchseiten und Links, die nötig sind, um sysvinit
durch systemd zu ersetzen |
init-system-helpers
|
V:687, I:952 | 133 | Hilfsprogramme, um zwischen sysvinit und
systemd umschalten zu können |
initscripts
|
V:64, I:238 | 172 | Skripte zur Initialisierung und zum Herunterfahren des Systems |
sysvinit-core
|
V:7, I:8 | 279 | System-V-ähnliche init (8)-Werkzeuge |
sysv-rc
|
V:127, I:251 | 82 | System-V-ähnlicher Mechanismus zum Wechsel des Runlevels |
sysvinit-utils
|
V:403, I:999 | 81 | System-V-ähnliche Werkzeuge (startpar (8),
bootlogd (8), …) |
lsb-base
|
V:895, I:999 | 49 | Zur Linux Standard Base 3.2 konforme init-Skript-Funktionalität |
insserv
|
V:153, I:248 | 153 | Werkzeug, um die Boot-Reihenfolge unter Verwendung von LSB-konformen init.d-Skript-Abhängigkeiten zu organisieren |
uswsusp
|
V:1, I:5 | 714 | Werkzeuge, um das durch Linux bereitgestellte Userspace-Software-Suspend zu verwenden |
kexec-tools
|
V:1, I:7 | 289 | Werkzeug für kexec (8)-Neustarts (Warmstarts) |
systemd-bootchart
|
V:0, I:1 | 128 | Performance-Analyseprogramm für den Boot-Prozess |
bootchart2
|
V:0, I:0 | NOT_FOUND | Performance-Analyseprogramm für den Boot-Prozess |
pybootchartgui
|
V:0, I:0 | NOT_FOUND | Performance-Analyseprogramm für den Boot-Prozess (Visualisierung) |
mingetty
|
V:0, I:3 | 38 | getty (8) nur für die Konsole |
mgetty
|
V:0, I:0 | 315 | Intelligenter getty (8)-Ersatz für Modems |
![]() |
Tipp |
---|---|
Unter Debian Wiki: BootProcessSpeedup finden Sie aktuelle Tipps zur Beschleunigung des Boot-Prozesses. |
Dieser Abschnitt beschreibt, wie das System durch das
systemd
(1)-Programm mit der PID=1
(also dem init-Prozess) gestartet wird.
The systemd
init process spawns processes in parallel
based on the unit configuration files (see
systemd.unit
(5)) which are written in declarative style
instead of SysV-like procedural style.
The spawned processes are placed in individual Linux control groups named after the unit which they belong to in the private systemd hierarchy (see cgroups and Abschnitt 4.7.4, „Linux security features“).
The unit configuration files are loaded from a set of paths (see
systemd-system.conf
(5)) as follows:
"/lib/systemd/system
": Standard-Konfigurationsdateien des
Betriebssystems
"/etc/systemd/system
": Konfigurationsdateien zur
Systemadministration, welche die Standard-Konfigurationsdateien des
Betriebssystems überschreiben
"/run/systemd/system
": zur Laufzeit generierte
Konfigurationsdateien, welche die fest installierten Konfigurationsdateien
überschreiben
Deren Abhängigkeiten untereinander sind durch die Regeln
"Wants=
", "Requires=
",
"Before=
", "After=
", … (siehe "MAPPING
OF UNIT PROPERTIES TO THEIR INVERSES" in systemd.unit
(5))
definiert. Die Ressourcen-Steuerung ist ebenfalls festgelegt (siehe
systemd.resource-control
(5)).
Die Endung der Unit-Konfigurationsdateien definiert ihren Typ wie folgt:
*.service beschreibt einen Prozess
(Dienst), der von systemd
gesteuert und überwacht
wird. Siehe systemd.service
(5).
*.device beschreibt ein Gerät, das im
sysfs
(5) als udev
(7)-Gerätedatei
abgebildet ist. Siehe systemd.device
(5).
*.mount beschreibt einen Einbindungspunkt
im System, der von systemd
gesteuert und überwacht
wird. Siehe systemd.mount
(5).
*.automount beschreibt einen
automatischen Einbindungspunkt im System, der von systemd
gesteuert und überwacht wird. Siehe systemd.automount
(5).
*.swap beschreibt ein Swap-Device oder
eine Swap-Datei (zum Auslagern von Arbeitsspeicher auf eine Festplatte), die
von systemd
gesteuert und überwacht wird. Siehe
systemd.swap
(5).
*.path beschreibt einen Pfad im
Dateisystem, der von systemd
zum Zwecke der
pfad-basierten Aktivierung überwacht wird. Siehe
systemd.path
(5).
*.socket beschreibt einen Socket, der von
systemd
zum Zwecke der socket-basierten Aktivierung
gesteuert und überwacht wird. Siehe systemd.socket
(5).
*.timer beschreibt einen Timer
(Zeitgeber), der von systemd
zum Zwecker der
timer-basierten Aktivierung gesteuert und überwacht wird. Siehe
systemd.timer
(5).
*.slice verwaltet Ressourcen über
cgroups
(7). Siehe systemd.slice
(5).
*.scope wird programmgesteuert über die
Busschnittstellen von systemd
erzeugt, um Systemprozesse
zu verwalten. Siehe systemd.scope
(5).
*.target fasst andere
Unit-Konfigurationsdateien zu Gruppen zusammen, um Synchronisierungspunkte
für den Startprozess zu erstellen. Siehe
systemd.target
(5).
Während des Systemstarts versucht der systemd
-Prozess,
das Target "/lib/systemd/system/default.target
(normalerweise ein symbolischer Link auf
"graphical.target
") zu starten. Als erstes werden dabei
einige spezielle Target-Units (siehe systemd.special
(7))
wie "local-fs.target
", "swap.target
"
und "cryptsetup.target
" aktiviert, um die Dateisysteme
einzubinden. Dann werden über die Abhängigkeiten weitere Target-Units
aktiviert. Details finden Sie in bootup
(7).
systemd
enthält Funktionalitäten, um die
Rückwärtskompatibilität zu SysV zu gewährleisten. Boot-Skripte im SysV-Stil
in
"/etc/init.d/rc[0123456S].d/[KS]name
"
werden immer noch abgearbeitet, und telinit
(8)-Befehle
werden in Aktivierungsanforderungen für systemd-Units übersetzt.
![]() |
Achtung |
---|---|
Die emulierten Runlevel 2 bis 4 verweisen über symbolische Links alle auf
des gleiche " |
Der Kernel verwaltet den Rechnernamen (hostname) des Systems. Die durch
systemd-hostnamed.service
gestartete System-Unit setzt
beim Systemstart den Rechnernamen auf den in
"/etc/hostname
" festgelegten Wert. Diese Datei sollte
nur den Rechnernamen des Systems
enthalten, nicht einen vollqualifizierten Domänennamen.
Um den derzeitigen Rechnernamen auszugeben, führen Sie
hostname
(1) ohne ein Argument aus.
Die Optionen zum Einbinden normaler Festplatten- und Netzwerkdateisysteme
werden in "/etc/fstab
" festgelegt. See
fstab
(5) und Abschnitt 9.6.7, „Optimierung von Dateisystemen über mount-Optionen“.
Die Konfiguration verschlüsselter Dateisysteme ist in
"/etc/crypttab
" abgelegt. Siehe
crypttab
(5).
Software-RAID mit mdadm
(8) wird in
"/etc/mdadm/mdadm.conf
" konfiguriert. Siehe
mdadm.conf
(5).
![]() |
Warnung |
---|---|
Bei jedem Systemstart werden nach dem Einbinden aller Dateisysteme temporäre
Dateien in " |
Auf modernen Debian-Desktop-Systemen mit systemd
erfolgt
die Initialisierung von Netzwerkschnittstellen für die
Loopback-Schnittstelle lo
typischerweise durch
"networking.service
" und für andere Schnittstellen durch
"NetworkManager.service
".
Details zur Konfiguration finden Sie in Kapitel 5, Netzwerkkonfiguration.
Die angezeigten Fehlermeldungen des Kernels auf der Konsole können über einen Schwellwert gefiltert werden:
# dmesg -n3
Tabelle 3.4. Liste der Schwellwerte zur Filterung von Kernel-Fehler-Meldungen
Wert | Name | Bedeutung |
---|---|---|
0 | KERN_EMERG | System ist unbenutzbar |
1 | KERN_ALERT | es ist unverzüglich eine Aktion erforderlich |
2 | KERN_CRIT | Zustände mit kritischen Fehlern |
3 | KERN_ERR | Zustände mit Fehlern |
4 | KERN_WARNING | Zustände mit Warnungen |
5 | KERN_NOTICE | normale, aber erwähnenswerte Zustände |
6 | KERN_INFO | rein informativ |
7 | KERN_DEBUG | Nachrichten zur Fehlersuche/-eingrenzung |
Under systemd
, both kernel and system messages are logged
by the journal service systemd-journald.service
(a.k.a
journald
) either into a persistent binary data below
"/var/log/journal
" or into a volatile binary data below
"/run/log/journal/
". These binary log data are accessed
by the journalctl
(1) command. For example, you can
display log from the last boot as:
$ journalctl -b
Tabelle 3.5. List of typical journalctl
command snippets
Tätigkeit | Befehl |
---|---|
View log for system services and kernel from the last boot | "journalctl -b --system " |
View log for services of the current user from the last boot | "journalctl -b --user " |
View job log of "$unit " from the last boot |
"journalctl -b -u $unit " |
View job log of "$unit " ("tail -f "
style) from the last boot |
"journalctl -b -u $unit -f " |
Under systemd
, the system logging utility
rsyslogd
(8) may be uninstalled. If it is installed, it
changes its behavior to read the volatile binary log data (instead of
pre-systemd default "/dev/log
") and to create traditional
permanent ASCII system log data. This can be customized by
"/etc/default/rsyslog
" and
"/etc/rsyslog.conf
" for both the log file and on-screen
display. See rsyslogd
(8) and
rsyslog.conf
(5). See also Abschnitt 9.3.2, „Analyseprogramme für Logdateien“.
The systemd
offers not only init system but also generic
system management operations with the systemctl
(1)
command.
Tabelle 3.6. List of typical systemctl
command snippets
Tätigkeit | Befehl |
---|---|
Unit-Konfiguration aller Targets auflisten | "systemctl list-units --type=target " |
Unit-Konfiguration aller Dienste (Services) auflisten | "systemctl list-units --type=service " |
Typen aller Unit-Konfigurationen auflisten | "systemctl list-units --type=help " |
Alle Socket-Units im Arbeitsspeicher auflisten | "systemctl list-sockets " |
Alle Timer-Units im Arbeitsspeicher auflisten | "systemctl list-timers " |
"$unit " starten |
"systemctl start $unit " |
"$unit " stoppen |
"systemctl stop $unit " |
Dienst-spezifische Konfiguration neu laden | "systemctl reload $unit " |
"$unit " stoppen und neu starten |
"systemctl restart $unit " |
"$unit " starten und alle anderen stoppen |
"systemctl isolate $unit " |
Zur grafischen Oberfläche wechseln (GUI-System) | "systemctl isolate graphical " |
Zur Konsolenoberfläche wechseln (Mehrbenutzer-CLI-System) | "systemctl isolate multi-user " |
Zur Rettungssystem-Oberfläche wechseln (Einzelbenutzer-CLI-System) | "systemctl isolate rescue " |
Kill-Signal an "$unit " senden |
"systemctl kill $unit " |
Prüfen, ob "$unit " aktiv ist |
"systemctl is-active $unit " |
Prüfen, ob "$unit " fehlgeschlagen ist |
"systemctl is-failed $unit " |
Status von "$unit|$PID|device " prüfen |
"systemctl status $unit|$PID|$device " |
Eigenschaften von "$unit|$job " anzeigen |
"systemctl show $unit|$job " |
Fehlgeschlagene "$unit " zurücksetzen (Reset) |
"systemctl reset-failed $unit" |
Abhängigkeiten aller Unit-Dienste auflisten | "systemctl list-dependencies --all " |
Auf dem System installierte Unit-Dateien auflisten | "systemctl list-unit-files " |
"$unit " aktivieren (symbolischen Link hinzufügen) |
"systemctl enable $unit " |
"$unit " deaktivieren (symbolischen Link entfernen) |
"systemctl disable $unit " |
"$unit " zum Starten bereit machen (symbolischen Link auf
"/dev/null " entfernen) |
"systemctl unmask $unit " |
"$unit " am Starten hindern (symbolischen Link auf
"/dev/null " hinzufügen) |
"systemctl mask $unit " |
Aktuelles default-Target abrufen | "systemctl get-default " |
default-Target auf "graphical " setzen (grafische
Oberfläche, GUI) |
"systemctl set-default graphical " |
default-Target auf "multi-user " setzen
(Konsolenoberfläche, CLI) |
"systemctl set-default multi-user " |
Job-Umgebungseinstellungen anzeigen | "systemctl show-environment " |
Job-Umgebungseinstellung "variable " auf
"wert " setzen |
"systemctl set-environment variable=wert " |
Job-Umgebungseinstellung "variable " löschen |
"systemctl unset-environment variable " |
Alle Unit-Dateien und Daemons neu laden | "systemctl daemon-reload " |
System herunterfahren | "systemctl poweroff " |
System herunterfahren und neu starten (Reboot) | "systemctl reboot " |
System in Standby setzen (Suspend) | "systemctl suspend " |
System in Ruhezustand setzen (Hibernate) | "systemctl hibernate " |
In obigen Beispielen kann "$unit
" für einen einzelnen
Unit-Namen stehen (ein Anhang wie .service
oder
.target
ist dabei optional), oder auch für die Angabe
mehrerer Units (über Suchmuster im Shell-Stil wie "*
",
"?
" oder "[]
", die
fnmatch
(3) verwenden; diese werden auf die primären Namen
aller Units angewandt, die derzeit in den Arbeitsspeicher geladen sind).
Befehlen zum Ändern des Systemstatus wird typischerweise ein
"sudo
" vorangestellt, um die nötigen administrativen
Rechte anzufordern.
Die Ausgabe von "systemctl status $unit|$PID|$device
"
nutzt farbige Punkte ("●"), um den Unit-Status kompakt zusammenzufassen.
Ein weisser "●" steht für "inaktiv" oder "deaktiviert".
Ein roter "●" steht für "fehlgeschlagen" oder "Fehler".
Ein grüner "●" steht für "aktiv", "wird neu geladen" oder "wird aktiviert".
Here are a list of other monitoring command snippets under
systemd
. Please read the pertinent manpages including
cgroups
(7).
Tabelle 3.7. List of other monitoring command snippets under systemd
Tätigkeit | Befehl |
---|---|
Dauer der einzelnen Initialisierungsschritte anzeigen | "systemd-analyze time " |
Alle Units auflisten, sortiert nach der Dauer ihrer Initialisierung | "systemd-analyze blame " |
"$unit "-Datei laden und auf Fehler prüfen |
"systemd-analyze verify $unit " |
Show terse runtime status information of the user of the caller's session | "loginctl user-status " |
Show terse runtime status information of the caller's session | "loginctl session-status " |
Track boot process by the cgroups | "systemd-cgls " |
Track boot process by the cgroups | "ps xawf -eo pid,user,cgroup,args " |
Track boot process by the cgroups | sysfs unter
"/sys/fs/cgroup/systemd/ " auslesen |
Bei einer Standardinstallation werden viele Netzwerkdienste (siehe Kapitel 6, Netzwerkapplikationen) von systemd
durch
network.target
als Daemon-Prozess
gestartet. "sshd
" ist hier keine Ausnahme. Als Beispiel
dafür, wie man so etwas anpassen kann, wollen wir zeigen, wie Sie
"sshd
" so ändern, dass er nur auf Anfrage (on-demand)
startet.
Als erstes deaktivieren Sie die entsprechende Dienst-Unit:
$ sudo systemctl stop sshd.service $ sudo systemctl mask sshd.service
The on-demand socket activation system of the classic Unix services was
through the inetd
(or xinetd
)
superserver. Under systemd
, the equivalent can be
enabled by adding *.socket and *.service unit configuration files.
Eine sshd.socket
anlegen zur Spezifizierung eines
Sockets, der auf Anfragen überwacht wird:
[Unit] Description=SSH Socket for Per-Connection Servers [Socket] ListenStream=22 Accept=yes [Install] WantedBy=sockets.target
Und eine sshd@.service
als Dienste-Datei passend zu
sshd.socket
:
[Unit] Description=SSH Per-Connection Server [Service] ExecStart=-/usr/sbin/sshd -i StandardInput=socket
Dann muss der Dienst neu geladen werden:
$ sudo systemctl daemon-reload
The udev system provides mechanism for the
automatic hardware discovery and initialization (see
udev
(7)) since Linux kernel 2.6. Upon discovery of each
device by the kernel, the udev system starts a user process which uses
information from the sysfs filesystem (see
Abschnitt 1.2.12, „procfs und sysfs“), loads required kernel modules
supporting it using the modprobe
(8) program (see Abschnitt 3.8.1, „Die Kernel-Modul-Initialisierung“), and creates corresponding
device nodes.
![]() |
Tipp |
---|---|
Falls
" Für die Regeln zum Einbinden von Dateisystemen in
" |
Da das udev-System immer ein wenig im Wandel ist, überlasse ich die Details anderen Dokumenten und beschränke mich hier auf das Nötigste.
Das modprobe
(8)-Programm erlaubt es, einen laufenden
Linux-Kernel über einen User-Prozess zu konfigurieren, indem Kernel-Module
hinzugefügt und entfernt werden. Das udev-System (Näheres in Abschnitt 3.8, „Das udev-System“) automatisiert dessen Aufruf, um bei der
Initialisierung des Kernel-Moduls zu helfen.
Es gibt Module, die nicht zu bestimmter Hardware gehören, sowie spezielle
Hardware-Treibermodule wie die folgenden, die im Voraus geladen werden
müssen, indem Sie in die Datei "/etc/modules
" eingetragen
werden (Details in modules
(5)):
TUN/TAP-Module, die ein virtuelles Point-to-Point Netzwerkgerät (TUN) und ein virtuelles Ethernet-Netzwerkgerät (TAP) bereitstellen;
netfilter-Module, die
Netfilter-Firewall-Funktionalitäten bereitstellen (lesen Sie dazu
iptables
(8) und Abschnitt 5.6, „Die Netfilter-Infrastruktur“);
watchdog timer-Treibermodule.
Die Konfigurationsdateien für das modprobe
(8)-Programm
sind unterhalb des "/etc/modprobes.d/
"-Verzeichnisses
abgelegt, wie in modprobe.conf
(5) beschrieben. (Falls Sie
vermeiden möchten, dass einige Kernel-Module automatisch geladen werden,
sollten Sie erwägen, diese in die Datei
"/etc/modprobes.d/blacklist
" einzutragen.)
Die Datei
"/lib/modules/version/modules.dep
"
(erzeugt durch das Programm depmod
(8)) beschreibt
Abhängigkeiten zwischen den Modulen; diese Abhängigkeiten werden von
modprobe
(8) genutzt.
![]() |
Anmerkung |
---|---|
Wenn Sie Probleme beim Laden von Modulen feststellen, entweder während des
Systemstarts oder beim Nachladen mit |
Der Befehl modinfo
(8) zeigt Informationen über ein
Linux-Kernel-Modul an.
Das lsmod
(8)-Programm formatiert den Inhalt von
"/proc/modules
" zu einer hübschen Ausgabe, um anzuzeigen,
welche Kernel-Module gerade geladen sind.
![]() |
Tipp |
---|---|
Sie können die Hardware in Ihrem System exakt identifizieren. Lesen Sie dazu Abschnitt 9.5.3, „Hardware-Identifikation“. Möglicherweise wollen Sie Hardware während des Systemstarts konfigurieren, um bestimmte erwartete Hardware-Funktionalitäten zu aktivieren. Näheres finden Sie in Abschnitt 9.5.4, „Hardware-Konfiguration“. Unterstützung für spezielle Geräte können Sie unter Umständen durch Neukompilieren des Kernels hinzufügen. Details finden Sie in Abschnitt 9.10, „Der Kernel“. |