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 - systemd-sysv - init-system-helpers - initscripts - sysvinit-core - sysv-rc - sysvinit-utils systemd: - systemd - systemd-sysv system: - systemd - systemd-sysv - init-system-helpers sysv und sysvinit: - systemd-sysv - sysvinit-core - sysv-rc - sysvinit-utils sysv: - systemd-sysv - sysv-rc sysvinit: - sysvinit-core - sysvinit-utils init und sysvinit: - init-system-helpers - initscripts - sysvinit-core - sysvinit-utils init: - init-system-helpers - initscripts sysvinit: - sysvinit-core - sysvinit-utils 1.) core 2.) rc 3.) utils 4.) helpers - systemd - sysv - init-system - initscripts - sysvinit 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 sudo update-rc.d celeryd defaults sudo update-rc.d celeryd enable #!/bin/bash # # twitter initscripts # ### BEGIN INIT INFO # Provides: python # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: This is for Twitter # Description: This is for Twitter ### END INIT INFO systemd-sysv fast das gleiche wie systemd init-system-helpers Dieses Paket enthält erforderliche Hilfsprogramme für das Umschalten zwischen den verschiedenen Debian-Init-Systemen (z.B. sysvinit oder systemd) initscripts The scripts in this package initialize a standard Debian system at boot time and shut it down at halt or reboot time. sysvinit-core This package contains programs required for booting a Debian system and doing basic process management. sysv-rc Dieses Paket stellt die Unterstützung für ein System zur Verfügung, das analog zu System-V das Booten, Wechseln zwischen Runleveln und Herunterfahren ermöglicht. Diese werden durch symbolische Verweise in /etc/rc?.d/ eingerichtet. sysvinit-utils Dieses Paket enthält die wichtigen System-V-artigen Werkzeuge. lsb-base Die Linux Standard Base (LSB, http://www.linuxbase.org/) ist ein vereinheitlichtes Basissystem, auf das Linuxanwendungen von Dritten aufbauen können. insserv The insserv program is used by the standard SysV-based init system. It updates the order of symlinks in /etc/rc?.d/ based on dependencies specified by LSB headers in the init.d scripts themselves. kexec-tools Dieses Paket bietet Werkzeuge, um einen Kernel in den Speicher zu laden und dann einen direkten »Neustart« in diesen Kernel durchzuführen. Dazu wird die Kernel-Funktion kexec aufgerufen, um den normalen Boot-Prozess zu umgehen systemd-bootchart is a tool, usually run at system startup, that collects the CPU load, disk load, memory usage, as well as per-process information from a running system. Collected results are output as an SVG graph. bootchart2 bootchart2 instruments your boot process and provides a tool to render a graph of what was happening during the boot process later. Mgetty ist ein vielseitiges Programm, das alle Aspekte eines Modems unter Unix abdeckt. Mit dem Programm »mgetty« können Sie ein Modem für den Umgang mit externen Logins und den Faxempfang einsetzen. Auch können Sie das Modem als Anrufbeantworter einsetzen, ohne beim Anrufen zu stören. alsa-utils anacron apache2 apache-htcacheclean apparmor avahi-daemon bluetooth console-setup.sh cron cryptdisks cryptdisks-early cups cups-browsed dbus exim4 gdomap haveged hwclock.sh keyboard-setup.sh kmod lm-sensors lvm2 lvm2-lvmpolld mariadb mysql networking plymouth plymouth-log postfix procps pulseaudio-enable-autospawn rsync rsyslog saned sddm smartmontools speech-dispatcher ssh sudo tor udev ufw unattended-upgrades vlc1 vlc2 x11-common alsa-utils Advanced Linux Sound Architecture anacron anacron ist ein Computerprogramm ähnlich cron zum zeitlich gesteuerten Starten von Computerprogrammen. Im Gegensatz zu cron, welches voraussetzt, dass der Computer wie bei Servern üblich, permanent läuft, nimmt Anacron zur Bewertung nicht nur die aktuelle Uhrzeit, sondern die vergangene Zeitspanne seit dem letzten Start mit in die Entscheidung. apparmor AppArmor (Application Armor, auf Deutsch etwa Anwendungs(programm)-Panzerung) ist eine freie Sicherheitssoftware für Linux, mit der Programmen einzeln bestimmte Rechte zugeteilt oder entzogen werden können. Mit dieser Erweiterung wird die Mandatory Access Control (MAC) implementiert. avahi-daemon Avahi ist eine freie Implementierung von Zeroconf, einer Technik zur Vernetzung von Geräten in einem lokalen Netzwerk, ohne dass diese manuell konfiguriert werden müssen. cron Der Cron-Daemon dient der zeitbasierten Ausführung von Prozessen in Unix und unixartigen Betriebssystemen wie Linux, BSD oder macOS, um wiederkehrende Aufgaben – Cronjobs – zu automatisieren. dbus D-Bus (von englisch Desktop-Bus) ist eine freie Programmbibliothek zur Interprozesskommunikation. Sie orientiert sich insbesondere an den Bedürfnissen von Desktop-Umgebungen. exim4 Exim (ursprünglich ein Akronym für EXperimental Internet Mailer) ist ein Mail Transfer Agent und Mailserver. Exim ist weitgehend aufrufkompatibel zu dem sehr traditionsreichen MTA Sendmail. Seine besondere Stärke liegt in einer sehr flexiblen, aber trotzdem einfachen Konfiguration. hwclock.sh keyboard-setup.sh kmod In computing, a loadable kernel module (LKM) is an object file that contains code to extend the running kernel, or so-called base kernel, of an operating system. networking plymouth Plymouth ist ein Bootsplash, der 2008 von Red Hat für die Linux-Distribution Fedora entwickelt wurde. Als Bootscreen bezeichnet man im Computerjargon eine grafische Anzeige des Bootprozesses während des Ladens eines Betriebssystems. plymouth-log procps pulseaudio-enable-autospawn PulseAudio is a network-capable sound server program rsync rsync gleicht Dateien und Ordner zwischen Lokalen oder Remote Systemen ab. die Synchronisation findet von der Quelle zum Ziel statt. rsyslog Rsyslog ist eine Open-Source-Implementierung des syslog-Protokolls für Unix und Unix-ähnliche Systeme. syslog ist ein Standard zur Übermittlung von Log-Meldungen in einem IP-Rechnernetz. saned (Scanner Access Now Easy) sddm The Simple Desktop Display Manager (SDDM) is a display manager. It is the recommended display manager for the KDE Plasma and LXQt desktop environments. smartmontools Ein Festplattenausfall kommt meist überraschend und geht oft mit dem Verlust von Daten einher. Wehe dem, der nicht vorgesorgt hat, z.B. durch ein RAID-Festplatten-Verbund oder ein Backup. Die smartmontools können Zustandsdaten der Festplatte auslesen und so dazu beitragen, rechtzeitig einen sich anbahnenden Festplatten-Ausfall zu erkennen. Wie der Name schon vermuten lässt, geschieht dies mit Hilfe von S.M.A.R.T. = Self-Monitoring, Analysis and Reporting Technology. speech-dispatcher udev x11-common https://www.linuxfromscratch.org/blfs/view/svn/multimedia/alsa-tools.html /etc/systemd/system/hello.service # Simple service unit file to use for testing # startup configurations with systemd. # By David Both # Licensed under GPL V2 # [Unit] Description=My hello shell script [Service] Type=oneshot ExecStart=/usr/local/bin/hello.sh [Install] WantedBy=multi-user.target #!/usr/bin/bash # Simple program to use for testing startup configurations # with systemd. # By David Both # Licensed under GPL V2 # echo "###############################" echo "######### Hello World! ########" echo "###############################" gzio gzip Lempel-Ziv-Kodierung (LZ77) gzip [ -acdfhklLnNrtvV19 ] [-S Endung] [ Name … ] gunzip [ -acfhklLnNrtvV ] [-S Endung] [ Name … ] zcat [ -fhLV ] [ Name … ] -d --decompress --uncompress -r --recursive gzip -c Datei1 > foo.gz gzip -c Datei2 >> foo.gz gunzip -c foo cat Datei1 Datei2 | gzip > foo.gz gzip -c Datei1 Datei2 > foo.gz Archive unter Linux (tar, gz, bz2, zip) 1 tar 2 gz, bzw. gzip 3 bz2, bzw. bzip2 4 zip Entpacken eines Archivs: tar xfv archiv.tar Dateien/Ordner in ein Archiv packen: tar cfv archiv.tar inhalt1 inhalt2 inhalt3 Inhalt eines Archivs auflisten: tar tfv archiv.tar gzip file Ergbnis: file.gz Datei dekomprimieren: gunzip file Dateien in einem komprimierten Archiv zusammenfassen: tar cfvz archiv.tar.gz inhalt1 inhalt2 bzip2 file Ergebnis: file.bz2 Datei dekomprimieren: bunzip2 file.bz2 Einzelne Dateien in einem komprimierten Archiv zusammenfassen: zip archiv.zip inhalt1 inhalt2 Komplette Ordner in einem komprimierten Archiv zusammenfassen: zip -r archiv.zip ordner1 ordner2 ordner3 Komprimiertes Archiv entpacken: unzip archiv.zip GUID Partition Table (GPT) specific instructions https://wiki.archlinux.org/title/GRUB