Debian Jessie Workshop

Debian 8 Jessie
für Sevim.
Debian wird neben Scientific Linux, Red Hat Enterprise Linux und Microsoft Windows
auf der Internationalen Raumstation verwendet.
Geschichte / Hintergrund
Das Projekt Debian ("Debian GNU/Linux") wurde von Ian Murdock 1993 ins Leben
gerufen.
Debian = Deb(ra Lynn) + Ian Murdock
1996: erste stabile Version 1.1 "Buzz" (Namen nach Toy Story Charakteren)
24. Juli 1998: 2.0 Hamm, erstmals Unterstützung mehrerer Architekturen
4. Mai 2013: Wheezy, Version 7.0
25.April 2015 [Samstag]: Jessie, Version 8.0
(Freeze war am 5. November 2014 - weitere Updates nur für Bugfixes)
etwa 21.000 Pakete
Debian-Verfassung, Gesellschaftsvertrag Debian Social Contract
-> konsequent freie Software (Dokumentation, etc. alle Komponenten im Hauptzweig main)
Firefox = Iceweasel, Thunderbird = Icedove, ...
Stammbaum
Ubuntu, Knoppix, Raspbian [Debian Wheezy 7 armhf für ARMv6], und über 130 mehr ...
Veröffentlichungen
stable
ca. alle 2,5 Jahre, nur Sicherheitsaktualisierungen
gut für Server
testing
basiert auf stable, mit Neuerungen. Häufig für Arbeitsplatzrechner genutzt.
unstable ("Sid" ~ Still in development / Sid is dangerous)
Neue Versionen von Paketen und Programmen, erste Prüfung (~ 10 Tage).
"bleeding edge"
Backports
Neue Programm-Versionen "zurückportiert" auf Stable.
Neues in Jessie




Unterstützung von ARM64
"Debian's finest games": metapackage games-finest
12.253 neue Packages - insgesamt jetzt > 43.512 packages
o über 24.573 Packages, oder 66 % wurden geupdated
9 DVDs oder über 60 CDs an Packages

systemd-sysv as default init system
o monitoring, logging, service management, cron, ...
o ersetzt sysvinit-core

Desktop GNOME 3.13,
o Support for touch screens, intutive gestures based on multiple finger movements
o benötigt einfache 3D Grafik -> auf i386 / amd64 SSE2, auf anderen Architekturen 3DBeschleunigung mit EGL Treibern
o Raspberry Unterstützung?
Xfce = Alternative







Paket "debian-security-support" informiert wenn Support für ein Paket vorzeitig beendet
werden muss (vor Support für Distribution)
Paket "needrestart" - prüft ob Services auf dem System von einem Neustart nach z.B. Update
von Libraries profitieren würden (Sicherheit!)
libreoffice ersetzt openoffice.org
Ruby 2.1 ersetzt ruby 1.8 / ruby 1.9.1
KDE 4.11, Xfce 4.10, LXDE
LibreOffice 4.3
Calligra 2.8
GNU C library: 2.19 (war 2.13 in Wheezy)
Linux kernel: 3.16 series (war 3.2 series in Wheezy)
Debian Paketmanagement






Der große Vorteil gegenüber Microsoft Windows
Alle Funktionalitäten in Pakete verteilt, z.B. Bibliotheken, Kernel, Software wie LibreOffice.
Pakete hängen voneinander ab - die Installation eines Paketes zieht einen Rattenschwanz an
anderen Paketen nach sich
Paketabhängigkeiten sind manchmal schwierig aufzulösen, v.a. bei Software die man aus der
Source kompiliert und installiert / aus "fremden" Repositories
Debian Packages werden maintained, enthalten u.U. Anpassungen an Debian.
Es gibt aus verschiedenen Gründen Paketquellen / Pakete zum Download außerhalb von
Debian's offiziellen Repositories. Wichtig: auf Vertrauenswürdigkeit der Quelle achten! Im
Zweifel NICHT installieren!
dpkg - low-level, weiß nichts über Repositories. Installation von einem beliebigen .deb Paket:
dpkg -i paketname.deb
apt-get - Standard-Tool für Installation und entfernen von Packages. Der einzige Befehl den man
kennen muss:
apt-get install aptitude
apt-cache - Standard-Tool für Suche nach Packages und Information über Packages
aptitude - Alles in einem, bessere Suche - unser Favorit
Softwarekategorien
main
komplett freie Software und sonstige Werke, gemäß Debian Free Software Guidelines
non-free
proprietäre Software, beispielsweise Firmware
contrib
eigentlich freie Software, die aber von non-free Paketen abhängt. (Bspw. früher Java-Programme die
Java von Sun benötigten)
Hinweis: Backports sind Pakete von neueren Programmversionen die für eine alte Veröffentlichung
kompiliert wurden.
Unterschiede Debian / Raspbian
Debian Vorteile




