Es muss nicht immer gleich Kali Linux sein!

Kali Linux [1] und Parrot Linux [2] gelten unter den Linux Distributionen, als die erste Wahl, wenn es um Security und Penetration Testing geht. Viele einschlägige Programme sind auf diesen Distributionen bereits vorinstalliert und können sozusagen out of the Box benutzt werden.

Allerdings muss man auch sagen, dass Kali und auch Parrot, wegen ihrer Spezialisierung nicht unbedingt die alltagstauglichsten Linux Distributionen sind. Für die tägliche Nutzung sind eher Ubuntu für Einsteiger und Debian für fortgeschrittene Anwender verbreitet. Aus diesem Grund werden Kali und Parrot meist als virtuelle Maschinen mit VirtualBox oder dem VMWare Player aufgesetzt und genutzt. Ein durchaus praktikabler Ansatz, vor allem wenn es darum geht, sich erst einmal die Distribution anzuschauen, bevor man sie auf den Rechner nativ installiert.

Aus meiner Sicht ist das sogenannte Distributions-Hopping, das manche Leute unter Linux betreiben, eher hinderlich, sich an ein System zu gewöhnen, um damit effizient arbeiten zu können. Auf welches Linux die Wahl fällt, hängt vor allem vom eigenen Geschmack ab und von den Anforderungen, was man damit machen möchte. Entwickler und Systemadministratoren, werden wahrscheinlich eine Neigung zu Debian haben, einer Version, von der viele andere Distributionen abgeleitet wurden. Windowsumsteiger erfreuen sich oft an Linux Mint, und so lässt sich die Liste weiter fortsetzen.

Wer sich als Hacker fühlen möchte, entscheidet sich gern für eine Kali-Installation. Oft sind dabei Dinge wie Privatsphäre und anonymes Surfen im Internet die eigentlichen Bewegründe. Hierzu hatte ich bereits Kodachi Linux, das auf anonymes Surfen im Internet spezialisiert ist, vorgestellt. Natürlich muss man ganz klar sagen, dass es im Internet keine wirkliche anonyme Kommunikation gibt. Man kann aber die Anzahl möglicher Lauscher mit einigen leicht umzusetzenden Maßnahmen massiv reduzieren. Das Thema Privatsphäre habe ich auf diesem Blog in mehreren Artikeln zur Ansprache gebracht. Auch wenn es für viele eine unpopuläre Meinung ist. Aber eine Linux VM die über ein Apple- oder Windows-Betriebssystem zum anonymen Surfen hergenommen wird, verfehlt ihren Nutzen vollständig.

Der erste Punkt in der Rubrik „Privatsphäre“ ist der Internetbrowser. Ganz gleich, welchen man verwendet und wie sehr die verschiedenen Hersteller den Schutz der Privatsphäre hervorheben, in der Realität ist es wie in dem Märchen „Des Kaisers neue Kleider“. Den meisten Nutzern ist das Tor / Onion Netzwerk namentlich bekannt. Dahinter steckt der Torbrowser, den man einfach über die Webseite des Tor Projektes [3] herunterladen kann. Nach dem Download und dem Entpacken des Verzeichnisses lässt sich der Tor Browser über das Startscript auf der Konsole öffnen.

./Browser/start-tor-browser

Wer im Tor-Netzwerk unterwegs ist, kann URLs mit der Endung .onion besuchen. Ein großer Teil dieser Seiten ist als das sogenannte Darknet bekannt und sollte mit großer Vorsicht angesurft werden. Zu einem kann man hier auf sehr verstörende und auch illegale Inhalte stoßen, aber auch Opfer von Phishing Attacken und Ähnlichem werden. Ohne zu sehr auf die Details einzugehen, wie das Tor-Netzwerk genau funktioniert, sollte man sich durchaus im Klaren sein, dass man auch hier nicht völlig anonym unterwegs ist. Auch wenn man sich den großen Big-Tech-Firmen weitgehend entzieht, haben Behörden, vor allem wenn es um illegale Aktionen geht, durchaus Mittel und Möglichkeiten. Dazu gibt es in der einschlägigen Presse genügend Beispiele.

Wenn man nun darüber nachdenkt, wie das Internet in groben Zügen funktioniert, findet man auch schon den nächsten wichtigen Punkt: Proxy Server. Proxy Server sind sogenannte Stellvertreter, die ähnlich wie im Tor-Netzwerk die Anfragen ins Internet nicht an die Homepage direkt senden, sondern über einen fremden Server, der diese Anfrage weiterleitet und dann die Antwort zurückliefert. Ruft man zum Beispiel über einen Proxy die Internetseite von Google auf, so erscheint bei Google lediglich die IP-Adresse des Proxy Servers. Auch der eigene Provider sieht nur, dass man eine Anfrage zu einem bestimmten Server geschickt hat. Dass dieser Server dann eine Anfrage an Google stellt, sieht der Provider in den eigenen Logfiles nicht. Auf beiden Seiten, beim Provider und auf der Ziel Internetseite erscheint nur der Proxy Server. In der Regel versichern die Betreibe von Proxy Servern, dass sie selbst keine Logs mit der Original-IP ihrer Klienten speichern. Leider gibt es für diese Aussagen keine Garantie. Um hier die Wahrscheinlichkeit, erkannt zu werden, weiter zu reduzieren, kann man mehrere Proxy-Verbindungen hintereinanderschalten. Mit dem Konsolenprogramm proxychain, lässt sich dieses Vorhaben leicht umsetzen. ProxyChain ist unter Debian Distributionen schnell mit dem Paketmanager APT installiert.

sudo apt-get install proxychains4

Die Verwendung ist ebenso einfach. Über die Konfigurationsdatei /etc/proxychain.conf wird das Verhalten für proxychain festgelegt. Wenn man den Arbeitsmodus von stricht_chain auf random_chain ändert, wird bei jeder Verbindung eine andere Variation der einzelnen Proxy-Server zufällig zusammengestellt. Am Ende der Konfigurationsdatei kann man die einzelnen Proxy-Server eintragen. Dazu sind einige Beispiele in der Datei enthalten. Um proxychain zu verwenden, ruft man es einfach über die Konsole auf, gefolgt von der Anwendung (dem Browser), welche über die Proxys die Verbindung ins Internet aufbaut.

Proxychanin firefox
## RFC6890 Loopback address range
## if you enable this, you have to make sure remote_dns_subnet is not 127
## you'll need to enable it if you want to use an application that 
## connects to localhost.
# localnet 127.0.0.0/255.0.0.0
# localnet ::1/128

Die wirkliche Herausforderung ist das Finden geeigneter Proxy-Server. Für den Anfang findet man unter [4] eine große Auswahl weltweit freier Proxys.

Das alleinige Verwenden von Proxys für Verbindungen ins Internet biete nur bedingte Anonymität. Damit sich zwei Computer unterhalten, wird zwar eine IP Adresse benötigt, die über den Provider des Internetzugangs zur richtigen geografischen Adresse, wo der Computer steht, verknüpft werden kann. Über die Netzwerkkarte wird allerdings noch eine weitere Information ins Netz gesendet. Die sogenannte MAC Adresse, mit der man einen Computer direkt identifizieren kann. Da man nicht bei jedem Neustart des Computers eine neue Netzwerkkarte einbauen muss, um eine andere MAC-Adresse zu bekommen, kann man ein kleines, einfaches Tool namens macchanger nutzen. Dies ist wie proxychain ebenfalls problemlos über APT zu installieren. Nach der Installation kann man den Autostart festlegen und man muss sich entscheiden, ob immer dieselbe MAC Adresse oder jedes Mal eine zufällig neu generierte MAC Adresse verwendet werden soll.

Die bisher vorgestellten Maßnahmen nützen natürlich nur dann etwas, wenn die Verbindung ins Internet auch verschlüsselt ist. Das geschieht über die sogenannten Secure Socket Layer (SSL). Wenn man sich nicht über einen VPN mit dem Internet verbindet und die aufgerufenen Webseiten anstatt von https nur http verwenden, kann man mit einem beliebigen Paketsniffer (z. B. dem Programm Wireshark) die Kommunikation mitschneiden und den Inhalt der Kommunikation im Klartext lesen. Auf diese Weise werden in öffentlichen Netzwerken (WiFi) Passwörter oder vertrauliche Nachrichten ausgespäht. Wir können sehr sicher davon ausgehen, dass Internetprovider sämtliche Kommunikation ihrer Kunden über sogenannte Paketfilter laufen lassen, um verdächtige Aktionen zu erkennen. Bei https Verbindungen können diese Filter nicht in die Pakete hineinschauen.

Nun könnte man auf die Idee kommen, mit all den bisher beschriebenen Maßnahmen sich illegal in ein fremdes Netzwerk zu verbinden. Schließlich weiß dann keiner, dass man da ist, und alle Aktivitäten im Internet werden dem Anschlussinhaber zugeordnet. Aus diesem Grund möchte ich ausdrücklich darauf hinweisen, dass in so ziemlich allen Ländern solche Aktionen strafbar sind und man, wenn man dabei erwischt wird, schnell im Gefängnis landen kann. Wer mehr über das Thema WiFi Sicherheit erfahren möchte, um das eigene Netzwerk vor illegalem Zugriff zu schützen, findet im Mitgliederbereich (Subscription) einen ausführlichen Workshop zu Aircrack-ng.

Der nächste Punkt auf der Liste zum Thema Privatsphäre ist E-Mail. Für die meisten Menschen ist es einfach nicht möglich, dass sie ihren eigenen E-Mail Server betreiben. Der Aufwand ist enorm und auch nicht ganz kostengünstig. Deswegen werden Angebote von Google, Microsoft und Co. einen E-Mail-Dienst bereitzustellen, gern angenommen. Wer diesen Dienst nicht über einen lokalen Client nutzt und die verschickten E-Mails nicht kryptografisch verschlüsselt, kann sich sicher sein, dass die Mail Anbieter die Mails scannen und mitlesen. Außnahmslos! Da die Konfiguration eines Mail Clients mit funktionierender Verschlüsselung eher ein Geek Thema ist, genauso wie das Betreiben eines eigenen Mailservers, sind hier die Optionen sehr eingeschränkt. Einzige Lösung ist der Schweizer Anbieter Proton [5], der auch kostenfreie Mail-Accounts bereitstellt. Proton wirbt mit dem Schutz der Privatsphäre ihrer Kunden und setzt diesen durch strikte Verschlüsselung um. Ob man dennoch vertrauliche Nachrichten per E-Mail verschicken sollte, muss jeder für sich selbst klären. Das gilt natürlich auch für die verfügbaren Messenger, die mittlerweile sehr viel für Telefonie genutzt werden.

Viele Menschen haben sich einmal selbst gegoogelt, um zu erfahren, welche digitalen Spuren sie im Internet bisher hinterlassen haben. Dies kratzt natürlich nur an der Oberfläche, denn die Leute im Personalwesen von größeren Firmen und Konzernen nutzen effektivere Wege. Ein sehr professionelles Werkzeug ist Matego, aber auch im Open Source Bereich findet sich ein mächtiges Tool, das so einige Sachen zutage fördern kann. Auch hierzu gibt es für Subscriber einen entsprechenden Workshop. Denn wenn man seine Spuren findet, kann man sich auch daran machen, sie zu verwischen.

