Systemd Kursnotizen
- Kursnotizen: https://systemd.kurs.planexzess.de
- Pad: https://pad.linuxhotel.de/p/Systemd_20251201
- Wiki: https://wiki.lab.linuxhotel.de/doku.php/systemd:
- Literaturliste & Dokumentation
- Linux Service Management Made Easy with systemd
Donald A. Tevault
Packt> Verlag
ISBN 978-1-80181-164-4
- Offizielle Dokumentation auf https://freedesktop.org/wiki/Software/systemd
- https://systemd.io
- Arch-Wiki (Achtung: einige Einträge sind Arch distributionsspezifisch)
- Basic Usage https://wiki.archlinux.org/title/Systemd#Basic_systemctl_usage
- Systemd/User: https://wiki.archlinux.org/title/Systemd/User
- Systemd/Journal: https://wiki.archlinux.org/title/Systemd/Journal
- Linux Service Management Made Easy with systemd
1 Tag 1
1.1 Vorstellungsrunde
- Was wollen wir?
- Unterrichtszeiten und Pausen
- 9:00 – 18:00 Unterricht
- 13:30 – 14:30 Mittagspause
1.2 Einrichtung Rechner
- Windows11/OS-X ssh Anpassungen
.config/sshHost ...
ServerAliveInterval 90
- Putty Anpassungen
- Putty-Categories (linke Liste)
- Connection
- keepalive aktivieren, z.B. auf 90 Sekunden setzen
- Connection
- Putty-Categories (linke Liste)
- Konfiguration unter git bringen
- sollte auf einem produktiven Server eher nicht gemacht werden!
apt-get install etckeeper git
- Editor einrichten
apt-get install vimoder emax-nox oder joe oder nano…update-alternatives --config editor- Weitere Pakete (prüfen und ggfs. installieren): +
aptitude,rsync,exa - Anpassung History?
editor /etc/skel/.bashrc HISTCONTROL=ignoreboth HISTSIZE=2000 HISTFILESIZE=1000000 HISTTIMEFORMAT='[%F_%T] ' # Aliase nach belieben alias ip='ip --color=auto' # praktisch
- Editoreinstellungen (falls notwendig)
# alle aus /etc/vim/vimrc geklaut
editor /etc/skel/.vimrc
syntax on
"set background=dark "falls notwendig (dark themes)
" jump to the last position when reopening a file
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
set showmatch " Show matching brackets.
set mouse=r " Enable mouse usage (all modes)
- Dateien kopieren (sowohl als root als auch als User)
cd cp /etc/skel/.vimrc . cp /etc/skel/.bashrc . cp /etc/skel/.profile .
- Container Subsystem
apt-get install systemd-container- Alma-Linux Tarball herunterladen und enttaren
cd /var/lib/machines wget <url> tar -xvzf alma9.tgz
1.3 Einführung
- Wo finden wir ihn?
# Prozesse ps ax | grep systemd pgrep -alf systemd pstree -pul| grep systemd # Paketmanager dpkg -l | grep systemd dpkg -L systemd
- Rocky Container einrichten
# als app container (wie docker/podman) systemd-nspawn -D /var/lib/machines/rocky9 /bin/bash -l (container) pstree -pul (container) # login shell läuft mit PID 1 ;-) (container) passwd # root passwort setzen (container) Ctrl+d # verlassen # als sys container starten/booten (wie LXC/LXD) systemd-nspawn -D /var/lib/machines/rocky9 -b (container) login: (container) # Einloggen wie auf einem TTY und nach Prozessen etc. suchen (container) poweroff # herunterfahren (wichtig und bitte nur den Container)
1.3.1 sysV-init vs. systemd
- Das alte Init-System
- Was ist ein
runlevelund wieviel gibt es davon? - Wechseln mit
init xodertelinit x - Welche Dateien sind in
/etc/init.d/und/etc/rc?.d/ - Persistieren mit
update-rc.d(Debian) oderchkconfig(RH) - Was war daran schlecht?
- Was ist ein
- Layered Configuration
/usr/lib/systemd/...oder/lib/systemd/.../run/systemd/.../etc/systemd/...
| sysV-init | systemd |
|
/etc/rc?.d/ (symlinks) |
{/usr}/lib/systemd/... 1. Ebene: Vendor/System/Distributor RO |
|
/etc/init.d/ (shell scripts) |
/run/systemd/... 2. Ebene: Runtime/dynamisch |
| (generator) | --> (bis Version 251) |
|
|
/etc/systemd/... 3. Ebene: Admin RW |
1.3.2 Container und VM-Grundlagen
| Userspace | Appl-C. | containerd |
| Init-Prozess | System-C. | LXC/LXD |
| Kernel | Container | |
| BIOS / EFI |
Paravirt. |
virtio |
| HID/Periph. (FW) | ||
|
CPU (Microcode) |
VMX Virt. |
KVM |
| HW: GraKa NIC (FW) | Emulation | Bochs/QEmu |
2 Tag 2
2.1 Eigene Units
- Der Nachteil, auf eine Shell zu verzichten bei
vmstat - Warum es dennoch ein Vorteil ist
2.1.1 Service Types
- oneshot Unit
- oneshot Unit mit Start und Stop (Flip-Flop)
- simple
- exec
- notify
2.1.2 Parameter
2.2 systemctl
- Units auflisten
list-units,list-unit-files - Selektieren mit
--typeund--state
2.3 Linux- und Kernel-Features
- CGroups
- Namespaces
- Capabilities
2.3.1 Abbildung im systemd
- Properties
- systemd-run
2.4 Prozessmechanik
- KillMode
2.5 Abhängigkeiten
3 Tag 3
3.1 Templates
3.2 Trigger
3.2.1 Sockets
- Accept=yes
- socket -> service
- Accept=no
- socket -> @service
3.2.2 Mount
- automount -> mount
3.2.3 Path und Timer
- path -> service
- timer -> service
3.3 Alte Subsysteme (!systemd)
3.3.1 cron
$ crontab -e # m h dom mon dow command * * * * * date >> /tmp/crontest 0 * * * * echo "KUCKUCK" >> /tmp/crontest 5,45 9-17,19 * * * echo # Wo ist der Fehler? 55 8 13 * fri echo "Pass bitte, bitte auf !!111!!ELF" #* 8-12 10-20 sep,oct sat echo "TEST TEST TEST" >> /tmp/crontest # */7 := x:00, x:07, x:14, ... x:56, x+1:00 # mon := 1,2,3 OR jan,feb,mar # dow := 0,1,2,...,6,7 OR sun,mon,tue,...,sat,sun # @...
- Der “Fehler” ist, dass Freitag, der 13. jeden Freitag und jeden 13. meint
3.3.2 (r)syslog(-ng)
3.4 Journal
- Syslog: Kompatibilität und Zusammenarbeit