Debian 8 Jessie ohne Systemd betreiben ====================================== :author: Axel Beckert :backend: slidy :max-width: 45em :data-uri: http://noone.org/talks/debian-ohne-systemd/ :max-width: 94% :icons: Übersicht --------- (Folien auch unter http://noone.org/talks/debian-ohne-systemd/) - Motivation - Was alles bedeutet "Systemd ist installiert"? - Installation ohne Systemd - Dist-Upgrade von Wheezy nach Jessie ohne Systemd - Links und Referenzen Motivation ---------- - Ab Debian 8 "Jessie" ist systemd das Default-Init-System von Debian - Viele Nutzer sind unglücklich mit Systemd. Oft genannte Gründe: * Zu wenig KISS ("Keep It Simple (and) Stupid") * Zuviel Funktionalität, mehr als nur ein Init-System * Funktioniert nur mit Linux, nicht portabel. * Kein separates `/usr` ohne `initrd` mehr unterstützt. - Debian unterstützt System-V-Init nach wie vor. * … und Upstart (RIP?) und OpenRC (OpenRC-spezifischen Init-Skripte z.Zt. nicht möglich.) //- Typische Frage in den letzten Monaten: "Wie bekomme ich Jessie mit System-V-Init?" - Zielgruppe: Leute, die sich bereits für System-V-Init entschieden haben. - Antworten ohne Diskussion über das "Warum?". Dafür ist auch keine Zeit. ;-) Was alles bedeutet "Debian mit/ohne Systemd"? --------------------------------------------- Es gibt viele Abstufungen: * Systemd läuft. - Systemd wird als Init-System genutzt = Paket 'systemd-sysv' ist installiert. * Systemd ist installiert. - Das Paket 'systemd' ist zusammen mit anderem Init-System installiert. - Oft ist auch 'libpam-systemd' installiert. * Systemd-Bibliotheken sind installiert. - Das Paket 'systemd' ist nicht installiert, aber 'libsystemd0' und ggf. weitere. * Ein Binärpaket, das aus dem Quellpaket 'systemd' gebaut wurde, ist installiert. - Typischerweise ist unter Debian GNU/Linux das Paket 'udev' installiert. Paket-Abhängigkeiten (vereinfacht) ---------------------------------- image::package-graph-clt.png[] Wie leicht ist es, die einzelnen Stufen weg zu bekommen? (1) ------------------------------------------------------------ Der einfache Teil: - Paket 'systemd-sysv' (systemd als Init-System) wegbekommen: * Meist einfach * 'systemd-shim' + 'sysvinit-core' + nur 'systemd' installieren - Pakete 'systemd' und 'libpam-systemd' (Nicht-Init-System-Funktionalitäten) wegbekommen: * Schränkt Paketauswahl ein * Auf Pakete verzichten, die davon abhängen (GNOME, Network-Manager) Wie leicht ist es, die einzelnen Stufen weg zu bekommen? (2) ------------------------------------------------------------ Der schwierige Teil: - 'libsystemd0' (C-Schnittstellen zu Systemd) wegbekommen: * mithilfe von 3rd-Party-Repositories wegbekommen: ** Erlaubt PolicyKit und UDisks ohne Abhängigkeit von Systemd und damit wieder mehr von GNOME und anderen Desktop-Environments. * ohne 3rd-Party-Repositories wegbekommen: ** Schwierig ** Viele Desktop-Environments gehen nicht mehr - 'udev' wegbekommen * Es geht -- auch wenn viele das Gegenteil behaupten. * Man muß nur Debian GNU/Hurd oder Debian GNU/kFreeBSD nutzen. (Beide Architekturen sind jedoch nicht Teil des Stable-Releases von Jessie.) * Alternativ Verzicht auf sämtliches Hotplugging, braucht ggf. speziell kompilierten Kernel. Ungetestet. // Debian GNU/Linux auf m68k (halboffiziell weitergepflegter, ehemaliger Port) geht ohne udev. Init-System dynamisch wechseln ------------------------------ Via Kernel-Bootparameter ~~~~~~~~~~~~~~~~~~~~~~~~ `init=/bin/systemd` (aus dem Paket 'systemd') oder `init=/lib/sysvinit/init` (aus dem Paket 'sysvinit') als Kernel-Bootparameter angeben: * Manuell im Bootloader, um einmalig das Init-System zu wechseln. Gilt nur für den aktuellen Bootvorgang. * In der Konfiguration des Bootloaders z.B. in unterschiedlichen Menüeinträgen. Init-Select ~~~~~~~~~~~ Das Paket 'init-select' ermöglicht Wechseln des Default-Init-Systems beim nächsten Reboot. (Braucht 'systemd-shim' und eine Plattform mit Grub 2.) Init-System im Grub-2-Menü auswählen ------------------------------------ Das Paket 'grub-pc' (Grub 2) bietet seit Januar 2015 verschiedene Init-Systeme im Menü an (siehe Debian Bug-Reports https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=736678[#736678], https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=757298[#757298] und https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773173[#773173]): menuentry 'Debian GNU/Linux, with Linux 3.19.0-trunk-amd64' … { … linux /vmlinuz-3.19.0-trunk-amd64 root=/dev/mapper/vgcc-root ro … … } menuentry 'Debian GNU/Linux, with Linux 3.19.0-trunk-amd64 (sysvinit)' … { … linux /vmlinuz-3.19.0-trunk-amd64 root=/dev/mapper/vgcc-root ro … init=/lib/sysvinit/init … } Braucht mindestens die Pakete 'systemd', 'sysvinit' und 'grub-pc'. Auf Nicht-x86-Architekturen, auf denen ein Grub 2 verfügbar ist (z.B. PowerPC, Sparc, ARM mit UEFI), sollte dies mit den dort verfügbaren 'grub-*'-Paketen analog funktionieren. 3rd-Party-Repositories mit weniger Systemd-Abhängigkeiten --------------------------------------------------------- - https://www.mirbsd.org/~tg/Debs/debidx.htm * Von mirabilos und Y_Plentyn. * `deb https://www.mirbsd.org/~tg/Debs/ jessie wtf` * Bietet diverse 'prevent-systemd-*'-Pakete als Hilfen * 'prevent-*' sind als "essential" markiert: Entfernen nur nach Eingabe von "Yes, I am aware this is a very bad idea" * ggf. Pinning nutzen, da auch noch andere Pakete drin sind (geht nur ohne gesetztes `APT::Default-Release`): Package: * Pin: release l=wtf Pin-Priority: 250 - http://angband.pl/debian/dists/nosystemd/ * Von Adam Borowski aka Kilobyte. - https://debian-knoppix.alioth.debian.org/ * Das APT-Repository mit den für Knoppix veränderten Paketen * Erlaubt einfacheres Mischen von Paketen, die von 'systemd-sysv' abhängen, mit 'sysvinit'. Installation von Debian 8 Jessie ohne Systemd als Init-System ------------------------------------------------------------- Installer booten mit Parameter preseed/late_command="in-target apt-get install -y sysvinit-core" booten oder diesen per Preseeding setzen. (Quelle: https://wiki.debian.org/systemd#Installing_without_systemd via Release Notes) Dist-Upgrade von Wheezy nach Jessie ohne Systemd ------------------------------------------------ Offizieller und sauberer Weg ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vor dem Dist-Upgrade die Installation von 'systemd-sysv' per APT Pinning verhindern, z.B. speichern unter `/etc/apt/preferences.d/nosystemd`: Package: systemd-sysv Pin: release o=Debian Pin-Priority: -1 (Quelle: https://www.debian.org/releases/jessie/amd64/release-notes/ch-information.de.html#systemd-upgrade-default-init-system) Andere Wege ~~~~~~~~~~~ * Bei Nutzung von 'aptitude' interaktiv explizit 'sysvinit-core' auswählen und 'systemd-sysv' abwählen (lassen). * Bei Nutzung von 'aptitude' auf der Kommandozeile `aptitude full-upgrade '~U sysvinit-core+'` // * Bei Nutzung von 'apt' auf der Kommandozeile `apt-get (dist-)upgrade // sysvinit-core+` (TODO: Ausprobieren! Quelle: // https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=756816#10) Fazit ----- * Debian mit einem anderen Init-System als Systemd ist kein Problem und relativ einfach hinzubekommen. * Je mehr Pakete aus dem Systemd-Dunstkreis man entfernen möchte, desto mühsamer wird's -- zumindest auf dem Desktop. * Ganz ohne Pakete aus dem Systemd-Quellen geht nur mit einem anderen Kernel als Linux oder durch Verzicht auf sämtliches Hotplugging. Links und Referenzen -------------------- - Folien: http://noone.org/talks/debian-ohne-systemd/ - Debian-Wiki-Eintrag zu Systemd: https://wiki.debian.org/systemd - Debian Release Notes für Jessie: https://www.debian.org/releases/jessie/amd64/release-notes/ - Webseiten mit Infos rund um Systemd-Alternativen: * http://the-world-after-systemd.ungleich.ch/ * http://wiki.linuxquestions.org/wiki/Prevent_systemd_installation - Erfahrungsbericht eines Selbstversuches: http://lkcl.net/reports/removing_systemd_from_debian/ - Andere Distributionen (noch) ohne Systemd: * Knoppix (aus technischen Gründen) * Devuan (basierend auf Debian, nach wie vor im Aufbau befindlich) * Slackware * Gentoo (OpenRC) * Crux - Kontakt * Axel Beckert * http://axel.beckert.ch/ Danke ----- * Frank, Annette, Rhalina und vielen anderen für Zuspruch zum Halten dieses Vortrags, * Annette, Michael, Klaus, Klaus, Frank, Daniel, mirabilos, Julius, Y_Plentyn, Bastian, Jan, Venty, … fürs Korrekturlesen des Vortrags und Verbesserungsvorschläge, * 'apt-cache dotty' für den Paketgraphen * sowie Euch fürs Interesse und Zuhören.