Wie man sehen kann, ist das Thema Privatsphäre und Anonymität sehr umfangreich und mit diesem kleinen Artikel auch nur oberflächlich behandelt. Dennoch ist die Informationstiefe ausreichend, um einen ersten Eindruck des Sachverhalts zu bekommen. Es reicht bei weitem nicht aus, sich ein System wie Kali aufzusetzen, wenn man die Grundlagen nicht kennt, um die Werkzeuge auch korrekt einzusetzen. Denn wenn man die verschiedenen Puzzelteile nicht akkurat zusammensetzt, bleibt die erhoffte Wirkung, sich durch Anonymität mehr Privatsphäre im Internet zu verschaffen. Dieser Artikel erklärt auch auf technischer Ebene meinen persönlichen Standpunkt, wieso es keine sichere, anonyme elektronische Kommunikation gibt. Wer sich in das Thema einarbeiten möchte, erzielt mit einer sinnvollen Strategie und dem stückweise erweiterten eigenen System schneller Erfolge, als mit einem bereits vorgefertigten Allround Werkzeug wie Kali Linux.

Ressourcen

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Altersverifikation durch systemd in Linux-Distributionen

Seit 2025 haben einige Länder bereits eine Altersverifikation für die Nutzung von Social Media und generell auch für das Internet eingeführt. Vorreiter dieser Welle sind Australien und das Vereinigte Königreich. Aber auch einige Bundesstaaten in den USA sind bereits auf den Zug aufgesprungen. In der EU soll die Altersverifikation bis 2027 ausgerollt werden. Italien und Frankreich haben bereits entsprechende Gesetze verabschiedet. Die neue Regierung, die in Deutschland seit Beginn 2025 die Geschicke der Bürger leitet, ist ebenfalls für die Bevormundung der Bürger. Das demonstrierten die Machthaber durch einen Passus im Koalitionsvertrag, der die flächendeckende Einführung der eID in Deutschland vorsieht. In diesem Artikel zeige ich gesellschaftliche und technische Aspekte auf, die über kurz oder lang auf uns Bürger zukommen werden.

Unter dem Deckmantel des Jugendschutzes soll Kindern und Jugendlichen unter 16 Jahren der Zugriff auf gefährdende Inhalte wie Pornografie verwehrt werden. Aber auch soziale Medien wie Facebook, X und andere Plattformen werden von den Maßnahmen betroffen sein. Bereits jetzt werden verschiedene Inhalte auf YouTube nur angemeldeten Nutzern zugänglich gemacht.

Würde man sich wirklich um das Wohl der Kinder kümmern, würde man sich darauf konzentrieren, sie bei der Ausbildung einer stabilen und gesunden Persönlichkeit zu fördern. Das beginnt bereits bei einem ausgewogenen, gesunden Schulessen, welches für jeden Schüler zu einem leistbaren Betrag zur Verfügung stehen sollte. Aber auch bereits im Schulunterricht Medienkompetenz zu vermitteln, wäre ein Schritt in die richtige Richtung. Das sind nur kurze Beispiele, die aufzeigen, dass die Begründung zur Einführung einer Altersverifikation Augenwischerei ist und grundsätzlich andere Ziele verfolgt werden.

Es geht um die Bevormundung und Kontrolle eines jeden einzelnen Bürgers. Es ist ein Verstoß gegen das Selbstbestimmungsrecht. Denn eins muss allen klar sein: Damit man weiß, dass eine Person das entsprechende Alter für restriktive Inhalte auch tatsächlich hat, müssen sich alle Menschen, die den eingeschränkten Inhalt betrachten möchten, ausweisen. Diesen Nachweis wird man ausschließlich mit der eID erbringen können. Sobald eine kritische Masse erreicht ist, die ihre eID nutzt, wird dies zum Standard für Bezahlung und alle möglichen anderen Dinge. Es klingt ein wenig prophetisch, wenn man die Offenbarung des Johannes aus dem Neuen Testament kennt.

Das zweite Tier brachte alle dazu – ob groß oder klein, reich oder arm, ob Herr oder Sklave –, auf der rechten Hand oder der Stirn ein Zeichen zu tragen. Ohne dieses Zeichen konnte niemand etwas kaufen oder verkaufen.  Offenbarung 13:16

Es ist also abzusehen, dass die Verweigerung des Einzelnen, die eID anzunehmen, ihn vollständig aus der digitalen Welt verbannen wird. Parallel dazu werden Möglichkeiten verschwinden, die im richtigen Leben, dem sogenannten analogen Raum, Alternativen bilden. Ich möchte aber an dieser Stelle nicht zu prophetisch werden. Es kann sich jeder für sich selbst ausmalen, welche Konsequenzen die Einführung der digitalen ID für das eigene Leben haben wird. Ich werde nun ein wenig auf technische Details eingehen und Denkanstöße zur bürgerlichen Notwehr anregen. Denn ich bin mir sehr sicher, dass eine breite Akzeptanz der eID vorhanden ist. Auch wenn die konkreten Gründe variieren, lassen sie sich auf den persönlichen Komfort und die Bequemlichkeit reduzieren. Wer ab hier weiterliest, ist in der absoluten Selbstverantwortung, Dinge eigenständig umzusetzen und sich das notwendige Wissen anzueignen. Es wird keine schnelle, einfache Lösung von der Stange geben. Mann muss aber auch kein Nerd sein. Der Wille zum eigenständigen Denken genügt völlig, um die technischen Zusammenhänge schnell zu verstehen. Es ist wie man so sagt: keine Raketentechnologie.

Leute, die auf Apple- oder Microsoft Produkte setzen, haben keine andere Möglichkeit, als zu freien Betriebssystemen zu wechseln. Smartphones haben überhaupt keine alltagstaugliche Alternative zu den Banking-Apps und Messengern. Es hat schon einen Grund, wieso man sich für Telegram und Signal Messenger mit einer funktionierenden Telefonnummer anmelden muss. Denn die Chats werden vom Telefon auf die Desktop Anwendung synchronisiert. Also bleibt der Computer, der im Idealfall nicht neuer als von 2020 sein sollte. Hierzu habe ich bereits einen Artikel veröffentlicht.

Sämtliche Linux-Distributionen funktionieren problemlos auf alter und auch auf leistungsschwacher Hardware. Ein Wechsel zu Linux ist mittlerweile auch leicht zu bewältigen und in wenigen Wochen ist man auch an das neue System gewöhnt. Soweit bisher die Theorie.

Seit Kalenderwoche 13 im Jahr 2026 geht allerdings ein Aufschrei von der Linux Community durch alle sozialen Medien. Das Programm systemd hatte einen Commit in das öffentliche Quellcode Repository, das ein Feld Geburtstag zur Altersverifikation hinzugefügt worden. Wer nun denkt, na gut, bloß ein Programm, dann lasse ich das weg, muss wissen, dass systemd für System Deamon steht. Es ist neben dem Kernel eines der wichtigsten Programme in einer Linux-Distribution. Es ist unter anderem dafür verantwortlich, dass beim Einschalten des Rechners notwendige Dienste und Programme gestartet werden.

Dieser Datensatz enthält bereits grundlegende Benutzermetadaten wie Name, E-Mail-Adresse und Standort. Das Feld speichert ein vollständiges Datum im Format JJJJ-MM-TT und kann nur von Administratoren, nicht von Benutzern selbst, festgelegt werden.

Lennart Poettering, der Entwickler von systemd, hat klargestellt, dass diese Änderung Folgendes betrifft:

» Es handelt sich um ein optionales Feld im JSON-Objekt userdb. Es ist weder eine Richtlinien-Engine noch eine API für Anwendungen. Wir definieren das Feld lediglich, um es zu standardisieren, falls Benutzer das Datum dort speichern möchten. Die Verwendung ist jedoch völlig optional. «

Quelle: It’s FOSS

Diese ganzen Ereignisse werfen auch ein neues Licht auf das Treffen von Linus Torvalds und Bill Gates am 22 Juni 2025, die sich nach 30 Jahren erstmalig persönlich begegnet sind. Es ist ein absolutes No Go in der Linux Community, den Nutzer des Rechners zu bevormunden und in dessen Privatsphäre einzugreifen. Und es gibt starke Stimmen, die sich gegen das Vorhaben von systemd stemmen. Man kann aber nicht absehen, wie stark die Gegenwehr aufrechterhalten bleibt, wenn staatlicher Druck auf die standhaften Revoluzzer ausgeübt wird.

Der erste Ansatz als Lösung dieses Problems ist die Verwendung einer Linux-Distribution, die kein systemd verwendet. Bekanntere Distributionen, die ohne systemd auskommen, sind Gentoo, Slackware und Alpine Linux. Wer wie ich und viele andere ein reines Debian verwenden, kann einmal einen Blick auf Devuan (Version für 3/2026 ist 6.1 Excalibur) werfen, welches von aktuellen Debian Versionen einen Fork erstellt hat, der ohne systemd auskommt.

Man muss auch erwähnen, dass systemd bei Hardcore Linuxern durchaus schon immer kritisch gesehen wird. Es gilt einfach als zu aufgebläht. Wer bereits seine Distribution schon länger laufen hat, hadert oft damit, diese einfach zu wechseln. Linux ist wie ein guter Wein. Es reift mit der Zeit und Neuinstallationen werden unter Powerusern als unnötig angesehen, da sich einfach alles wieder reparieren lässt. Auch Migrationen auf neuere Majorversionen verlaufen in aller Regel problemlos. Daher ist es auch kein Problem, systemd gegen das leichtgewichtigere SysVinit auszutauschen. Die einzige Voraussetzung dafür ist, dass man keine Angst vor der Linux Bash hat. Allerdings sind auch hier Grenzen gesetzt. Wer den Gnome3 Desktop verwendet, sollte zuerst den Desktop zu einer Variante wechseln, die nicht auf systemd aufbaut. Devuan Linux zeigt uns hier die Alternativen: KDE Plasma, Mate (Gnome2 Fork), Cinnamon (für Windowsumsteiger) oder das rudimentäre Xfce. Bevor man loslegt, sollte man aus Sicherheitsgründen mindestens seine Daten sichern und nach Möglichkeit auch die Festplatte clonen, um bei Problemen den Urzustand wiederherzustellen.

Da ich aufgrund der Aktualität des Themas noch keine Zeit gefunden habe, das Tutorial selbst auszuprobieren, verweise ich auf die englischsprachige Homepage linuxconfig.org mit der Anleitung in Debian systemd mit sysVinit zu ersetzen.

Ein riesengroßer Vorteil von Linux ist, dass man als Nutzer die volle Kontrolle über die Aktualisierungen hat. Es ist nicht so wie bei Microsoft Windows, dass man zum Update gezwungen wird, und wenn man es nicht durchführt, indem man etwa das Internet ausschaltet, verweigert der Rechner nach einer Weile den Start, bis das Update durchgeführt wurde. Auch wenn man unter Linux in aller Regel bestimmen kann, welche Updates man haben möchte, gibt es keinen Grarant, dass zumindest bei einem künftigen MajorUpdate nicht doch die Altersverifikation über die Hintertür untergeschoben wird. Es ist durchaus möglich, dass diese Technologie bereits als Schläfer im System enthalten ist und nur aktiviert werden muss. Seit einigen Jahren habe ich die Angewohnheit, alle Installationsdateien von Programmen, die ich benutze, zu archivieren, sodass ich problemlos noch ein Ubuntu Mate von 2017 aus dem Hut zaubern kann. Anwendungen nutze ich gern als AppImage. Aber auch die reinen Installationspakete, unter Debian sind das die deb Dateien, bevorzuge ich gegenüber den Varianten aus dem Paketmanager. Denn manchmal brauche ich eine alte Variante oder eine sehr neue Version, die nicht in den Distributionspaketen enthalten ist. Auf diese Weise lässt sich auch ein in die Tage gekommenes System noch aktuell und sicher halten.

