Skip to content

Den Linux Bootvorgang mit systemd analysieren

Systemd läuft sys-v-init nach und nach den Rang hab. Das heißt bei der Untersuchung des Bootvorgangs können andere Wege gegangen werden und es muss nicht auf altbekannte Tools wie Bootcharts zurückgegriffen werden.

Systemd bringt ein eigenes Analysetool auf pythonbasis mit, welches ähnliche Möglichkeiten bietet.

Der Aufruf kann zunächst ohne Parameter getestet werden. Dieser liefert einen groben Überblick.

systemd-analyze

Startup finished in 7.239s (kernel) + 30.762s (userspace) = 38.001s

Das gleiche Ergebnis wirft auch der Parameter "time" aus.

Die Ausgabe gibt anders als auf den ersten Blick vermutet nicht den gesammten Bootvorgang wieder, sondern nur die Zeit zum Starten der Dienste und Co.

systemd-analyze-chain

Der Parameter "critical-chain" liefert hier schon einen detaillierten Blick auf mögliche Nachzügler.

systemd-analyze critical-chain

Eine Liste aller Units kann wie folgt ausgegeben werden.

systemd-analyze blame

systemd-analyze-blame

Um nun eine ähnliche grafische Ausgabe wie bei Bootcharts zu erhalten bietet systemd-analyze eine SVG Ausgabe. Diese kann mit einem herkömmlichen Browser geöffnet werden.

systemd-analyze plot > /home/itrig/systemd.svg

systemd-analyze-svg

Eine weitere grafische Ausgabe kann mit "dot" erzielt werden. Dabei werden die Abhängigkeiten aller Aufrufe dargestellt.

systemd-analyze dot | dot -Tsvg > /home/itrig/systemdplot.svg

Soll die Grafik auf einen Dienst beschränken werden, muss dieser einfach mit angegeben werden.

systemd-analyze dot 'docker*' |dot -Tsvg > /home/itrig/docker.svg

systemd-analyze-dot

Alle weiteren Befehle lassen sich mit "man" oder "help" einsehen.
 

systemd-analyze [OPTIONS...] {COMMAND} ...

Profile systemd, show unit dependencies, check unit files.

  -h --help               Show this help
     --version            Show package version
     --no-pager           Do not pipe output into a pager
     --system             Operate on system systemd instance
     --user               Operate on user systemd instance
  -H --host=[USER@]HOST   Operate on remote host
  -M --machine=CONTAINER  Operate on local container
     --order              Show only order in the graph
     --require            Show only requirement in the graph
     --from-pattern=GLOB  Show only origins in the graph
     --to-pattern=GLOB    Show only destinations in the graph
     --fuzz=SECONDS       Also print also services which finished SECONDS
                          earlier than the latest in the branch
     --man[=BOOL]         Do [not] check for existence of man pages

Commands:
  time                    Print time spent in the kernel
  blame                   Print list of running units ordered by time to init
  critical-chain          Print a tree of the time critical chain of units
  plot                    Output SVG graphic showing service initialization
  dot                     Output dependency graph in dot(1) format
  set-log-level LEVEL     Set logging threshold for manager
  set-log-target TARGET   Set logging target for manager
  dump                    Output state serialization of service manager
  verify FILE...          Check unit files for correctness

 

Debian 9 Stretch - Systemd deinstallieren und SysV-Init verwenden

Seit einigen Jahren setzen viele Distributionen auf systemd. Das neue Init System ist allerdings nicht bei allen beliebt und führte in der Vergangenheit zu Forks wie beispielsweise Devuan.

Ebenfalls sind im Vergleich zu SysV-Init noch Unstimmigkeiten oder Sicherheitslücken vorhanden. (Siehe CVE)

debian

Welches System am Ende zum Einsatz kommt, hängt oft von der verwendeten Distribution ab.

Das muss nicht sein, denn Systeme wie Debian 9 lassen sich einfach umstellen.

Zunächst sollte überprüft werden, welches Standard-Init-System aktuell im Einsatz ist:

ps -p 1

PID TTY          TIME CMD
    1 ?        00:00:10 systemd

 

 

Debian 9 - Systemd deinstallieren

apt install sysvinit-core

reboot

sysvinit-debian

apt remove --purge --auto-remove systemd*

nano /etc/apt/preferences.d/systemd

Package: *systemd*
Pin: release *
Pin-Priority: -1

 

SysV-Init überprüfen

Die Überprüfung erfolgt auf die gleiche Weise wie am Anfang des Artikels.

debian9-init

Fazit

Die Umstellung eines aktuellen Debian 9 Stretch Systems ist schnell erledigt, mit Devuan 1.0 ist seit Mitte des Jahres ein Debian Fork vorhanden, welcher direkt auf das alte SysV-Init setzt.

