Bootstrap-Prozess
UEFI - Unified Extensible Firmware Interface
Units
BusyBox
Systemd-Init
NVRAM - NVRAM (Abk. für englisch Non-Volatile Random-Access Memory) ist in der Elektronik ein nichtflüchtiger Datenspeicher, der auf RAM basiert und dessen Dateninhalt ohne externe Energieversorgung erhalten bleibt.
EFI - Systempartition (ESP)
1.) Bootstrap-Prozess
2.) Systemd-Init
Bootstrap-Prozess (4 Stufen)
1. Stufe) das UEFI
2. Stufe) der Bootloader
3. Stufe) Mini-Debian
4. Stufe) normales Debian
Systemd-Init
1.) Der Rechnername
2.) Das Dateisystem
3.) Initialisierung der Netzwerkschnittstellen
1.) Bootstrap-Prozess (4 Stufen)
1.1. Stufe) das UEFI
1.2. Stufe) der Bootloader
1.3. Stufe) Mini-Debian
1.4. Stufe) normales Debin
2.) Systemd-Init
2.1.) Der Rechnername
2.2.) Das Dateisystem
2.3.) Initialisierung der Netzwerkschnittstellen
Quellen:
- Debian Linux Kernel Handbook
- bootup (7)
- boot (7)
1.) UEFI
- Unified Extensible Firmware Interface
- definiert u.a. einen Boot-Manager
- Bootkonfiguration gespeichert in NVRAM
- NVRAM: NVRAM (Abk. für englisch Non-Volatile Random-Access Memory) ist in der Elektronik ein nichtflüchtiger Datenspeicher, der auf RAM basiert und dessen Dateninhalt ohne externe Energieversorgung erhalten bleibt.
- EFI System Partition
- The EFI (Extensible Firmware Interface) system partition or ESP is a partition on a data storage device (usually a hard disk drive or solid-state drive) that is used by computers having the Unified Extensible Firmware Interface (UEFI).
2.) Bootloader
- Lädt: System-Kernel-Image
- Lädt: initrd-Image
- initrd-image: Abbild des Wurzeldateisystems
- das initrd-image der Version 5.x ist ein initramfs (initial RAM Filsystem) Image
Bootloader:
- GRUB UEFI, Paket: grub-efi-amd64 (Intelligenter Bootloader)
- GRUB 2, Paket: grub-pc
- GRUB 2, Paket: grub-rescue-pc
- Lilo, Paket: lilo
- Isolinux: syslinux
- Syslinux: syslinux
- Loadlin: loadlin
- MBR von Neil Turton: mbr
Konfiguration:
/boot/grub/grub.cfg
Bedeutung:
- Geladene GRUB2-Module (gzio, part_gpt, ext2)
- Verwendetes Root-Dateisystem, mit UUID
- Pfad-Kernelimage /boot/vmlinuz-5....-amd64
- Verwendeter Kernel-Boot-Parameter
- Pfad zum Initrd-Image im Rootsystem /boot/initrd.img- -amd64
3.) Das Mini-Debian-System heißt eigentlich: initrd oder initramfs
/init wird als erstes ausgeführt
Programm: Userspace
Entweder:
/init = Shellscript: Wenn das initramfs durch initramfs-tools erstellt wurde
/init = systemd Binärprogramm, wenn initramfs durch dracut erstellt wurde
4.) Das Normale Debian-System
init PID=1
Standardpfad: /sbin/init
Variable mit Pfad: init
Boot-Hilfsprogramme:
- systemd
- systemd-sysv
- init-system-helpers
- initscripts
- sysvinit-core
- sysv-rc
- sysvinit-utils
- lsb-base
- insserv
- uswsusp
- kexec-tools
- systemd-bootchart
- bootchart2
- pybootchartgui
- mingetty
- mgetty
systemd-init-Prozess
systemd
1.) init
2.) systemd
systemd-system.conf
systemd-resource-control
/lib/systemd/system
/etc/systemd/system
/run/systemd/system
Regeln:
1. Wants=
2. Requires=
3. Before=
4. After=
5. BindsTo=
6. Requisite=
7. Description=
Zum Beispiel:
- Description: Pflicht
- Requires: Welche andere Unit wird mitgestartet
- BindsTo: Harte Variante von Requires
Abhängigkeiten
UNITs
In systemd ist eine Organisationseinheit eine "Unit"
z.B. für
- Dienste
- Timer
- Einhängepunkte
- Sockets
- Swap-Speicher
- Geräte
Alle haben Einträge ähnlich wie INI-Dateien
Bestehen aus Sektionen
1.) systemd
2.) Units
3.) Sektionen
In den Sektionen stehen Schlüsselparameter, Direktiven
1.) systemd
2.) Units
3.) Sektionen
4.) Direktiven
systemweite Units
/etc/systemd/system
/lib/systemd/system
User Units - Benutzerbezogene Units
*.service beschreibt einen Prozess
*.device beschreibt ein Gerät
*.mount
*.automount
*.swap
*.path
*.socket
*.timer
*.slice
*.scope
*.target
*.network
Eigene UNITS
[Unit]
Descriptio=Meine Unit
[UNIT-TYP]
[Install]
WantedBy=...
WantedBy:
- multi-user.target
- graphical.target
- rescue.target
- reboot.target
- poweroff.target
- default.target
angelegte: Unit: Aktivieren, deaktivieren
Install legt fest, wann die Unit gestartet wird, früher run levels
/lib/systemd/system/default.target
Rechnername in /etc/hostname
systemd-hostnamed.service
Dateisystem:
/etc/fstab
Verschlüsset
/etc/crypttab
Software-RAID
/etc/mdadm.conf
Kernelmeldungen
dmesg -n3
0 KERN_EMERG
1 KERN_ALERT
2 KERN_CRIT
3 KERN_ERR
4 KERN_WARNING
5 KERN_NOTICE
6 KERN_INFO
7 KERN_DEBUG
Systemmeldungen:
systemd-journal.service
udev-System: Automatisches Erkennen von Hardware
modprobe: Kernel-Module hin zu fügen
/etc/modules
lsmod
modinfo
depmod
/etc/init.date
case "$1" in
start)
echo "Starting foo"
sudo -u foo-user bash -c ...
stop)
echo "Stopping foo"
sudo -u foo-user bash -c ...
sleep 2
*)
echo "Usage: /etc/init.d/foo {start|stop}"
exit 1
esac
exit 0
/etc/init.d
start-stop-daemon
start-stop-daemon --start
start-stop-daemon --start --exec
service bla start
service bla stop
service bla install
systemctl daemon-reload
journalctl -xe