Vermutlich ist es wie so oft. Keine Suppe wird so heiß gegessen, wie sie serviert wird. Ich denke weniger, dass der Zwang zur digitalen ID über Nacht kommen wird. Vermutlich wird es ein schleichender Prozess, der den Menschen, die sich der totalen Kontrolle durch autoritäre Instanzen entziehen, das Leben schwer macht. Es wird sich durchaus für entschlossene Menschen immer ein Weg finden. Dazu muss man allerdings selbst aktiv werden und nicht passiv auf den großen Erlöser warten. Der war schon da, vor sehr langer Zeit.

Performante Hardware unter Linux für lokale KI Anwendungen

Wer ein wenig mit lokalen LLM herumspielen möchte, findet rasch die Limitationen heraus. Nicht jeder hat einen massiv aufgerüsteten Desktop Rechner mit 2 TB Arbeitsspeicher und eine CPU, auf der man unter Volllast Spiegeleier braten kann. Eher typisch ist ein Laptop mit 32 GB RAM oder wie bei mir, ein Lenovo P14s mit 64 GB RAM. Trotz dieser üppigen Ausstattung scheitert es oft daran, ein etwas umfangreicheres KI Modell zu laden, denn 128 GB RAM sind für viele dieser Modelle eher Standard. Nun kann man bei aktuellen Laptops auch keinen Arbeitsspeicher nachrüsten, weil die Chips direkt auf der Platine verlötet sind. Das gleiche Problem haben wir natürlich auch mit der Grafikkarte. Deswegen habe ich mir beim Laptopkauf angewöhnt, nahezu die Maximalausstattung zu konfigurieren, und hoffe dann, damit 5–8 Jahre lang meine Ruhe zu haben. Gerade die Qualität der Lenovo ThinkPad Serie hat mich bisher bei diesem Vorhaben nicht enttäuscht. Mein aktuelles System ist circa 2 Jahre alt und läuft so weit zuverlässig.

Als Betriebssystem nutze ich seit Jahren Linux und aktuell habe ich Debian 13 am Laufen. Im Vergleich zu Windows sind Linux- und Unix-Distributionen wesentlich ressourcenschonender und nutzen die Leistung nicht für grafische Animationen und komplexe Farbverläufe, sondern ermöglichen eine leistungsstarke Umgebung für die verwendeten Anwendungen. Daher auch mein dringender Rat, für alle, die lokale LLMs probieren möchten: sich einen leistungsstarken Rechner zu besorgen und diesen mit Linux zu betreiben. Aber der Reihe nach. Schauen wir uns zuerst die einzelnen Hardwarekomponenten etwas genauer an.

Beginnen wir mit der CPU. Für LLMs, CAD Anwendungen und auch Computerspiele gilt, dass diese Berechnungen durchführen, die hervorragend parallel verarbeitet werden können. Bei parallel ausgeführten Berechnungen ist die Anzahl der verfügbaren CPU‑Kerne ein wichtiges Kriterium. Je mehr Kerne, umso mehr parallele Berechnungen können ausgeführt werden.

Natürlich müssen die Prozessoren die Daten für die Berechnung schnell anfragen können. Hier kommt der Arbeitsspeicher (RAM) ins Spiel. Je mehr Arbeitsspeicher vorhanden ist, umso effizienter können die Daten zur Berechnung bereitgestellt werden. Bezahlbare Laptops kann ma bereits mit 32 GB RAM finden. Natürlich steigt der Anschaffungspreis mit mehr RAM exponentiell. Sicher gibt es einige hochgezüchtete Gamer-Geräte im Consumerbereich, die ich allerdings wegen der meist kurzen Lebensdauer und dem dazu vergleichsweise hohen Preis eher nicht empfehlen kann.

Der nächste logische Schritt in der Hardwarekette ist die Festplatte. Einfache SSDs beschleunigen den Transfer zum Arbeitsspeicher enorm, aber es gibt noch Steigerungen. NVMe Karten ab 2 GB Speicherkapazität können in der 4. Generation bis zu 7000 MB/s erreichen.

Bei der Grafikkarte haben wir bei Laptops so unsere Probleme. Aufgrund der Größe und der benötigten Leistung , sind die in Laptops verbauten Grafikkarten eher ein Kompromiss, als ein wirkliches Highlight. Dabei wäre eine gute Grafikkarte ideal für parallele Berechnungen, wie sie bei LLMs durchgeführt werden. Als Lösung können wir den Laptop mit einer externen Grafikkarte verbinden. Dank der Bitcoin Miner aus der Krypto Community wurde hier bereits einiges an Erfahrung gesammelt. Damit man allerdings eine externe Grafikkarte an den Laptop anschließen kann, muss man auch einen Anschluss haben, der diese Datenmenge verarbeiten kann. USB 3 ist für unser Vorhaben viel zu langsam und würde den Vorteil der externen Grafikkarte durch die geringe Datenrate massiv ausbremsen.

Die Lösung für unser Problem lautet Thunderbolt. Äußerlich sehen Thunderbolt-Anschlüsse wie USB-C aus, sind aber um einiges schneller. Thunderbolt erkennt man an dem kleinen Blitz (siehe Abbildung 1) auf den Kabeln, beziehungsweise an den Buchsen. Es sind also nicht die Anschlüsse für die Stromversorgung. Um sicherzustellen, ob man auf dem Computer Thunderbolt zur Verfügung hat, kann man dies mit einem kleinen Linux Shell Befehl nachprüfen.

ed@local: $ lspci | grep -i thunderbolt
00:07.0 PCI bridge: Intel Corporation Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0
00:07.2 PCI bridge: Intel Corporation Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2
00:0d.0 USB controller: Intel Corporation Raptor Lake-P Thunderbolt 4 USB Controller
00:0d.2 USB controller: Intel Corporation Raptor Lake-P Thunderbolt 4 NHI #0
00:0d.3 USB controller: Intel Corporation Raptor Lake-P Thunderbolt 4 NHI #1

In meinem Fall zeigt mir die Ausgabe meines Computers, dass zwei Thunderbolt Anschlüsse in der Version 4 vorhanden sind.

Um nun eine externe Grafikkarte anzuschließen, benötigen wir ein Trägersystem, auf das eine PCI Karte gesteckt werden kann. Hier bietet die Firma ANQUORA mit dem ANQ-L33 eGPU Enclosure eine gute Lösung. Das Board kann eine Grafikkarte mit bis zu drei Slots aufnehmen. Der Kostenpunkt liegt zwischen 130 und 200 Euro. Hinzu kommt noch ein Standard ATX Netzteil, das für die Stromversorgung benötigt wird. Die Leistung des Netzteils ergibt sich aus dem Stromverbrauch der Grafikkarte. Das Netzteil sollte man auch nicht zu günstig einkaufen, da die Geräuschentwicklung den ein oder anderen stören könnte. Die offene Bauform des Boards gibt genügend Freiheiten bei der Auswahl der Grafikkarte.

Die Auswahl der Grafikkarte wiederum ist ein ganz eigenes Thema. Da ich als Betriebssystem Linux verwende, benötige ich auch eine Grafikkarte, die von Linux unterstützt wird. Für die Beschleunigung von LLMs benötigt man eine Grafikkarte mit möglichst vielen GPU Kernen und entsprechend hohem internen Arbeitspeicher. Damit sich die Anschaffung auch lohnt und man wirklich einen Leistungsschub bemerkt, sollte die Karte mit mindestens 8 GB RAM ausgestattet sein. Mehr darf natürlich immer sein, nur steigt dann auch der Preis der Karte schnell exorbitant an. Hier lohnt sich durchaus auch ein Blick in den Gebrauchtmarkt.

Rechnet man alle Kosten zusammen, beläuft sich die Investition für eine externe GPU auf mindestens 500 Euro. Natürlich ist hier nur eine preiswerte Grafikkarte mit berücksichtigt. Hochwertige Grafikkarten können allein bereits problemlos die 500 Euro Priesbremse überschreiten. Wer im Bereich Grafikkarten gern seine Expertise beisteuern möchte, ist gern eingeladen, einen Artikel beizusteuern.

Damit man nun seine Einkaufstour nicht auf Blaue beginnt und dann über das Ergebnis enttäuscht ist, ist es sehr ratsam, sich vorher zu überlegen, was man mit der lokalen LLM machen möchte. Zur Unterstützung bei der Programmierung benötigt man weniger Rechenpower als für die Generierung von Grafiken und Audio. Wer LLMs professionell nutzt, kann durch die Anschaffung einer sehr hochpreisigen Grafikkarte durch selbst gehostete Modelle im Vergleich zu den Kosten für beispielsweise Claud Code erheblich einsparen. Die Spezifikation von LLMs richtet sich nach den verfügbaren Parametern. Hier gilt: Je mehr Parameter, umso genauer ist die Antwort und umso mehr Rechenleistung wird benötigt. Bei der Genauigkeit unterscheidet man zudem:

  • FP32 (Single-Precision Floating Point): Standardgenauigkeit, benötigt den meisten Speicherplatz. (z.B. 32 Bit pro Parameter)
  • FP16 (Half-Precision Floating Point): Halbe Genauigkeit, halbiert den Speicherbedarf im Vergleich zu FP32, kann aber die Genauigkeit leicht reduzieren. (z.B. 16 Bit pro Parameter / 4Byte)
  • BF16 (Brain Floating Point): Eine weitere Option für halbgenaue Berechnungen, oft bevorzugt in Deep Learning aufgrund seiner besseren Leistung bei bestimmten Operationen. (z.B. 16 Bit pro Parameter / 2 Byte)
  • INT8/INT4 (Integer Quantization): Noch geringere Präzision, reduziert den Speicherbedarf drastisch und beschleunigt die Inferenz, kann aber zu einem größeren Genauigkeitsverlust führen. (z.B. 8 Bit pro Parameter / 1 Byte).

Weitere Einflüsse auf die Hardwareanforderungen für LLM haben die Punkte:

  • Batch Size: Die Anzahl der Eingabeanfragen, die gleichzeitig verarbeitet werden.
  • Kontextlänge (Context Length): Die maximale Länge des Textes, den das Modell bei einer Anfrage berücksichtigen kann. Längere Kontextlängen benötigen mehr Speicherplatz, da der gesamte Kontext im Speicher gehalten werden muss.
  • Modellarchitektur: Verschiedene Architekturen haben unterschiedliche Speicheranforderungen.

Um abzuschätzen, wie hoch der Speicherverbrauch eines Modells wird, kann man folgende Berechnung heranziehen: Parameter * Genauigkeit = Speicherverbrauch für das Modell.

7.000.000.000 Parameter * 2 Bytes/Parameter (BF16) = 14.000.000.000 Bytes = 14 GB