Admin Panels Part2: Cockpit - Leitstand für Fedora, CentOS oder Ubuntu

Tools für eine zentrale Verwaltung von Linux Servern gibt es einige. Mit Ajenti und LinuxDash hatte ich bereits zwei vorgestellt.
Einen weitern interessanten Ansatz verfolgt Red Hat seit einiger Zeit.

Cockpit - Serververwaltung

Mit Cockpit haben sie eine frei über Github entwickelte Linux Steuerzentrale in petto, welche auf neueren Distributionen von Fedora, CentOS oder ArchLinux bereits vorinstalliert oder zumindest als fertiges Installationspaket bereit liegt.
Cockpit setzt auf systemd und ist somit auf dem aktuellen Ubuntu 14.04 LTS nicht unbedingt praktikabel, da aber Ubuntu 16.04 bereits in den Startlöchern steht, sieht es für Cockpit auf Ubuntu Systemen in Zukunft ebenfalls gut aus.

Das Verwaltungstool unterstützt nicht nur verschiedene Systeme, es kann über das zentrale Dashboard auch auf eine ganze heterogene Umgebung zugreifen, um diese zu verwalten. Die Kommunikation zwischen den Maschinen erfolgt über SSH.

cockpit

Schlicht aber effektiv

Die einfache Bedienung des Tools fängt beim Login an, hier werden automatisch hinterlegte Nutzer mit root Rechten für den Login freigeschaltet.
Nicht nur die moderne und aufgeräumte Oberfläche wirkt erfrischend, auch die Auswertungen von Systemperformance ist schlicht und ausreichend.
Die Usability endet bei einem eingebundenen Terminal, welches das Arbeiten auf der Konsole über die Oberfläche ermöglicht.

cockpit-login

Sichere Sache

Anders als Webmin, Ajenti und Co, benötigt Cockpit keinen Apache Server oder ähnliches, welcher ständig in Betrieb sein muss. Der eigene Dienst cockpit-ws startet den Webserver nur, sobald eine Anfrage auf dem Standard Port 9090 ankommt. Sollten keine weiteren Anfragen auf dem Port ankommen, legt er sich nach 90 Sekunden Inaktivität wieder schlafen.

Ist der Webserver aktiv kann er über HTTP und HTTPS erreicht werden, HTTP wird aber automatisch auf HTTPS umgeleitet.  Ein Zertifikat kann unter "/etc/cockpit/ws-certs.d" abgelegt werden. SSL3 und RC4 sind von Haus aus deaktiviert.

Die wichtigsten Cockpit Konsolen Befehle

Prüfen welches Zertifikat verwendet wird

sudo remotectl certificate

Cockpit manuell starten

sudo systemctl enable cockpit.socket
sudo systemctl start cockpit.service
sudo systemctl status cockpit.service

Cockpit Autostart Eintrag erstellen

sudo systemctl enable cockpit.socket

Anderen Port hinterlegen

Temporär

sudo nano /usr/lib/systemd/system/cockpit.socket

oder permanent

sudo cp /lib/systemd/system/cockpit.socket /etc/systemd/system
sudo nano /etc/systemd/system/cockpit.socket

 ListenStream=666

sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket

Cockpit Oberfläche (Standardport)

https://cockpit-server:9090

cockpit_install

Installation unter CentOS

Unter bereits voll unterstützen Systemen, ist die Installation ein Kinderspiel

yum install cockpit
sudo systemctl start cockpit

Den Dienst erlauben

systemctl enable cockpit.socket

Wenn nötig die Firewall öffnen

firewall-cmd --permanent --zone=public --add-service=cockpit
sudo firewall-cmd --reload

Das System ist nun über den oben erwähnten Port ereichbar.

cockpit-uebersicht


Installation from Source (Ubuntu)

Eine Installation ist eigentlich erst ab Ubuntu 15.10 sinnvoll, aber dennoch auf 14.04 möglich.

Pakete installieren

sudo apt-get install xsltproc libglib2.0-dev libjson-glib-dev libpolkit-agent-1-dev libkrb5-dev liblvm2-dev libgudev-1.0-dev libssh-dev libpam0g-dev libkeyutils-dev libpcp3-dev libpcp-import1-dev libpcp-pmda3-dev intltool xmlto libxslt1-dev selinux-policy-dev checkpolicy selinux-policy-doc libdbus-1-dev libsystemd-dev glib-networking
wget https://github.com/cockpit-project/cockpit/releases/download/0.102/cockpit-0.102.tar.xz
tar xvf cockpit-0.102.tar.xz
cd /cockpit-0.102
sudo ./configure
make
make install

Mögliche Fehler

