Inhaltsverzeichnis

System V Init - Das klassische Init-System

Kurzfassung: System V Init (SysVinit) war das traditionelle Init-System in Unix/Linux-Systemen von den 1980ern bis ca. 2015. Es wurde durch modernere Systeme wie systemd, Upstart und OpenRC abgelöst. Zielgruppe: Systemadministratoren zum Verständnis der Init-System-Evolution.

Übersicht

System V Init (auch SysV oder SysVinit) war über Jahrzehnte das Standard-Init-System auf Unix und Linux. Es wurde von AT&T entwickelt und war das erste Programm, das beim Booten gestartet wurde (PID 1). SysVinit organisierte Dienste in Runlevels und nutzte Shell-Skripte zur Service-Verwaltung. Trotz seiner Robustheit hatte es Performance- und Komplexitätsprobleme, was zur Entwicklung moderner Alternativen führte.

Voraussetzungen

Anleitung

Runlevels - Das SysV-Konzept

System V organisierte den Systemzustand in Runlevels:

Runlevel 0: Halt (System herunterfahren)
Runlevel 1: Single-User-Modus (Wartung)
Runlevel 2: Multi-User ohne Netzwerk (Debian/Ubuntu: mit Netzwerk)
Runlevel 3: Multi-User mit Netzwerk (CLI)
Runlevel 4: Nicht definiert (frei verwendbar)
Runlevel 5: Multi-User mit Netzwerk und GUI (X11)
Runlevel 6: Reboot (Neustart)

Runlevel-Befehle:

# Aktuellen Runlevel anzeigen
runlevel
who -r
 
# Runlevel wechseln (root)
init 3        # Wechsel zu Runlevel 3
telinit 5     # Alternative Syntax
 
# Standard-Runlevel (in /etc/inittab)
grep :initdefault: /etc/inittab

Verzeichnisstruktur

# Init-Skripte (Service-Definitionen)
ls /etc/init.d/
# Beispiele: apache2, mysql, ssh, networking
 
# Runlevel-Verzeichnisse (symbolische Links)
ls /etc/rc0.d/   # Runlevel 0 (Halt)
ls /etc/rc1.d/   # Runlevel 1 (Single-User)
ls /etc/rc2.d/   # Runlevel 2
ls /etc/rc3.d/   # Runlevel 3
ls /etc/rc5.d/   # Runlevel 5 (GUI)
ls /etc/rc6.d/   # Runlevel 6 (Reboot)
 
# Link-Namenskonvention:
# S20apache2  → Start-Skript, Priorität 20
# K80apache2  → Kill-Skript, Priorität 80
# S = Start, K = Kill

Service-Verwaltung mit SysV

# Service starten
sudo /etc/init.d/apache2 start
sudo service apache2 start
 
# Service stoppen
sudo /etc/init.d/apache2 stop
sudo service apache2 stop
 
# Service neu starten
sudo /etc/init.d/apache2 restart
sudo service apache2 restart
 
# Service-Status
sudo /etc/init.d/apache2 status
sudo service apache2 status
 
# Service beim Booten aktivieren/deaktivieren
sudo update-rc.d apache2 defaults      # Aktivieren
sudo update-rc.d apache2 disable       # Deaktivieren
sudo update-rc.d -f apache2 remove     # Entfernen
 
# Auf RHEL/CentOS (chkconfig)
sudo chkconfig apache2 on              # Aktivieren
sudo chkconfig apache2 off             # Deaktivieren
sudo chkconfig --list                  # Alle Services

Beispiel: SysV Init-Skript

#!/bin/sh
### BEGIN INIT INFO
# Provides:          myservice
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: My Service
# Description:       Extended description
### END INIT INFO
 
DAEMON=/usr/bin/myservice
PIDFILE=/var/run/myservice.pid
 
case "$1" in
  start)
    echo "Starting myservice"
    start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON
    ;;
  stop)
    echo "Stopping myservice"
    start-stop-daemon --stop --pidfile $PIDFILE
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  status)
    if [ -f $PIDFILE ]; then
      echo "myservice is running"
    else
      echo "myservice is not running"
    fi
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac
 
exit 0

Nachteile von System V Init

Performance-Probleme:

Komplexität:

Fehlende Features:

Die Ablösung - Moderne Init-Systeme

systemd (2010 - heute)

Eigenschaften:

Distributionen:

Kompatibilität:

# systemd bietet Kompatibilitäts-Layer
sudo service apache2 start      # Funktioniert weiterhin
sudo systemctl start apache2    # Moderner systemd-Befehl
 
# SysV-Skripte werden automatisch konvertiert
ls /etc/init.d/                 # Alte Skripte bleiben
systemctl list-units            # Werden als systemd-Units verwaltet

Upstart (2006 - 2014)

Eigenschaften:

Ehemalige Nutzer:

OpenRC (2007 - heute)

Eigenschaften:

Nutzer:

runit (2004 - heute)

Eigenschaften:

Nutzer:

Migration von SysV zu systemd

Kompatibilitäts-Check:

# Aktuelles Init-System identifizieren
ps -p 1 -o comm=
# Ausgabe: systemd oder init
 
# Init-System-Version
systemctl --version      # systemd
init --version          # SysV (falls vorhanden)
 
# SysV-Services finden
ls /etc/init.d/
systemctl list-unit-files --type=service | grep generated

SysV zu systemd Befehl-Mapping:

# SysV                          → systemd
service apache2 start           → systemctl start apache2
service apache2 stop            → systemctl stop apache2
service apache2 restart         → systemctl restart apache2
service apache2 status          → systemctl status apache2
update-rc.d apache2 defaults    → systemctl enable apache2
update-rc.d apache2 disable     → systemctl disable apache2
chkconfig apache2 on            → systemctl enable apache2
runlevel                        → systemctl get-default
init 3                          → systemctl isolate multi-user.target

Runlevel zu systemd Target-Mapping:

# SysV Runlevel      → systemd Target
Runlevel 0           → poweroff.target
Runlevel 1           → rescue.target
Runlevel 2,3,4       → multi-user.target
Runlevel 5           → graphical.target
Runlevel 6           → reboot.target

Hinweise

Historisches Wissen: - System V Init ist auf modernen Systemen nicht mehr Standard - Verständnis hilfreich für Legacy-Systeme und Embedded-Geräte - Viele Konzepte (Runlevels → Targets) leben in systemd weiter - SysV-Skripte in /etc/init.d/ oft noch vorhanden (Kompatibilität) - service Kommando funktioniert oft als Wrapper für systemd
Bei Legacy-Systemen: - Alte Distributionen (Debian 7, Ubuntu 14.04) nutzen noch SysV/Upstart - Embedded Systems und Router oft mit SysV oder OpenRC - Migration zu systemd erfordert Umdenken bei Service-Management - Init-Skripte nicht einfach 1:1 auf systemd übertragbar - Abhängigkeiten in systemd Units anders definiert

Siehe auch

Quellen