Bei den Hardwareempfehlungen sollte man auf die Dokumentation des Modells Rücksicht nehmen. Diese geben meist nur die minimalen beziehungsweise durchschnittlichen Anforderungen an. Es gibt allerdings allgemeine Richtwerte, an dene man sich orientieren kann.

  • Kleine Modelle (bis 7 Milliarden Parameter): Eine GPU mit mindestens 8 GB VRAM sollte ausreichen, besonders wenn Sie Quantisierung verwenden.
  • Mittlere Modelle (7-30 Milliarden Parameter): Eine GPU mit 16 GB bis 24 GB VRAM ist empfehlenswert.
  • Große Modelle (über 30 Milliarden Parameter): Mehrere GPUs mit jeweils mindestens 24 GB VRAM oder eine GPU mit sehr viel VRAM (z.B. 48 GB, 80 GB) sind erforderlich.
  • CPU-only: Für kleine Modelle und einfache Experimente kann die CPU ausreichend sein, aber die Inferenz wird deutlich langsamer sein als auf einer GPU. Hier ist ein großer RAM-Bedarf wichtig (mehrere GB / 32+).

Wir sehen, dass die Nutzung lokal laufender LLMs durchaus realistisch sein kann, wenn man die entscheidende Hardware vorrätig hat. Es muss nicht immer gleich ein Supercomputer sein, dennoch sind die meisten Lösungen bei den üblichen Elektronikkaufhausketten von der Stange und nicht wirklich geeignet. Somit habe ich mit diesem Artikel die Grundlagen für eigene Experimente gelegt.


Frühjahrsputz für Docker

Wer sich für diesen, eigentlich etwas spezialisierten Artikel interessiert, dem muss man nicht mehr erklären, was Docker ist und wofür das Virtualisierungswerkzeug eingesetzt wird. Daher richtet sich dieser Artikel vornehmlich an Systemadministratoren, DevOps und Cloud-Entwickler. Für alle, die bisher nicht ganz so fit mit der Technologie sind, empfehle ich unseren Docker Kurs: From Zero to Hero.

In einem Szenario, in dem wir regelmäßig neue Docker Images erstellen und verschiedene Container instanzieren, wird unsere Festplatte ordentlich gefordert. Images können je nach Komplexität durchaus problemlos einige hundert Megabyte bis Gigabyte erreichen. Damit das Erstellen neuer Images auch nicht gefühlt, wie ein Download einer drei Minuten langen MP3 mit einem 56k Modem dauert, nutzt Docker einen Build-Cache. Ist im Dockerfile wiederum ein Fehler, kann dieser Build-Cache recht lästig werden. Daher ist es eine gute Idee, den Build-Cache durchaus regelmäßig zu entleeren. Aber auch alte Containerinstanzen, die nicht mehr in Verwendung sind können zu komischen Fehlern führen. Wie hält man seine Dockerumgebung also stubenrein?

Sicher kommt man mit mit docker rm <container-nane> und docker rmi <image-id> schon recht weit. In Buildumgebungen wie Jenkins oder Serverclustern kann diese Strategie allerdings zu einer zeitintensiven und mühsamen Beschäftigung werden. Doch verschaffen wir uns zuerst einmal einen Überblick über die Gesamtsituation. Hier hilft uns der Befehl docker system df weiter.

root:/home# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          15        9         5.07GB    2.626GB (51%)
Containers      9         7         11.05MB   5.683MB (51%)
Local Volumes   226       7         6.258GB   6.129GB (97%)
Build Cache     0         0         0B        0B

Bevor ich gleich in die Details eintauche, noch ein wichtiger Hinweis. Die vorgestellten Befehle sind sehr effizient und löschen unwiderruflich die entsprechenden Bereiche. Daher wendet diese Befehle erst auf einer Übungsumgebung an, bevor ihr damit Produktivsysteme außer Gefecht setzt. Zudem hat es sich für mich bewährt, auch die Befehle zur Instanzierung von Containern in deiner Textdatei unter Versionsverwaltung zu stellen.

Der naheliegendste Schritt bei einem Docker System Cleanup ist das Löschen der nichtbenutzten Container. Im Konkreten bedeute das, dass durch den Löschbefehl alle Instanzen der Docker Container, die nicht laufen (also nicht aktiv sind), unwiederbringlich gelöscht werden. Will man auf einem Jenkins Buildnode vor einem Deployment Tabula Rasa durchführen, kann man zuvor alle auf der Maschine laufenden Container mit einem Befehl beenden.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Der Parameter -f unterdrückt die Nachfrage, ob man diese Aktion wirklich durchführen möchte. Also die ideale Option für automatisierte Skripte. Durch das Löschen der Container erhalten wir vergleichsweise wenig Festplattenplatz zurück. Die Hauptlast findet sich bei den heruntergeladenen Images. Diese lassen sich ebenfalls mit nur einem Befehl entfernen. Damit Images allerdings gelöscht werden können, muss vorher sichergestellt sein, dass diese nicht durch Container (auch inaktive) in Verwendung sind. Das Entfernen ungenutzter Container hat noch einen ganz anderen praktischen Vorteil. Denn beispielsweise durch Container blockierte Ports werden so wieder freigegeben. Schließlich lässt sich ein Port einer Hostumgebung nur exakt einmal an einen Container binden. Das kann stellenweise schnell zu Fehlermeldungen führen. Also erweitern wir unser Skript um den Eintrag, alle nicht durch Container benutzten Docker Images ebenfalls zu löschen.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Eine weitere Konsequenz unserer Bemühungen umfasst die Docker Layers. Hier sollte man aus Performancegründen, besonders in CI Umgebungen Abstand nehmen. Docker Volumes hingegen sind hier weniger problematisch. Beim Entfernen der Volumes, werden nur die Referenzen in Docker entfernt. Die in die Container verlinkten Ordner und Dateien bleiben von der Löschung unberührt. Der Parameter -a löscht alle Docker Volumes.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Ein weiterer Bereich, der von unseren Aufräumarbeiten betroffen ist, ist der Build-Cache. Besonders wenn man gerade ein wenig mit dem Erstellen neuer Dockerfiles experimentiert, kann es durchaus sehr nützlich sein, den Cache hin und wieder manuell zu löschen. Diese Maßnahme verhindert, dass sich falsch erstellte Layer in den Builds erhalten und es später im instanziierten Container zu ungewöhnlichen Fehlern kommt. Der entsprechende Befehl lautet:

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Ganz radikal ist die Möglichkeit, alle nicht genutzten Ressourcen wieder freizugeben. Hierfür gibt es ebenfalls ein explizites Kommando für die Shell.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Wir können die gerade vorgestellten Befehle natürlich auch für CI Buildumgebungen wie Jenkins oder GitLab CI nutzen. Allerdings kann es sein, dass dies nicht unbedingt zum gewünschten Ziel führt. Ein bewährter Ansatz für Continuous Integration / Continuous Deployment ist das Aufsetzen einer eigenen Docker-Registry, wohin man selbst erstellte Images deployen kann. Diese Vorgehensweise, ist ein gutes Backup & Chaching System für die genutzten Docker Images. Einmal korrekt erstellte Images lassen sich so bequem über das lokale Netzwerk auf die verschiedenen Serverinstanzen deployen, ohne dass diese ständig lokal neu erstellt werden müssen. Daraus ergibt sich als bewährter Ansatz ein eigens für Docker Images / Container optimierter Buildnode, um die erstellten Images vor der Verwendung optimal zu testen. Auch auf Cloudinstanzen wie Azure und der AWS sollte man auf eine gute Performanz und ressourcenschonendes Arbeiten Wert legen. Schnell können die anfallenden Kosten explodieren und ein stabiles Projekt in massive Schieflage bringen.

In diesem Artikel konnten wir sehen, dass tiefe Kenntnisse der eingesetzten Werkzeuge einige Möglichkeiten zur Kostenersparnis erlauben. Gerade das Motto „Wir machen, weil wir es können“, ist im kommerzeillen Umfeld weniger hilfreich und kann schnell zur teuren Resourcenverschwendung ausarten.


Privatsphäre

Immer wieder begegne ich Aussagen wie, „Ich nutze Apple wegen des Datenschutzes.“ oder „Unter Linux gibt es keine Viren.“ und so weiter und so fort. Im richtigen Leben schmunzle ich dann in mich hinein und verkneife mir eine Antwort. Diese Menschen sind meist Jünger einer bestimmten Marke, die sie abgöttisch anbeten und sogar mit ihrem Leben verteidigen würden. Daher spare ich meine Energie für sinnvolleres auf, wie zum Beispiel diesen Artikel hier zu verfassen.

Mein Bestreben, ist, möglichst wenig technische Details beziehungsweise auch wenig Fachsprache zu verwenden, damit auch die Menschen ohne entsprechenden Hintergrund Zugang zu diesem Thema finden. Sicher mag der ein oder andere Skeptiker nach Beweisen meiner Aussagen rufen, die meine Behauptungen zu belegen. Diesen Personen sei gesagt, dass es für die einzelnen Aussagen genügend Stichworte gibt, mit denen man sich selbst auf die Suche machen kann, und entsprechend genügend Primärquellen findet, die abseits von KI und Wikipedia existieren.

Wenn man darüber sinniert, was Freiheit eigentlich bedeutet, stößt man oft auf Aussagen wie: „Freiheit ist, das zu tun, worauf man Lust hat, ohne dabei die Freiheit anderer Menschen zu beeinträchtigen.“ Diese Definition beinhaltet auch, die Tatsache, dass vertrauliche Aussagen auch vertraulich bleiben. Hier gibt es allerdings schon Bestrebungen, lange vor der Verfügbarkeit von elektronischen Geräten zur Kommunikation. Nicht umsonst gibt es eine jahrtausendealte Kunst namens Kryptografie, mit der Nachrichten, die auf unsicheren Wegen übermittelt werden, für Uneingeweihte unverständlich bleiben. Dass die Begehrlichkeiten, die Gedanken anderer Menschen zu erfahren, sehr alt sind, besagt auch der Spruch, dass die beiden ältesten Gewerbe der Menschheit die käufliche Liebe und die Spionage sind. Daher kann man sich die Frage stellen: Wieso sollte dies nun im Zeitalter der Kommunikation anders sein?

Besonders unbedachte Zeitgenossen begegnen dem Thema mit der Einstellung, sie hätten ohnehin nichts zu verbergen, wozu sollten sie dann auf die eigene Privatsphäre bedacht sein? Ich persönlich gehöre zu der Gruppe Menschen, die diese Einstellung für sehr gefährlich halten, da sie machthungrigen Gruppierungen Tür und Tor für den Missbrauch öffnet. Jeder Mensch hat Bereiche in seinem Leben, die er nicht in die Öffentlichkeit gezerrt bekommen möchte. Hier kann es sich um spezielle sexuelle Vorlieben handeln, Untreue dem Partner gegenüber oder eine Vorliebe für das Glücksspiel, also Dinge, die eine perfekte Fassade von moralischer Integrität schnell bröckeln lässt.