Schneller Bootvorgang & Reboot (systemd)
Neuerer Stand von Paketen
Mehr Mirrors
(noch) mehr Anleitungen
Debian Nachteile (nur momentan ;-)



enthält noch keine Raspberry-spezifische Software (omxplayer, raspi-config, raspiupdate), an
manchen Stellen hakt es daher, oder Dinge müssen anders getan werden
(sonicpi? minecraftpi?)
Grafikbeschleunigung muss manuell installiert werden ...
Installation & Login
Follow the instructions / discussion here:
http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/
Image can be downloaded here:
https://images.collabora.co.uk/rpi2/
Login:
root / debian
Keyboard umkonfigurieren
apt-get update
apt-get install keyboard-configuration
ruft automatisch auf: dpkg-reconfigure keyboard-configuration
(Hinweis: das Zeichen "-" ist auf dem deutschen Keyboard in amerikanischer Belegung das "?" bzw.
"ß", "z" und "y" sind vertauscht)
Paket-Verwaltung (mit aptitude)
Vorteile von aptitude


ein Tool für Paketmanagement (statt mehrere apt-get / apt-cache)
automatisches Auflösen von Paket-Abhängigkeits-Konflikten und Vorschläge zur Lösung
Aptitude installieren
apt-get install aptitude
Danach wird empfohlen ausschließlich aptitude zu benutzen.
Basics
Aktuelle Paket-Definitionen herunterladen
aptitude update
Alle Pakete Upgraden
aptitude upgrade
Suche nach interessanten Paketen
Beispiel: Alle Pakete mit firmware im Namen anzeigen:
aptitude search firmware
Beispiel: Alle Pakete mit firmware im Namen anzeigen, mit "wireless" in ihrer Beschreibung (~d):
aptitude search 'firmware ~dwireless'
Welche Pakete sind bereits installiert innerhalb der Suche nach "firmware" im Paketnamen? (~i)
aptitude search ~ifirmware
Welche Pakete stellen den Service "mail-transport-agent" bereit?
aptitude search '?provides(mail-transport-agent)'
Wie finde ich heraus, wie Services benannt sind, beispielsweise Webserver?
apache2 ist zum Beispiel ein beliebtes Web Server Paket. Wir lassen uns die Details anzeigen:
aptitude show apache2
Package: apache2
State: not installed
Version: 2.4.10-10
Priority: optional
Section: httpd
Maintainer: Debian Apache Maintainers <[email protected]>
Architecture: armhf
Uncompressed Size: 518 k
Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.10-10), apache2-utils (>= 2.4),
apache2-data (= 2.4.10-10)
PreDepends: dpkg (>= 1.17.14)
Recommends: ssl-cert
Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom
Conflicts: apache2.2-common (< 2.3~)
Replaces: apache2.2-common
Provides: httpd, httpd-cgi
Description: Apache HTTP Server
The Apache HTTP Server Project's goal is to build a secure, efficient and extensible HTTP server as
standards-compliant open source software. The result has long been the number one web
server on the Internet.
Installing this package results in a full installation, including the configuration files, init scripts and
support scripts.
Homepage: http://httpd.apache.org/
Tags: role::metapackage, suite::apache
Frage: Welche Pakete kann ich Alternativ zu Apache als Web Server installieren?
...
mehr zu Suche mit aptitude:
http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html
Warum sind bestimmte Pakete installiert (Abhängigkeiten)?
aptitude why cron
Paketquellen managen
Problem:
Wir wollen uns ins WLAN verbinden (aus Xfce Desktop mittels network-manager)
WL0084B WLAN Stick funktioniert nicht, Firmware fehlt. (Teilt uns network-manager bei links-Klick so
mit - device not ready, firmware missing).
Debian-Policy: ALLES muss frei sein in main. Anzeigen von aktuellen Paketquellen:
cat /etc/apt/sources.list
deb http://ftp.debian.org/debian jessie main
deb https://repositories.collabora.co.uk/debian/ jessie rpi2
Aufbau einer Zeile
deb uri distribution [component1] [component2] [...]
uri: file / cdrom / http / ftp / copy mit vollem Pfad zum Hauptverzeichnis des jeweiligen Mirrors
Bspw. http://ftp.debian.org/debian
distribution: stable / testing / unstable oder wheezy / jessie / sid
Bspw. jessie
component: main / contrib / non-free - Angabe mehrerer davon durch Leerzeichen getrennt möglich
Bspw. main contrib non-free
Frage: Wir wollen die Kategorien contrib und non-free zusätzlich aufnehmen, um die Firmware
installieren zu können. Wie lautet die neue erste Zeile in /etc/apt/sources.list? Trage sie ein, und
führe ein
aptitude update
durch, um die neuen Paketbeschreibungen zu laden.
Firmware installieren
Was für eine Firmware brauche ich?
lsusb
bei eingestecktem Stick, zeigt
Bus 001 Device 005: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Frage: Wie heißt das Paket, was installiert werden soll? Installiere es bitte.
Hinweis: Suche mit aptitude, siehe oben.
Nach Installation des richtigen Paketes sollte das Funknetzwerk konfigurierbar sein.
Advanced: Pinning von einem Paket
aptitude versions flash-kernel
i
p
3.33.co1+b1
3.35
Package mit niedrigerer Version installiert, sogar automatisches Downgrade bei
aptitude install flash-kernel
Durch diese neu angelegte Konfigurationsdatei: /etc/apt/preferences.d/flash-kernel
Package: flash-kernel
Pin: version 3.33.co1+b1
Pin-Priority: 1001
Pin-Priority:
-1: Paket wird nie installiert
0 - 90: Paket wird nur installiert wenn es noch nicht installiert ist
990 - 1000: Installiert ein Paket auch wenn es nicht aus dem "Target" Release stammt, außer die
bereits installierte Version ist aktueller
1001: Installiert ein Paket auch wenn dies ein Downgrade des Paktes bewirkt.
Quelle: http://debiananwenderhandbuch.de/apt-get.html
Pins ermöglichen genauen Anweisungen, woher und welche Version des Paketes installiert werden
soll.
systemd
Interessante Infos / Recherchequellen:




