Was ich über Linux lerne - 1

Bootstrap-Prozess
UEFI - Unified Extensible Firmware Interface
Units
BusyBox
Systemd-Init
NVRAM - NVRAM (Abk. f"ur englisch Non-Volatile Random-Access Memory) ist in der Elektronik ein nichtfl"uchtiger 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"ur englisch Non-Volatile Random-Access Memory) ist in der Elektronik ein nichtfl"uchtiger 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"adt: System-Kernel-Image
- L"adt: 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"st eigentlich: initrd oder initramfs

/init wird als erstes ausgef"uhrt

Programm: Userspace


Entweder:
/init = Shellscript: Wenn das initramfs durch initramfs-tools erstellt wurde
/init = systemd Bin"arprogramm, 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"angigkeiten

UNITs
In systemd ist eine Organisationseinheit eine "Unit"
z.B. f"ur
- Dienste
- Timer
- Einh"angepunkte
- Sockets
- Swap-Speicher
- Ger"ate

Alle haben Eintr"age "ahnlich wie INI-Dateien

Bestehen aus Sektionen

1.) systemd
2.) Units
3.) Sektionen

In den Sektionen stehen Schl"usselparameter, 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"at
*.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"uher run levels
/lib/systemd/system/default.target

Rechnername in /etc/hostname

systemd-hostnamed.service

Dateisystem:

/etc/fstab

Verschl"usset

/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"ugen

/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"alt erforderliche Hilfsprogramme f"ur 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"utzung f"ur ein System zur Verf"ugung, das analog zu System-V das Booten, Wechseln zwischen Runleveln und Herunterfahren erm"oglicht. Diese werden durch symbolische Verweise in /etc/rc?.d/ eingerichtet.
sysvinit-utils              Dieses Paket enth"alt 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"onnen.
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"uhren. 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"onnen Sie ein Modem f"ur den Umgang mit externen Logins und den Faxempfang einsetzen. Auch k"onnen Sie das Modem als Anrufbeantworter einsetzen, ohne beim Anrufen zu st"oren.


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 "ahnlich cron zum zeitlich gesteuerten Starten von Computerprogrammen. Im Gegensatz zu cron, welches voraussetzt, dass der Computer wie bei Servern "ublich, permanent l"auft, 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"ur Linux, mit der Programmen einzeln bestimmte Rechte zugeteilt oder entzogen werden k"onnen. 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"aten in einem lokalen Netzwerk, ohne dass diese manuell konfiguriert werden m"ussen.

cron                    Der Cron-Daemon dient der zeitbasierten Ausf"uhrung 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"urfnissen von Desktop-Umgebungen.

exim4                   Exim (urspr"unglich ein Akronym f"ur EXperimental Internet Mailer) ist ein Mail Transfer Agent und Mailserver.

Exim ist weitgehend aufrufkompatibel zu dem sehr traditionsreichen MTA Sendmail. Seine besondere St"arke 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"ur die Linux-Distribution Fedora entwickelt wurde.
                        Als Bootscreen bezeichnet man im Computerjargon eine grafische Anzeige des Bootprozesses w"ahrend 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"ur Unix und Unix-"ahnliche Systeme. syslog ist ein Standard zur "Ubermittlung 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 "uberraschend 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"onnen Zustandsdaten der Festplatte auslesen und so dazu beitragen, rechtzeitig einen sich anbahnenden Festplatten-Ausfall zu erkennen.

Wie der Name schon vermuten l"asst, 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