In der DDR glaubten viele Menschen, das sie selbst zu unbedeutend waren, als dass der berüchtigte Inlandsgeheimdienst STASI an ihnen Interesse haben könnte. Wie sehr sie mit ihrer Einschätzung danebenlagen, zeigte die Öffnung der STASI‑Unterlagen nach der deutschen Wiedervereinigung. In diesem Zusammenhang möchte ich nur auf die gültige Gesetzeslage in der EU hinweisen, die Errungenschaften wie Hatespeech, Chatkontrolle und Vorratsdatenspeicherung vorweisen kann. Auch die Privatwirtschaft hat genügend Gründe, mehr über jeden einzelnen Menschen zu erfahren. Denn so lässt sich dieser optimal manipulieren und zum Kauf von Dienstleistungen und Produkten animieren. Eine Zielstellung von Unternehmen ist, den optimalen Preis ihrer Angebote ermitteln zu können, also den größtmöglichen Gewinn zu erzielen. Das erreicht man durch Methoden der Psychologie. Oder glauben Sie wirklich, dass Produkte wie ein Telefon, mit dem man fotografieren kann, wirklich den Preis wert sind, der dafür verlangt wird? Wir sehen also: Es gibt genügend Gründe, wieso personenbezogene Daten durchaus einen hohen Wert haben können. Betrachten wir uns daher einmal die vielen technologischen Halbwahrheiten an, die in der breiten Öffentlichkeit so kursieren. Viele dieser Halbwahrheiten habe ich auch bei Technologieprofis vernommen, die selbst viele Dinge nicht hinterfragt haben.

Bevor ich aber in die Details einsteige, möchte ich noch eine essenzielle Aussage voranstellen. Es gibt keine sichere und private Kommunikation, wenn elektronische Geräte involviert sind. Wer ein absolut vertrauliches Gespräch führen möchte, geht bei starkem Wind auf ein freies Feld, mit einem Sichtradius von mindestens 100 Metern und verdeckt beim Sprechen seinen Mund. Natürlich ist mir klar, dass auch dort Mikrofone versteckt sein könnten. Diese Aussage ist eher demonstrativ und zeigt, wie schwer es ist, eine vertrauliche Umgebung zu schaffen.

Beginnen wir mit der beliebten Marke Apple. Viele der Apple-Nutzer glauben, ihre Geräte wären besonders sicher. Das stimmt nur so weit, dass durchaus Fremde, die versuchen, sich unautorisierten Zugriff auf die Geräte zu verschaffen, große Hürden überwinden müssen. Dafür sind viele Mechanismen in den Betriebssystemen enthalten, die es erlauben, zum Beispiel auf den Telefonen Anwendungen und Inhalte zu blockieren.

Das Unternehmen Microsoft, steht dem in nichts nach und geht noch einige Schritte weiter. Seitdem das Internet für die breite Masse verfügbar ist, rätselt man darüber, welche Telemetriedaten der Nutzer Windows an den Mutterkonzern sendet. Windows 11 treibt alles noch viel mehr auf die Spitze und speichert jeden Tastenanschlag und macht alle paar Sekunden einen Screenshot vom Bildschirm. Angeblich werden diese Daten nur lokal auf dem Computer gespeichert. Das kann man natürlich gern glauben, und selbst wenn es so wäre, handelt es sich hier um eine enorme Sicherheitslücke. Denn jeder Hacker, der einen Windows 11 Rechner kompromittiert, kann dann diese Daten auch auslesen und hat Zugriff auf Onlinebanking und alle möglichen Accounts.

Zudem verweigert Windows 11 seinen Dienst bei angeblich veralteten Prozessoren. Dass Windows schon immer sehr ressourcenhungrig war, ist keine Neuheit. Der Grund der Restriktion auf alte CPUs hat aber einen anderen Grund. CPUs der neuen Generation haben ein sogenanntes Sicherheitsfeature, mit dem sich der Computer eindeutig identifizieren und über das Internet deaktivieren lässt. Das Stichwort, um das es hier geht, lautet Pluton Security Processor mit dem Trusted Platform Module (TPM 2.0).

Wie sehr die Begehrlichkeiten von Microsoft sind, alle möglichen Informationen über die eigenen User abzugreifen, zeigen auch die Änderungen der AGB um das Jahr 2022. Diese bekamen einen neuen Abschnitt, der Microsoft die Erlaubnis erteilt, alle durch ihre Produkte erlangten Daten zum Trainieren von künstlicher Intelligenz verwenden zu dürfen. Zudem behält man sich das Recht vor, bei erkannter Hatespeech den Nutzer von allen Microsoft Produkten auszuschließen.

Aber keine Sorge, nicht nur Microsoft hat solche Disclaimers in den eigenen AGB. Auch Social Media Platformen wie Meta, besser bekannt unter den Produkten Facebook und WhatsApp, oder die Kommunikationsplattform Zoom agieren so. Die Liste solcher Anwendungen ist natürlich weitaus länger. Es ist jeder Einzelne dazu eingeladen, sich vorzustellen, welche Möglichkeiten die bereits beschriebenen Dinge eröffnen.

Ich habe ja bereits Apple als problematisch im Bereich Sicherheit und Privatsphäre erwähnt. Aber auch Android, das Betriebssystem von Google für SMART‑Fernseher und Telefone, gibt enormen Raum für Kritik. Nicht ganz ohne Grund kann man aus den Telefonen die Akkus nicht mehr entfernen. Denn Android verhält sich genauso wie Windows und sendet alle möglichen Telemetriedaten an den Mutterkonzern. Hierzu kommt noch der 2025 bekannt gewordene Skandal des Herstellers Samsung. Dieser hat ein israelisches, verstecktes Programm namens AppCloud auf seinen Geräten, von dem sich nur erahnen lässt, welchen Zweck es erfüllt. Vielleicht hilft auch die Erinnerung, als im Jahr 2023 bei vielen Palästinensern und anderen von Israel erklärten Feinden die Pager explodiert sind. In der Securityszene ist es kein Geheimnis, dass Israel im Bereich Cybersecurity und Cyberattacken an einsamer Spitze steht.

Ein anderes Thema bei Telefonen ist die Verwendung sogenannter Messenger. Neben den bekannten wie WhatsApp und Telegram gibt es auch ein paar Nischenlösungen wie Signal und Session. Alle diese Anwendungen sprechen von einer Ende zu Ende Verschlüsselung für sichere Kommunikation. Es ist schon richtig, dass Hacker hier so ihre Schwierigkeiten haben, um an die Informationen zu kommen, wenn sie nur den Netzwerkverkehr mitschneiden. Was aber nach erfolgreicher Übertragung und der Entschlüsselung auf dem Zielgerät dann mit der Nachricht passiert, steht auf einem anderen Blatt. Wie sonst sollten sich die Meta AGB mit den bereits enthaltenen Passagen erklären lassen?

Wenn man alle die bereits erwähnten Tatsachen zusammen nimmt, muss man sich nicht wundern, wieso viele Geräte wie Apple, Windows und Android erzwungene Updates etabliert haben. Natürlich dient nicht alles der totalen Kontrolle. Auch das Thema Resilienz, welches Geräte vorzeitig altern lässt, um diese durch Neue zu ersetzen, ist ein Grund.

Nun gibt es natürlich auch genügend Angebote, die ihren Nutzern enorme Sicherheit versprechen. An erster Stelle sei das freie Open Source Betriebsystem Linux erwähnt. Es gibt viele verschiedene Linux-Derivate und nicht alle behandeln das Thema Security und Privatsphäre mit der gleichen Priorität. Die von der Firma Canonical veröffentlichte Distribution Ubuntu, erhält regelmäßig Kritik. So war um das Jahr 2013 das Unity Desktop voll mit Werbung, was viel Ablehnung erfahren hat. Auch dass es unter Linux keine Viren gäbe, ist ein Mythos. Sie gibt es durchaus und der Virenscanner unter Linux heißt ClamAV, nur ist deren Verbreitung aufgrund der geringen Privatinstallationen im Vergleich zu Windows weniger verbreitet. Außerdem gelten bisher Linuxnutzer als ein wenig nerdig und klicken nicht so schnell auf verdächtige Links. Wer aber dann unter Linux all die tollen Anwendungen wie Skype, Dropbox, KI Agenten und so weiter installiert hat, hat gegenüber der Big Tech Industrie keine verbesserte Sicherheit.

Ähnlich verhält es sich auch mit sogenannten „degoggeled“ Smart­phones. Auch hier ist ein Problem, die verfügbare Hardware, die sehr reguliert ist. Aber auch die Alltagstauglichkeit zeigt oft Grenzen auf. Diese Grenzen finden sich bereits im familiären Umfeld und bei Freunden, die sich kaum von WhatsApp und Co. abbringen lassen. Aber auch Onlinebanking kann hier einem erhebliche Schwierigkeiten bereiten, denn Banken bieten ihre Apps aus Sicherheitsgründen nur über den verifizierten Google Play Store an.

Wir sehen, das Thema ist sehr umfangreich und ich habe nicht einmal alle Punkte aufgezählt, noch bin ich sehr in die Tiefe gegangen. Ich hoffe, ich konnte dennoch ein wenig Sensibilisierung erreichen, dass zumindest das Smartphone nicht überall mitgenommen und auch mehr Zeit ohne die ganzen technischen Geräte wieder in der Wirklichkeit mit anderen Menschen verbracht wird.

Python-Programme über PIP unter Linux installieren

Vor sehr vielen Jahren hat die nach der britischen Komikertruppe benannte Skriptsprache Python unter Linux das altehrwürdige Perl abgelöst. Das heißt, jede Linux Distribution enthält einen Python-Interpreter von Hause aus. Eigentlich eine recht praktische Sache. Eigentlich! Wenn da nicht das leidige Thema mit der Sicherheit wäre. Aber fangen wir einmal der Reihe nach an, denn dieser kleine Artikel ist für Leute gedacht, die unter Linux in Python geschriebene Software zum Laufen bringen möchten, aber selbst weder Python kennen noch irgendetwas mit Programmieren am Hut haben. Daher ein paar kleine Hintergrundinformationen, um zu verstehen, worum es überhaupt geht.

Alle aktuellen Linux Varianten, die von der Distribution Debian abgeleitet sind, also Ubuntu, Mint und so weiter, werfen einen kryptischen Fehler, wenn man versucht, ein Pythonprogramm zu installieren. Da man vermeiden möchte, dass wichtige Systembibliotheken, die in Python geschrieben wurden, durch die Installation zusätzlicher Programme überschrieben werden und dadurch ein Fehlverhalten im Betriebssystem hervorrufen, wurde ein Schutz eingebaut, der das verhindert. Leider steckt auch hier wie so oft der Teufel im Detail.

ed@P14s:~$ python3 -m pip install ansible
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.13/README.venv for more information.

Als Lösung soll nun eine virtuelle Umgebung eingerichtet werden. Debian 12 und auch das gerade im August 2025 frisch erschienene Debian 13 nutzen Python in der Version 3. Python2 und Python 3 sind zueinander nicht kompatibel. Das heißt, in Python2 geschriebene Programme laufen nicht ohne Weiteres in Python 3.

Wenn man nun unter Python irgendein Programm installieren möchte, erledigt dies der sogenannte Paketmanager. Die meisten Programmiersprachen haben einen solchen Mechanismus. Der Paketmanager für Python heißt PIP. Hier kommen schon die ersten Komplikationen ins Spiel. Es gibt pip, pip3 und pipx. Solche Namensinkonsistenzen findet man auch beim Python Interpreter selbst. Version 2 startet man auf der Konsole mit python und Version 3 mit python3. Da sich dieser Artikel auf Debian 12 / Debian 13 und seine Derivate bezieht, wissen wir, dass zumindest mal Python 3 am Start ist. Um die tatsächliche Python Version zu erfahren, kann man auf der Shell auch python3 -V eingeben, was bei mir die Version 3.13.5 zutage fördert. Versucht man indies python oder python2 kommt eine Fehlermeldung, dass der Befehl nicht gefunden werden konnte.