http://0pointer.de/blog/projects/systemd.html
http://0pointer.de/public/systemd-man/systemd.html
http://0pointer.de/public/systemd-man/systemd.unit.html
http://0pointer.de/public/systemd-man/systemd.service.html
Grundlagen
systemd wird in Debian ab Version 8 Jessie eingesetzt - es ist ein modernes init System. Es ersetzt
den sysvinit daemon.
Französisch "Système D" = "Trick 17"
Der erste Prozess den der Kernel erzeugt ist der Init Prozess. systemd (der neue Init Prozess) ist dann
für die Initialisierung und Einrichtung des Linux-Systems zuständig (es startet alle benötigten Dienste
und Programme beim Bootvorgang).
Es ist außerdem für das Herunterfahren des Systems zuständig.
Features
 Abwärtskompatibel zu SysVinit Skripten
 Mehr Parallelisierung -> bessere Auslastung beim Systemstart, weniger Verzögerungen
 journald - System-Log
Konzept
Alle Prozesse beim Boot gleichzeitig starten, Nachrichten an andere Prozesse (D-Bus / IPC-Sockets),
sowie Anfragen an Dateisysteme (autofs) werden gepuffert bis Prozess soweit ist.
Nur gelegentlich benötigte Dienste ereignisbasiert starten (wie früher inetd). z.B. SSH erst beim
ersten Aufruf starten, CUPS wenn tatsächlich ein Drucker angeschlossen wird / gedruckt wird, ...
Shell-Boot-Skripte sollen durch deklarative Konfigurationsdateien ersetzt werden.