Starting Cockpit Web Service...
remotectl[26324]: Generating temporary certificate using: openssl req -x509 -days 36500 -newkey rsa:2048 -keyout /usr/local/etc/cockpit/ws-certs.d/0-self-signed.P7XPFY.tmp -keyform PEM -nodes -o
remotectl[26324]: remotectl: /usr/local/etc/cockpit/ws-certs.d/0-self-signed.cert: TLS support is not available
systemd[1]: cockpit.service: Control process exited, code=exited status=1
systemd[1]: Failed to start Cockpit Web Service.
systemd[1]: cockpit.service: Unit entered failed state.
systemd[1]: cockpit.service: Failed with result 'exit-code'.

Lösung

sudo apt-get install glib-networking

Installation von PPA (Ubuntu)

Via PPA fällt die Installation um einiges leichter, allerdings kommt hier ein relativ altes Installationspaket zum Einsatz (0.38).   

sudo add-apt-repository ppa:jpsutton/cockpit

sudo apt-get update

sudo apt-get install cockpit

cockpit-dashboard

 

Ubuntu 14.04

Um Cockpit unter älteren Systemen zu starten, kann nicht auf systemd zurückgegriffen werden, es startet hier wie folgt.

sudo /usr/sbin/remotectl certificate --ensure --user=root
sudo /usr/libexec/cockpit-ws

Natürlich kann die mit einem eigenen Init Script automatisiert werden, dies bleibt jedem selbst überlassen.

Fazit

Sowohl für einzelne Server, als auch für kleinere Netzwerke, bestehend aus Linux Rechnern, bietet Cockpit eine Möglichkeit Server einfach zu warten und zu überwachen. Durch die leichte Installation und die klare Oberfläche ist sie besonders für Einsteiger geeignet.

Leider gibt es für Ubuntu Systeme bisher keine offiziellen Pakete. Das PPA ist leider nicht auf dem neuesten Stand. Eventuell ändert sich dies mit Ubuntu 16.04 LTS.

Mit dem Landscape Server bietet Canonical bereits eine eigene Ubuntu Server Verwaltung und Performance Analyse an, welche auf bis zu 10 Systemen umsonst angewendet werden kann. (siehe Artikel).

Welches Admin Tool für die eigenen Bedienungen geeignet ist, muss wohl immer individuell entschieden werden.


Quellen

http://www.golem.de/news/cockpit-angesehen-die-einfache-steuerzentrale-fuer-linux-server-1507-115035-3.html
http://cockpit-project.org/guide/latest

 

Debian 8 Administrator Handbuch mit Systemd und AppArmor

Das Release des Debian Administrator Handbuchs war zwar schon vor einem Monat, soll hier aber nicht unerwähnt bleiben.

Das übersichtliche Nachschlagewerk von Raphaël Hertzog und Roland Mas bringt in der aktualisierten Version 8 Jessie zwei neue Kapitel mit.
Zum einen wird in Kapitel 9 nun neben dem klassischen System V init System auch auf systemd eingegangen, zum anderen hat mit AppArmor das Mandatory Access Control System unter Kapitel 14 einen Platz erhalten.

Debian-Handbuch

Das Handbuch kann auf deutsch oder englisch online eingesehen werden. Es steht aber ebenso als PDF oder Epub zum Download bereit.

Das Buch ist sowohl an Debian Anfänger als auch an Erfahrene gerichtet, aber auch für debian basierte Systeme wie Ubuntu, Mint oder ElementaryOS geeignet.

Die Sammlung bietet für jeden etwas, da sie auf alle wichtigen Punkte eines umfangreichen Debian Servers wie beispielsweise Installation, Paketverwaltung oder Einrichtung von Netzwerk, LVM, DHCP/DNS, Apache, Postfix, LDAP eingeht.

Debian Handbuch


Das könnte dich auch interessieren
 

Ein Blick in die Glaskugel - Systemd vs SysVinit Linux Cheatsheet

Fedora hat es, OpenSuse kennt es und Ubuntu soll es demnächst bekommen. Die Rede ist von Systemd, einem Initialisierungsprozess von Linux Distributionen.

Canoncial (Ubuntu) setzte bisher auf ein eigenes Init Syteme, hat aber vor einiger Zeit offiziell bekannt gegeben, ebenfalls in das Systemd Lager zu wechseln.

Was auf den Nutzer zukommt, soll die folgende Infografik von linoxide verdeutlichen. Dabei werden die wichtigsten Systembefehle gelistet. So wird beispielsweise aus 

service programm start ---> systemctl start programm.service 

runlevel --> systemctl get-default

reboot --> systemctl reboot

um nur ein paar zu nennen. Den Rest könnt ihr der Grafik entnehmen, welche sich bei Bedarf auf als ausdruckbare A4 Version herunterladen lässt.

systemd-vs-sysVinit-cheatsheet