Schauen wir uns zuerst einmal an, was überhaupt pip, pip3 und pipx bedeuten soll. PIP selbst heißt nichts anderes als Package Installer for Python [1]. Bis Python 2 galt PIP und ab Version 3 haben wir entsprechend auch PIP3. Ganz speziell ist PIPX [2] welches für isolierte Umgebungen gedacht ist, also genau das, was wir benötigen. Daher geht es im nächsten Schritt darum, PIPX zu installieren. Das erreichen wir recht leicht über den Linux-Paketmanager: sudo apt install pipx. Um festzustellen, welche PIP Variante bereits auf dem System installiert ist, benötigen wir folgenden Befehl: python3 -m pipx --version, der in meinem Fall 1.7.1 ausgibt. Das heißt, ich habe auf meinem System als Ausgangsbasis das originale Python3 und dazu PIPX installiert.

Mit der gerade beschriebenen Voraussetzung kann ich nun unter PIPX alle möglichen Python Module installieren. Der Grundbefehl lautet pipx install <module>. Um ein nachvollziehbares Beispiel zu schaffen, wollen wir jetzt im nächsten Schritt Ansible installieren. Auf die Verwendung von pip und pip3 sollte verzichtet werden, da diese zum einen erst installiert werden müssen und zum anderen zu dem eingangs krypischen Fehler führen.

Ansible [3] ist ein Programm, das in Python geschrieben wurde und ab der Version 2.5 auf Python 3 migriert wurde. Nur sehr knapp ein paar Worte zu dem, was Ansible selbst für ein Programm ist. Ansible gehört in die Klasse der Konfigurationsmanagementprogramme und erlaubt es völlig automatisiert mit einem Skript Systeme zu provisionieren. Eine Provisionierung kann zum Beispiel als virtuelle Maschine erfolgen und umfasst das Festlegen der Hardware-Ressourcen (RAM, HDD CPU Kerne, etc.), Installieren des Betriebssystems, das Einrichten des Benutzers und das Installieren und Konfigurieren weiterer Programme.

Als Erstes müssen wir Ansible mit pipx install ansible installieren. Wenn die Installation beendet ist, können wir den Erfolg mit pipx list überprüfen, was bei mir zu folgender Ausgabe führt:

ed@local:~$ pipx list
venvs are in /home/ed/.local/share/pipx/venvs
apps are exposed on your $PATH at /home/ed/.local/bin
manual pages are exposed at /home/ed/.local/share/man
   package ansible 12.1.0, installed using Python 3.13.5
    - ansible-community

Die Installation ist aber hier noch nicht beendet, denn der Aufruf ansible –version wird mit einer Fehlermeldung quittiert. Das Problem, welches sich hier ergibt, hat etwas mit der Ansible Edition zu tun. Wie wir bereits in der Ausgabe von pipx list sehen können, haben wir die Community Edition installiert. Weswegen der Befehl ansible-community --version lautet, der bei mir aktuell die Version 12.2.0 zutage fördert.

Wer lieber in der Konsole ansible anstatt ansible-community eingeben möchte, kann das über eien alias erreichen. Das Setzen des Alias ist hier nicht ganz so trivial, da dem Alias Parameter übergeben werden müssen. Wie das gelingt, ist aber Thema eines anderen Artikels.

Gelegentlich kommt es aber auch vor, dass Pythonprogramme über PIPX nicht installiert werden können. Ein Beispiel hierfür ist streamdeck-ui [4]. Die Hardware StreamDeck von Elgato konnte lange Zeit unter Linux mit dem in Python implementierten stremdeck-ui genutzt werden. Mittlerweile gibt es noch eine Alternative namens Boatswain, die nicht in Python geschrieben wurde, auf die man besser ausweichen sollte. Denn leider führt die Installation von streamdeck-ui zu einem Fehler, der aus der Abhängigkeit zur Bibliothek ‘pillow’ herrührt. Versucht man nun, das Installationsscript aus dem Git Repository von streamdeck-ui zu nutzen, findet man einen Verweis auf die Installation von pip3, über das streamdeck-ui bezogen werden kann. Kommt man dann an den Punkt, um den Befehl pip3 install --user streamdeck_ui auszuführen, erhält man die Fehlermeldung, externally-managed-environment die ich zu Anfang des Artikels bereits beschrieben habe. Da wir bereits PIPX nutzen, ist es nicht zielführend, eine weitere virtuelle Umgebung für Python Programme zu erstellen, da diese auch nur wieder zu dem Fehler mit der Bibliothek pillow führen wird.

Da ich selbst kein Python-Programmierer bin, aber durchaus einige Erfahrungen mit komplexen Abhängigkeiten in großen Java Projekten habe und das Programm streamdeck-ui eigentlich besser als Boatwain empfunden hatte, habe ich mich ein wenig im GitHub Repository umgeschaut. Zuerst fällt auf, dass die letzte Aktivität im Frühjahr 2023 stattgefunden hat und eine Reaktivierung eher unwahrscheinlich ist. Schauen wir uns dennoch einmal die Fehlermeldung genauer an, um eine Idee zu bekommen, wie man bei Installationen anderer Programme das Problem eingrenzen kann.

Fatal error from pip prevented installation. Full pip output in file:
    /home/ed/.local/state/pipx/log/cmd_pip_errors.log

pip seemed to fail to build package:
    'pillow'

Wenn man nun einen Blick in die zugehörige Logfile wirft, erfährt man, dass die Abhängigkeit von pillow kleiner als Version 7 und größer als Version 6.1 definiert ist, was zur Verwendung von der Version 6.2.2 führt. Schaut man nun einmal nach, was pillow eigentlich macht, erfährt man, dass dies eine Bibliothek für Python 2 war, mit der Grafiken gerendert werden konnten. Die in streamdeck-ui verwendete Version ist ein Fork von pillow für Python 3 und Ende 2025 bereits in der Version 12 verfügbar. Möglicherweise könnte das Problem dadurch behoben werden, indem eine aktuelle Version von pillow zum Einsatz kommt. Damit das gelingt, sind mit hoher Wahrscheinlichkeit auch Anpassungen am Code von streamdeck-ui vorzunehmen, da vermutlich seit der Version 6.2.2 einige Inkompatibilitäten der genutzten Funktionen vorhanden sind.

Mit dieser Analyse sehen wir, dass die Wahrscheinlichkeit, streamdeck-ui unter pip3 zum Laufen zu bekommen, in dasselbe Ergebnis führt wie mit PIPX. Wer nun auf die Idee kommt, unbedingt auf Python 2 zu downzugraden, um alte Programme zum Laufen zu bekommen, der sollte dies besser in einer gesonderten, isolierten Umgebung, zum Beispiel mit Docker versuchen. Python 2 hat seit vielen Jahren keinen Support durch Updates und Security Patches, weswegen eine parallele Installation zu Python 3 auf dem eigenen Betriebssystem keine gute Idee ist.

Wir sehen also, dass die anfangs beschriebene Fehlermeldung gar nicht so kryptisch ist, wenn man indes gleich auf PIPX setzt. Bekommt man sein Programm dann immer noch nicht installiert, hilft ein Blick auf die Fehlermeldung, der uns meist darüber aufklärt, dass wir ein veraltetes und nicht mehr gepflegtes Programm verwenden wollen.

Resources

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.


Plattenspieler II

Nachdem wir im ersten Teil dieses Workshops eher allgemein Fragestellungen wie Dateisysteme und Partitionen besprochen haben, wenden wir uns im zweiten und letzten Teil der Artikelserie verschiedenen Diagnosetechniken zu. Unser Hauptarbeitsgerät hierfür wird die Bash sein, da die folgenden Werkzeuge alle kommandzeilenbasiert sind.

Auch für diesen Teil gilt, größte Sorgfalt walten zu lassen. Die hier beschriebenen Praktiken können bei unsachgemäßer Anwendung zu Datenverlusten führen. Für etwaige Schäden übernehme ich keine Haftung.

Beginnen wir auch gleich mit der Möglichkeit, herauszufinden, wie viel Speicher wir noch auf unserer Festplatte freihaben. Wer gelegentlich auf Servern sein Unwesen treibt, kommt um den Befehl df nicht umher. Schließlich hat der SSH Client kein grafisches Interface und man muss sich auf der Shell zurechtfinden.

Mit df -hT lassen sich alle Speicher, physisch und virtuell, in menschenlesbarer Form anzeigen.

ed@local:~$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs   32G     0   32G   0% /dev
tmpfs          tmpfs     6.3G  2.8M  6.3G   1% /run
/dev/nvme0n1p2 ext4      1.8T  122G  1.6T   8% /
tmpfs          tmpfs      32G  8.0K   32G   1% /dev/shm
efivarfs       efivarfs  196K  133K   59K  70% /sys/firmware/efi/efivars
tmpfs          tmpfs     5.0M   16K  5.0M   1% /run/lock
tmpfs          tmpfs     1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
tmpfs          tmpfs      32G   20M   32G   1% /tmp
/dev/nvme0n1p1 vfat      975M  8.8M  966M   1% /boot/efi
tmpfs          tmpfs     6.3G  224K  6.3G   1% /run/user/1000

Wie wir in der Ausgabe sehen können, ist der Mountpunkt / ein ext4 Dateisystem, mit einer nvme SSD die eine Kapazität von 1,8 TB hat, von der circa 1,2 TB noch frei sind. Würden noch andere Speichermedien wie externe Festplatten oder USB vorhanden sein, wären sie ebenfalls Bestandteil der Liste. Sicher gehört etwas Übung dazu, den Blick für die relevanten Details zu schärfen. Im nächsten Schritt wollen wir uns ein wenig in der Diagnose üben.

lsblk

Falls die Ausgabe von df zu unübersichtlich ist, kann auch auf das Werkzeug lsblk zurückgegriffen werden, das für Anfänger eine etwas verständlichere Auflistung bereitstellt.

ed@local:~$ sudo lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0          7:0    0     4K  1 loop /snap/bare/5
loop1          7:1    0  73.9M  1 loop /snap/core22/2139
loop2          7:2    0 516.2M  1 loop /snap/gnome-42-2204/226
loop3          7:3    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop4          7:4    0  10.8M  1 loop /snap/snap-store/1270
loop5          7:5    0  50.9M  1 loop /snap/snapd/25577
loop6          7:6    0  73.9M  1 loop /snap/core22/2133
loop7          7:7    0  50.8M  1 loop /snap/snapd/25202
loop8          7:8    0   4.2G  0 loop 
└─veracrypt1 254:0    0   4.2G  0 dm   /media/veracrypt1
sda            8:0    1 119.1G  0 disk 
└─sda1         8:1    1 119.1G  0 part 
sr0           11:0    1  1024M  0 rom  
nvme0n1      259:0    0   1.9T  0 disk 
├─nvme0n1p1  259:1    0   976M  0 part /boot/efi
├─nvme0n1p2  259:2    0   1.8T  0 part /
└─nvme0n1p3  259:3    0  63.7G  0 part [SWAP]

S.M.A.R.T

Um gleich vor der Benutzung unseren neu erstandenen Speicher auf Herz und Nieren zu prüfen, bedienen wir uns der sogenannten S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology) Tools. Das kann man zum einen mit dem im ersten Teil dieses Artikels vorgestellten Programm Disks tun, oder mit ausführlicheren Informationen über die Bash. Mit df -hT haben wir die SSD /dev/nvme0 bereits identifiziert, sodass wir smartctl aufrufen können.