einfacher zu schreiben
vermeiden Overhead von Shell-Skripten
Beispiel für parallelen Start von Syslog und D-Bus
D-Bus verbindet sich mit Socket /dev/log, um Status /Fehlermeldungen schreiben zu können. Sysvinit
kann den D-Bus daher erst starten, wenn der Syslog Dienst komplett gestartet ist.
systemd legt /dev/log selbst an, und startet Syslog und D-Bus gleichzeitig.
Alles was D-Bus an /dev/log schickt wird von systemd mit der Log Funktion "Journal"
zwischengespeichert.
Dienste die eine Antwort brauchen bleiben an der Stelle stehen, bis die Antwort fertig ist - dann
starten sie weiter.
Diese Puffer-Funktion kann auch genutzt werden um Dienste im Hintergrund neu zu starten - die
Kommunikation wird währenddessen zwischengepuffert.
Units
.service - Service-Units
Die "klassischen" Daemons. Systemd generiert automatisch Service-Units aus SysV Init Skripten.
Wenn eine Unit-Datei mit gleichem Namen vorhanden ist, werden die Skripte allerdings ignoriert.
.socket - Socketaktivierung
zugehöriger .service Dienst wird aktiviert wenn ein anderer Prozess Daten auf den Socket schreibt.
Beispiel: nscd.socket startet nscd.service bei ankommender Verbindung.
.device - Device in /dev
Ein Device kann mittels udev markiert werden, und in systemd als device "exponiert" werden.
.mount - Ein / Aushängen von Dateisystemen
Systemd überwacht die Mount Points, und kann auch Dateisysteme mounten / unmounten.
/etc/fstab wird als zusätzliche Konfigurationsquelle verwendet
.automount - idem, mit Automounter
hängt Dateisysteme bei erstem Zugriff automatisch ein
.target - Gruppieren von Units
Bspw. multi-user.target (entspricht Run-Level 5), oder bluetooth.target (aktiviert Bluetooth Services
sobald Bluetooth Dongle eingesteckt wird).
.timer - Aktiviere andere Units nach Timer
bspw. starte diesen Service alle 5 Stunden, oder starte diesen Service jeden Montag 5 Uhr.
.slice - Gruppiere für Resource Management
Gruppiere Units in einem hierarchischen Baum für Resource Management.
.path - überwache bestimmte Dateien / Verzeichnisse mittels Inotify.
Falls Zugriff, startet Systemd diese Unit. (Aktiviere bestimmte Services)
Beim Starten wird default.target aktiviert - z.B. ein Alias von multi-user.target
Systemd steuern: systemctl
Zeige alle Units an:
systemctl --all
Zeige nur Service Units an:
systemctl --type=service
Ausgabe:
boot-firmware.mount





loaded active mounted /boot/firmware
Name der Unit (z.B. boot-firmware.mount)
konnte die Definition geladen werden? (loaded, sonst: not-found)
Ist die Unit zum Start vorgesehen? (active, sonst: inactive)
aktueller Status (z.B. mounted, plugged, running, exited, dead, listening, ...)
Beschreibung der Unit
Statuse


exited: Prozess hat sich ohne Fehler beendet
o Beispiel: rc-local.service, der /etc/rc.local ausführt
running: Hintergrund-Dienste
o Beispiel: ssh.service - OpenBSD Secure Shell Server
Ausführlichere Infos zu einem Service anzeigen:
systemctl status ssh.service
Services aktivieren / deaktiveren, starten und stoppen
systemctl start avahi-daemon.service
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl enable avahi-daemon.service
Wie schnell war ich? Startzeit analysieren
systemd-analyze
Startup finished in 2.828s (kernel) + 7.679s (userspace) = 10.507s
Im Detail analysieren:
systemd-analyze blame
Schön grafisch aufbereitetes SVG:
systemd-analyze plot > /tmp/plot.svg
Kann z.B. mit dem Web-Browser angeschaut werden
( URL ist file:///tmp/plot.svg )
Konfig-Dateien von systemd
In den Pfaden
/etc/systemd/system (= priorisierter Pfad, wird bei Updates des
Systems NICHT überschrieben)
/lib/systemd/system
Beispiel für eine Konfigdatei
(dbus-org.freedesktop.Avahi.service):
[Unit]
Description=Avahi mDNS/DNS-SD Stack
Requires=avahi-daemon.socket
[Service]
Type=dbus
BusName=org.freedesktop.Avahi
ExecStart=/usr/sbin/avahi-daemon -s
ExecReload=/usr/sbin/avahi-daemon -r
NotifyAccess=main
[Install]
WantedBy=multi-user.target
Also=avahi-daemon.socket
Alias=dbus-org.freedesktop.Avahi.service
Trivia
Debian 9 "Stretch", Debian 10 "Buster"
Security Support - Mediawiki is only covered by security support until April 2016
Node.js - built on top of libv8-3.14, high volume of security issues - currently no volunteers within the
project or security team sufficiently interested. -> nodejs, node-* package ecosystem should not be
used with untrusted content, such as unsanitized data from the Internet. These packages will not
receive any security updates during the lifetime of the Jessie release.
If the RTC (real time clock) is set to local time and the local time is ahead of UTC, e2fsck will print a
warning during boot about the time changing backward (bug #767040). You can disable this by
putting the following lines in /etc/e2fsck.conf:
[options]
broken_system_clock=1
References
https://www.debian.org/releases/testing/armhf/release-notes/
Bitte bewertet unseren Workshop auf MeetUp und gebt uns Input zu Themen die Euch
interessieren.
Bitte tragt euch in meinem Newsletter ein (Tipps zum Raspberry Pi):
http://www.pi3g.com/newsletter