ed@local:~$ sudo smartctl --all /dev/nvme0 
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.12.48+deb13-amd64] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       SAMSUNG MZVL22T0HDLB-00BLL
Serial Number:                      S75ZNE0W602153
Firmware Version:                   6L2QGXD7
PCI Vendor/Subsystem ID:            0x144d
IEEE OUI Identifier:                0x002538
Total NVM Capacity:                 2,048,408,248,320 [2.04 TB]
Unallocated NVM Capacity:           0
Controller ID:                      6
NVMe Version:                       1.3
Number of Namespaces:               1
Namespace 1 Size/Capacity:          2,048,408,248,320 [2.04 TB]
Namespace 1 Utilization:            248,372,908,032 [248 GB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            002538 b63101bf9d
Local Time is:                      Sat Oct 25 08:07:32 2025 CST
Firmware Updates (0x16):            3 Slots, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x0057):     Comp Wr_Unc DS_Mngmt Sav/Sel_Feat Timestmp
Log Page Attributes (0x0e):         Cmd_Eff_Lg Ext_Get_Lg Telmtry_Lg
Maximum Data Transfer Size:         128 Pages
Warning  Comp. Temp. Threshold:     83 Celsius
Critical Comp. Temp. Threshold:     85 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     8.41W       -        -    0  0  0  0        0       0
 1 +     8.41W       -        -    1  1  1  1        0     200
 2 +     8.41W       -        -    2  2  2  2        0     200
 3 -   0.0500W       -        -    3  3  3  3     2000    1200
 4 -   0.0050W       -        -    4  4  4  4      500    9500

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        37 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    43,047,167 [22.0 TB]
Data Units Written:                 25,888,438 [13.2 TB]
Host Read Commands:                 314,004,907
Host Write Commands:                229,795,952
Controller Busy Time:               2,168
Power Cycles:                       1,331
Power On Hours:                     663
Unsafe Shutdowns:                   116
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               37 Celsius
Temperature Sensor 2:               37 Celsius

Error Information (NVMe Log 0x01, 16 of 64 entries)
No Errors Logged

Self-test Log (NVMe Log 0x06)
Self-test status: No self-test in progress
No Self-tests Logged

Eine sehr praktische Informationsquelle, besonders wenn man beabsichtigt, eine gebrauchte Platte zu verbauen. Glücklicherweise zeigt meine System SSD nach knapp zwei Jahren Nutzung keine Auffälligkeiten.

fdisk

Der Klassiker unter den Festplattenprogrammen ist fdisk, das auch unter Windows Systemen verfügbar ist. Mit fdisk können nicht nur Platten formatiert werden, sondern auch einige Informationen herausgekitzelt werden. Hierfür gibt es die Parameter -l für list und -x mit mehr Details. Das Programm fdisk ist recht komplex und zum Formatieren von Datenträgern empfehle ich eher die im ersten Teil dieses Artikels vorgestellten grafischen Varianten Disks und Gparted. Mit dem grafischen Interface ist die Wahrscheinlichkeit, Fehler zu machen, weitaus geringer als in der Shell.

ed@local:~$ sudo fdisk -l
Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
Disk model: SAMSUNG MZVL22T0HDLB-00BLL              
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 347D3F20-0228-436D-9864-22A5D36039D9

Device              Start        End    Sectors  Size Type
/dev/nvme0n1p1       2048    2000895    1998848  976M EFI System
/dev/nvme0n1p2    2000896 3867305983 3865305088  1.8T Linux filesystem
/dev/nvme0n1p3 3867305984 4000796671  133490688 63.7G Linux swap

Disk /dev/sda: 119.08 GiB, 127865454592 bytes, 249737216 sectors
Disk model: Storage Device  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa82a04bd

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1        2048 249737215 249735168 119.1G 83 Linux

Basisreparatur mit Konsistenzcheck: fsck

Sollten wider Erwarten Probleme auftauchen, besteht mit dem Werkzeug fsck (File System Consistency Check) die Möglichkeit, das Dateisystem zu überprüfen und gegebenenfalls zu reparieren. Dazu muss man allerdings die entsprechende Partition angeben.

sudo fsck /dev/sdc


Wie man in dem Screenshot sehen kann, hatte ich vor einiger Zeit eine Partition mit einem defekten Superblock, sodass ein Zugriff auf die Daten nicht mehr möglich war. Grund für den Fehler war eine kaputte Speicherzelle in der SSD. Mit etwas Mühe ließ sich dann auf die Daten zugreifen und ich konnte diese auf einen anderen Speicher kopieren. Das klappt nicht immer. Weshalb ich als kleinen Ratschlag mitgeben möchte, vor solchen Rettungsaktionen immer gut vorbereitet zu sein. Das heißt, auch ein entsprechend großes, funktionierendes Ziellaufwerk bereit zu haben, um bei Erfolg sofort eine Sicherungskopie anfertigen zu können. Viele der hier vorgestellten Operationen verändern die Daten auf dem Speicher und es ist nicht sicher, ob ein erneuter Zugriff gelingen wird.

Linux Sysadmin Witz

Linux Sys-Admins empfehlen Anfängern gern das Löschen der französischen Sprachdateien, die man ja nicht braucht, um Platz zu sparen. Dazu soll man den Befehl sudo rm -fr / in der Konsole eintippen und ENTER drücken. Das sollte man auf keinen Fall tun, denn der Befehl löscht die gesamte Festplatte. Es gilt als das Gefährlichste, was man in Linux tun kann. Mit rm initiert man das Löschen, die Parameter -f und -r stehen für force und rekursiv, und der unscheinbare / verweist auf das Hauptverzeichnis.

Fake Check

Bisweilen kommt es vor, dass man Speicher erstanden hat, die eine hohe Kapazität anzeigen, diese Kapazitäten aber nicht im Ansatz vorhanden sind. Es handelt sich um sogenannte Fake Geräte. Das Problem dieser Fake Geräte ist, dass die Daten, die auf das Gerät geschrieben werden, für die keine Kapazität mehr vorhanden ist, im Nirwana landen. Leider erhält man keine Fehlermeldung und bemerkt das Problem oft erst, wenn man zu einem späteren Zeitpunkt wieder auf die Daten zugreifen möchte.

Ein sehr unschöner Weg, wie man an FAKE‑Geräte kommt, ist ein Hack in Amazon. Damit der Versand zuverlässig und schnell vonstattengeht, bietet Amazon für seine Händler die Option an, die Waren im eigenen Logistikcenter zu deponieren. Händler, die diese Option nutzen, werden auch bevorzugt auf der Amazon Seite angezeigt. Das Problem ist nun, dass gleiche Produkte alle in die selbe Kiste kommen, was durchaus auch Sinn ergibt. Diesen Umstand nutzen Kriminelle schamlos aus und senden an Amazon ihre FAKE-Produkte. Im Nachhinein kann man dann nicht mehr zuordnen, wer der ursprüngliche Lieferant war.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Network Attached Storage (NAS)

Ein weiteres Szenario für den Umgang mit Massenspeichern unter Linux sind sogenannte NAS‑Festplatten, die über ein Netzwerkkabel an den Router angeschlossen werden und dann allen Geräten wie Fernsehern etc. zur Verfügung stehen. Damit der Zugriff auf die Dateien nur für berechtigte Nutzer freigegeben wird, kann man ein Passwort festlegen. Günstige Lösungen für den Heimgebrauch gibt es zum Beispiel von Western Digital mit der Produktserie MyCloud. Nun wäre es eine sehr praktische Sache, wenn man die eigene NAS automatisch beim Bootvorgang auf seinem Linuxsystem anmeldet, sodass sie ohne weitere Anmeldung sofort benutzbar ist. Dazu muss man die URL des NAS z. B. aus der Gebrauchsanweisung oder über einen Netzwerkscan ermitteln. Hat man jetzt alle notwendigen Informationen wie URL / IP, Anmeldenamen und Passwort, kann man mit einem Eintrag in der Datei /etc/fstab das NAS registrieren. Die Datei fstab haben wir bereits im Abschnitt über die SWAP Datei kennengelernt.

Zuerst installieren wir für einen problemlosen Zugriff auf die für NAS Systeme üblichen Dateisysteme NFS Unterstützung für Linux.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Im nächsten Schritt müssen wir eine Datei anlegen, die den automatischen Login ermöglicht. Diese Datei nennen wir nas-login und speichern sie unter /etc/nas-login. Der Inhalt dieser Datei sind unsere Login Informationen.

user=accountname
password=s3cr3t

Abschließend editieren wir die Datei fstab und fügen als letzte Zeile folgende Information hinzu:

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Das Beispiel ist für eine Western Digital MyCloud Platte, die über die URL //wdmycloud.local/account erreichbar ist. Account ist an den entsprechenden Benutzer anzupassen. Der Mountpoint unter Linux lautet /media/nas. In den meisten Fällen muss man dieses Verzeichnis vorher mit sudo mkdir /media/nas erstellen. In den Credentials tragen wir die Datei mit unseren Anmeldeinformationen /etc/nas-login ein. Nach einem Reboot wird der Nasspeicher im Dateibrowser angezeigt und kann verwendet werden. Je nach Netzwerkgeschwindigkeit kann das den Bootvorgang um ein paar Sekunden verlängern. Noch länger dauert es, wenn der Rechner nicht mit dem heimischen Netzwerk verbunden ist und das NAS nicht verfügbar ist. Man kann sich mit einem Raspberry Pi auch sein eigenes NAS bauen, das kann aber Stoff für einen zukünftigen Artikel sein.

Anschließend möchte ich noch ein paar Worte zum Service von Western Digital verlieren. Ich hatte bereits 2 Tauschgeräte, die jedes Mal problemlos durch WD ersetzt worden sind. Natürlich habe ich dem Service im Vorfeld meine Analysen per Screenshot übermittelt, wodurch unsachgemäßer Gebrauch durch mich ausgeschlossen werden konnte.
Die in diesem Artikel vorgestellten Techniken haben mir dabei sehr geholfen, weswegen ich überhaupt auf die Idee gekommen bin, diesen Text zu verfassen. Damit will ich es auch belassen und hoffe, euch leisten die hier zusammengetragenen Informationen ebenso hilfreiche Dienste wie mir.


Plattenspieler II

Plattenspieler II

Elmar Dott Nov. 3, 2025 19 min read

Im zweiten Teil des Workshops zu Festplatten unter Linux gehen wir direkt auf die Konsole und beschäftigen uns mit der…

Plattenspieler

Der Umgang mit Massenspeichern wie Festplatten (HDD), Solid State Drive (SSD), USB, Speicherkarten oder Network Attached Storages (NAS) ist unter Linux gar nicht so schwer, wie viele glauben. Man muss es lediglich schaffen, alte Gewohnheiten, die man sich unter Windows angeeignet hat, wieder loszulassen. In diesem Kompaktkurs erfahren Sie alles Notwendige, um auf Linux Desktops und -Servern mögliche aufkommende Probleme zu meistern.

Bevor wir auch gleich in aller Tiefe in das Thema eintauchen, noch ein paar wichtige Fakten über die Hardware selbst. Hier gilt vor allem der Grundsatz: Wer billig kauft, kauft doppelt. Wobei das Problem nicht einmal das Gerät selbst ist, was man austauschen muss, sondern die möglicherweise verlorenen Daten und der Aufwand, alles wieder neu einzurichten. Diese Erfahrung habe ich vor allem bei SSDs und Speicherkarten gemacht, wo es durchaus einmal vorkommen kann, dass man einem Fake Produkt aufgesessen ist und der versprochene Speicherplatz nicht vorhanden ist, obwohl das Betriebssystem die volle Kapazität anzeigt. Wie man mit solchen Situationen umgeht, besprechen wir allerdings ein wenig später.

Ein weiterer wichtiger Punkt ist die Verwendung im Dauerbetrieb. Die meisten Speichermedien sind nicht dafür geeignet, 24 Stunden jeden Tag, 7 Tage die Woche eingeschaltet zu sein und verwendet zu werden. Festplatten und SSDs, die für Laptops gemacht worden sind, gehen bei einer Dauerbelastung zügig kaputt. Deswegen sollte man sich bei Dauerbetrieb, wie es bei NAS‑Systemen der Fall ist, explizit nach solchen speziellen Geräten umschauen. Die Firma Western Digital hat zum Beispiel verschiedene Produktlinien. Die Linie Red ist für Dauerbetrieb ausgelegt, wie es bei Servern und NAS der Fall ist. Wichtig ist, dass in der Regel die Datentransfergeschwindigkeit bei Speichermedien etwas geringer ist, wenn dafür die Lebensdauer erhöht wird. Aber keine Sorge, wir verlieren uns jetzt nicht in den ganzen Details, die man noch zum Thema Hardware sagen könnte, und wollen es dabei belassen, um zum nächsten Punkt zu gelangen.

Ein signifikanter Unterschied zwischen Linux und Windows ist das Dateisystem. Also der Mechanismus, wie das Betriebssystem den Zugriff auf die Informationen organisiert. Windows Nutzt als Dateisystem NTFS und USB Sticks oder Speicherkarten sind oft auch unter FAT formatiert. Der Unterschied ist, dass mit NTFS Dateien, die über 4 GB groß sind, gespeichert werden können. FAT wird der Stabilität eher von Geräteherstellern in Navigationssystemen oder Autoradios bevorzugt. Unter Linux sind vornehmlich die Dateisysteme ext3 oder ext4 anzutreffen. Natürlich gibt es noch viele Spezialformate, die wir aber an dieser Stelle nicht weiter besprechen wollen. Der große Unterschied zwischen Linux- und Windows Dateisystemen ist das Sicherheitskonzept. Während NTFS keinen Mechanismus hat, um das Erstellen, Öffnen oder Ausführen von Dateien und Verzeichnissen zu kontrollieren, ist dies für ext3 und ext4 ein grundlegendes Konzept.

Speicher, die in NTFS oder FAT formatiert sind, können problemlos an Linux Rechner angeschlossen werden und die Inhalte können gelesen werden. Um beim Schreiben von Daten auf Netzwerkspeicher, die wegen der Kompatibilität oft auf NTFS formatiert sind, keine Verluste zu riskieren, nutzt man das SAMBA Protokoll. Samba ist meist bereits Bestandteil vieler Linux Distributionen und kann in wenigen Augenblicken auch installiert werden. Es ist keine spezielle Konfiguration des Dienstes notwendig.

Nachdem wir nun gelernt haben, was ein Dateisystem ist und wozu diese notwendig sind, stellt sich nun die Frage, wie man einen externen Speicher unter Linux formatieren kann. Die beiden grafischen Programme Disks und Gparted sind hierzu ein gutes Gespann. Disks ist ein wenig universeller nutzbar und es lassen sich mit diesem Programm bootfähige USB Sticks erstellen, mit denen man anschließend Computer installieren kann. Gparted ist eher geeignet, bei Festplatten oder SSDs bestehende Partitionen zu erweitern oder kaputte Partitionen zu reparieren.

Bevor sie nun weiterlesen und sich gegebenenfalls daran machen, den ein oder anderen Tipp nachzustellen, ist es wichtig, dass ich an dieser Stelle einen Warnhinweis gebe. Bevor Sie irgendetwas mit Ihren Speichermedien ausprobieren, fertigen Sie zuallererst eine Datensicherung an, auf die Sie bei Unglücken zurückgreifen können. Zudem weise ich ausdrücklich darauf hin, sich nur an den Szenarien zu versuchen, die Sie verstehen und bei denen Sie wissen, was Sie tun. Für mögliche Datenverluste übernehme ich keine Haftung.

Bootfähige USB & Speicherkarten mit DISKS

Ein Szenario, das wir gelegentlich benötigen, ist die Erstellung von bootfähigen Datenträgern. Ganz gleich, ob es ein USB‑Stick für die Installation eines Windows‑ oder Linux‑Betriebssystems oder das Installieren des Betriebssystems auf einer SD‑Karte für die Verwendung auf einem RaspberryPI ist: Das Vorgehen ist identisch. Bevor wir starten, benötigen wir ein Installationsmedium, das wir als ISO in der Regel von der Homepage des Betriebssystemherstellers herunterladen können, und einen zugehörigen USB‑Stick.

Als Nächstes öffnen wir das Programm Disks und wählen den USB Stick aus, auf den wir die ISO Datei installieren wollen. Danach klicken wir auf die drei Punkte im oberen Rahmen des Fensters und wählen aus dem erscheinenden Menü den Eintrag Restore Disk Image. In dem nun sich öffnenden Dialog wählen wir für das Eingabefeld Image to Restore unsere ISO Datei aus und klicken auf Start Restoring. Mehr ist nicht zu tun.

Partitionen und MTF mit Gparted reparieren

Ein anderes Szenario, mit dem man konfrontiert sein kann, ist das Daten auf einem Stick z. B. nicht lesbar sind. Wenn die Daten selbst nicht beschädigt sind, kann man Glück haben und mit GParted das Problem lösen. In einigen Fällen kann es sein, (A) dass die Partitionstabelle beschädigt ist und das Betriebssystem einfach nicht weiß, wo der Startpunkt ist. Eine andere Möglichkeit ist, (B) dass die sogenannte Master File Table (MFT) beschädigt ist. In der MTF ist der Vermerk, in welcher Speicherzelle eine Datei gefunden wird. Beide Probleme lassen sich mit GParted schnell wieder in Ordnung bringen.

Natürlich ist es nicht möglich, in einem allgemeinen Artikel auf die vielen komplexen Aspekte der Datenrettung einzugehen.

Nachdem wir nun wissen, dass eine Festplatte aus Partitionen besteht und diese Partitionen ein Dateisystem enthalten. Können wir jetzt sagen, dass alle Informationen zu einer Partition mit dem darauf formatierten Dateisystem in der Partitionstabelle gespeichert sind. Um alle Dateien und Verzeichnisse innerhalb einer Partition zu finden, bedient sich das Betriebssystem eines Index, in dem es nachschauen kann, die sogenannten Master File Table (MFT). Dieser Zusammenhang führt uns bereits zum nächsten Punkt, dem sicheren Löschen von Speichermedien.

Datenschredder – sicheres Löschen

Wenn wir Daten auf einem Speichermedium löschen, wird lediglich der Eintrag, wo die Datei zu finden ist aus der MFT entfernt. Die Datei ist also weiterhin vorhanden und kann von speziellen Programmen immer noch gefunden und ausgelesen werden. Das sichere Löschen von Dateien gelingt nur, wenn wir den freien Speicherplatz mehrfach überschreiben. Da wir nie wissen können, wo eine Datei physisch auf einem Speichermedium geschrieben wurde, müssen wir nach dem löschen den gesamten freien Speicherplatz mehrfach überschreiben. Spezialisten raten zu drei Schreibvorgängen, bei denen jeweils unterschiedliche Muster geschrieben werden, um selbst Speziallaboren eine Wiederherstellung unmöglich zu machen. Ein Programm unter Linux, mit dem man zusätzlich noch ‚Datenmüll‘ zusammenkehrt und löscht, ist BleachBit.

Das sichere Überschreiben von gelöschten Dateien ist je nach Größe des Speichermediums eine etwas länger andauernde Aktion, weswegen man dies nur sporadisch macht. Ganz sicher sollte man alte Speichermedien aber rückstandsfrei löschen, wenn diese ‚aussortiert‘ werden und dann entweder entsorgt oder an andere weitergegeben werden.

Ganze Festplatten 1:1 spiegeln – CloneZilla

Ein weiteres Szenario, mit dem wir konfrontiert werden können, ist die Notwendigkeit, eine Kopie der Festplatte anzufertigen. Das ist dann relevant, wenn für den aktuellen Computer die bestehende Festplatte bzw. SSD gegen eine neue mit höherer Speicherkapazität ausgetauscht werden soll. Windowsnutzer nutzen hier oft die Gelegenheit, ihr System neu zu installieren, um in Übung zu bleiben. Wer bereits länger mit Linux arbeitet, weiß es zu schätzen, dass Linux-Systeme sehr stabil laufen und die Notwendigkeit einer Neuinstallation nur sporadisch besteht. Daher bietet es sich an die Daten der aktuellen Festplatte bitweise auf die neue Platte zu kopieren. Das gilt natürlich auch für SSDs beziehungsweise von HDD zu SSD und umgekehrt. Dieses Vorhaben gelingt uns mit dem freien Werkzeug CloneZilla. Dazu erstellen wir einen bootfähigen USB mit CloneZilla und starten den Rechner im Livesystem von CloneZilla. Danach schließen wir die neue Platte mit einem SATA / USB Adapter an den Rechner an und starten die Datenübertragung. Bevor wir nach Fertigstellung unseren Computer aufschrauben und die Platten tauschen, ändern wir im BIOS die boot Reihenfolge und schauen, ob unser Vorhaben überhaupt geglückt ist. Nur wenn sich der Rechner über die neue Platte problemlos starten lässt, machen wir uns an den physischen Austausch. Diese kleine Anleitung beschreibt das prinzipielle Vorgehen und ich habe bewusst auf eine detaillierte Beschreibung verzichtet, da sich die Oberfläche und Bedienung von neueren Clonezilla-Versionen unterscheiden kann.

SWAP – die Auslagerungsdatei unter Linux

An dieser Stelle verlassen wir auch nun die grafische Benutzeroberfläche und wenden uns der Kommandozeile zu. Wir kümmern uns um eine sehr spezielle Partition, die manchmal erweitert werden muss. Es geht um die SWAP File. Die SWAP File ist das, was bei Windows Auslagerungsdatei heißt. Das heißt, hier schreibt das Betriebssystem Daten hin, die nicht mehr in den RAM passen, und kann bei Bedarf diese Daten schneller wieder in den RAM einlesen. Indessen kann es vorkommen, dass diese Auslagerungsdatei zu klein ist und erweitert werden muss. Aber auch das ist kein Hexenwerk, wie wir gleich sehen werden.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Wir haben an dieser Stelle bereits einiges über den Umgang mit Speichermedien unter Linux besprochen. Im zweiten Teil dieser Artikelserie vertiefen wir die Möglichkeiten von Kommandozeilenprogrammen und schauen zum Beispiel, wie NAS-Speicher permanent in das System gemountet werden können. Aber auch Strategien, um defekte Speicher zu identifizieren, werden Thema des nächsten Teils werden. Insofern hoffe ich, euer Interesse geweckt zu haben, und würde mich über ein reichliches Teilen der Artikel von diesem Block freuen.