Betriebssysteme

GrapheneOS

9. November 2022 · Betriebssysteme · andreas · Kein Kommentar

Seit dem unrühmlichen Ende meines Nexus 5X war hier ein gebrauchtes Google Pixel der ersten Generation mit dem Betriebssystem LineageOS im Einsatz.

LineageOS ist zwar im Hinblick auf Datensparsamkeit ein Schritt in die richtige Richtung, in Sachen Sicherheit aber leider nicht mehr als ein Kompromiss: oft ist nicht klar, ob und wie vollständig Sicherheitspaches in das System integriert werden (dies variiert von Gerät zu Gerät und dem jeweiligen Maintainer) und auf Grund fehlender Quellcodes für die Blobs bleiben Teile des Systems nach Ende der offiziellen Wartung zwangsweise ungepatcht. Dazu kommt noch ein gravierender Nachteil: nach der Installation muss der Bootloader offen bleiben - das Smartphone sollte anschließend nach Möglichkeit nicht mehr aus den Augen gelassen werden, denn das Aufspielen eines Patchs oder Abziehen der Daten am Betriebssystem vorbei ist - je nach installierter Recovery - für einen Angreifer nur wenige Schritte entfernt.

Nachdem Google den 23. Geburtstag mit entsprechenden Rabatten feierte, rutschte der Preis des Pixel 4a in annehmbare Regionen. Bei dem Gerät handelt es sich um das bisher letzte Hosentaschengerät von Google, welches mit 5,8"-Bildschirm und mit dem Pixel fast identischen Gehäusemaßen (0,2 mm länger, dafür 0,1 mm schmaler) eine problemlos tragbare Alternative darstellt.

Google Pixel 4a mit GrapheneOS

Nach wenigen Wochen mit dem Oiginalbetriebssystem von Google war klar: es ist zwar schön, was Google so alles an Komfortfunktionen bereitstellt, aber einen Großteil davon bezahlt man mit einem permanenten Daten(ab)fluss und es bleibt das Gefühl, permanent eine Wanze mit sich herumzutragen, die “Ich weiß, was Du letzten Sommer getan hast” besser beantworten kann, als man selbst. Somit ging die Suche nach einem alternativen Betriebssystem los, das nach Möglichkeit auch bessere Sicherheitsfeatures bieten sollte, als LineageOS.

Dank entsprechender Artikel des auf Sicherheit folussierten Blogs von Mike Kuketz endete die Suche bei GrapheneOS:

GrapheneOS ist ein auf Sicherheit und Datenschutz ausgerichtetes Open-Source-Betriebssystem mit Android-App-Kompatibilität.

Alle Komponenten, die für die Android-Basiskompatibilität nicht erforderlich sind, werden nicht integriert. GrapheneOS basiert demnach auf dem Android Open Source Project (AOSP), erweitert dieses aber um Funktionen und Maßnahmen, die die Sicherheit und den Datenschutz verbessern. [Quelle]

Der starke Fokus auf Sicherheit und Datenschutz zeigt sich in vielen Details: der Bootloader kann und soll nach Installation wieder geschlossen werden; WiFi und Bluetooth können systemseitig gestoppt werden, wenn für einen einstellbaren Zeitraum keine Verbindung (mehr) besteht; Systemupdates (sowohl Sicherheitsaktualisierungen als auch Versionsupdates) erscheinen teilweise früher als sie für die Google-Geräte verfügbar sind und genau wie beim System aus Mountain View reicht ein Neustart, um in das aktualiserte System zu wechseln. Auch ansonsten gibt es viele durchdachte Details, wie z.B. den eigenen App-Store, über den einige Graphene OS-eigene Apps installier- und aktualisierbar sind und auch die Möglichkeit, den Portal-Check beim Neuverbinden auf Graphene OS- statt der Google-Server umzustellen. Zum Surfen gibt es einen eigenen, auf Chromium basierenden Browser mit stets aktualisertem Webview.

Sofern man über einen Fehler stolpert, kann dieser im projekteigenen Github-Issue-Tracker gemeldet werden und zumindest die eigene Erfahrung zeigt, daß sich auch zeitnah jemand kümmert. Eine deutlich angenehmere Erfahrung als meine Fehlermeldung bei Google bzgl. der Funkverbindung meines “Nexus 4”, zu der ich wohl auch inzwischen keine Reaktion oder einen Fix mehr erwarten darf.

Als Alleinstellungsmerkmal bietet Graphene OS an, über den eigenen App-Store sogenannte “Sanboxed Google Services” zu installieren, also die Google eigenen Dienste inklusive PlayStore nachzuinstallieren. Diese laufen dann aber nicht - wie beim Originalsystem - mit Systemrechten somit fast uneingeschränktem Zugriff, sondern laufen nur mit den Rechten einer “normalen” App, was die Zugriffsmöglichkeiten deutlich einschränkt.

Mein Nutzungsprofil unterscheidet sich wahrscheinlich deutlich von dem der meisten Smartphone-Nutzer: ich verwende das Gerät hauptsächlich zum Telefonieren und als tragbaren Kalender und Kontaktverwaltung. Instant Messenger - egal, ob sie Signal, Threema oder WhatsApp heißen - sind bei mir nicht installiert, ich fand solche Dienste schon zu Zeiten von ICQ absolut überflüssig.

Die “Sanboxed Google Services” sind bei mir mangels Bedarf nicht installiert. Als Appstore kommt neben dem Graphene OS-eigenen lediglich F-Droid zum Einsatz, welcher eine ganze reihe frei verfügbarer, quelloffener Apps bündelt:

  • DAVx5: Synchronisation von Kontakten und Kalendereinträgen mit der Nextcloud-Instanz

  • Gadgetbridge: Companion-App zur Verbindung von Smartwatches wie z.B. der Pebble2 mit dem Smartphone

  • KeepassDX: hat nach einigen Jahren auf Grund erweiterter Funktionalität das bisher installierte KeepassDroid ersetzt

  • K-9 Mail: wenn auch zwischenzeitlich etwas angestaubt, ist K-9 Mail seit meinen ersten Schritten auf Android ein zuverlässiger Begleiter, mit dem ankommende Mails zumindest gelesen werden

  • Music Player GO: die Auswahl an Musikplayern ist riesig, aber viele davon werden nur mäßig bis gar nicht geplegt. Der “Music Player Go” ist schlank, erhält regelmäßig Updates und sieht gut aus

  • Nextcloud, Nextcloud News und Nextcloud Notizen: Kontakte, Kalender und Notizen werden über eine Nextcloud-Instanz synchronisiert

  • OpenTracks: ideal, um ab und an eine Wanderung oder eine Radtour mitzutracken. Keine GPS-Daten, die in Richtung Cloud wandern, sondern auf dem Gerät bleiben

  • Privacy Browser: auf dem System-Webview aufsetzende Browseroberfläche, welche bereits einige Filterlisten eingebaut hat und domänenspezifische Konfigurationseinstellungen (Javascript, Cookies, User Agent, …) mitbringt

  • Schlichter Kalender: eine der sog. “schlichten Apps”, die funktional hochwertig und ohne Werbung sind

Auch wenn sich Graphene OS für den Produktiveinsatz uneingeschränkt eignet, so ist eine Baustelle anfangs irritierend: alle neu hinzugefügten (oder geänderten) Einstellungsmöglichkeiten und Apps sind zum aktuellen Zeitpunkt ausschließlich in englischer Sprache erhältlich, was sich stellenweise seltsam anfühlt. Auch wären ein paar zusätzliche Konfigurationsmöglichkeiten, wie z.B. den Eintrag eines privaten Portalservers zum “Internet Connectivity Check” wünschenswert. Aber das sind letztendlich Wohlfühl-Detailverbesserungen an einem ansonsten hervorragenden Produkt.


Einstellungen mit dconf sichern

27. Oktober 2022 · Betriebssysteme · andreas · Kein Kommentar

Während viele Programme ihre Einstellungen in Konfigurationsdateien speichern, verwenden andere die Kombination aus dconf/GSettings, um die Einstellungen in der zentralen GNOME-Konfigurationsdatenbank abzulegen.

Das Sichern der vorhandenen Einstellungen kann auf der Kommandozeile mit dconf erledigt werden, hier am Beispiel von Tilix:

$ dconf dump /com/gexperts/Tilix/ > tilix_settings.dconf

Das Ergebnis des Befehls ist eine Textdatei “tilix_settings.dconf”, welche editiert, kopiert und bei Bedarf auch wieder zurückimportiert werden kann

$ dconf load /com/gexperts/Tilix/ < tilix_settings.dconf

Windows-Drucker mit PowerShell anhalten

23. September 2022 · Betriebssysteme · andreas · Kein Kommentar

Um einen Drucker unter Windows anzuhalten, genügt ein PowerShell-Befehl, welcher als Administrator ausgeführt werden muss:

PS C:\> (Get-WmiObject Win32_Printer -Filter "Name='Microsoft Print to PDF'").Pause()

Um den “Angehalten”-Zustand wieder aufzuheben, muß lediglich “Pause” durch “Resume” ersetzt werden:

PS C:\> (Get-WmiObject Win32_Printer -Filter "Name='Microsoft Print to PDF'").Resume()

Als Parameter benötigt wird der Name des Druckers, im Beispiel “Microsoft Print to PDF” - der interessanterweise auch im Zustand “Angehalten” weiterhin direkt PDFs erzeugt.


Kernel aus Backports installieren

21. Juli 2022 · Betriebssysteme · andreas · Kein Kommentar

Je nach verwendeter Hardware fehlt mit ein bißchen Pech im Kernel der Debian-Stable-Version altersbedingt die Unterstützung für einige Hardware-Komponenten.

Das aktuelle Debian Bullseye verwendet standardmäßig den Kernel 5.10

$ uname -a
Linux *** 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux

Glücklicherweise gibt es als einfache und Distributions-konforme Lösung für solche Fälle das Backports-Repository:

Backports are packages taken from the next Debian release (called “testing”), adjusted and recompiled for usage on Debian stable. Because the package is also present in the next Debian release, you can easily upgrade your stable+backports system once the next Debian release comes out. [Quelle]

Die Backports bieten die Möglichkeit, mit Hilfe der gewohnten Paketverwaltung - sofern bereitgestellt - auf eine neuere Version eines Pakets zu aktualisieren, ohne dabei ein Franken-Debian zu erschaffen.

Als erstes müssen, sofern dies nicht bei der Installation des Systems bereits angewählt wurde, die Backports in der Datei “/etc/apt/sources.list” ergänzt werden:

# bullseye-backports, previously on backports.debian.org
deb http://deb.debian.org/debian/ bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-backports main contrib non-free

Dann kann man sich nach einem “apt update” auf die Suche nach einem passenden Kernel machen:

$ sudo apt search linux-image
Sortierung… Fertig
Volltextsuche… Fertig
...
linux-image-5.10.0-11-amd64/stable-security 5.10.92-2 amd64
Linux 5.10 for 64-bit PCs (signed)
...
linux-image-5.18.0-0.bpo.1-amd64/bullseye-backports 5.18.2-1~bpo11+1 amd64
Linux 5.18 for 64-bit PCs (signed)
...

In der Liste werden alle Kernel-Versionen angezeigt, die installiert werden können, i.d.R. ist die Version mit möglichst wenigen Zusätzen im Namen die richtige:

$ sudo apt install linux-image-5.18.0-0.bpo.1-amd64/bullseye-backports
...
Version »5.18.2-1~bpo11+1« (Debian Backports:bullseye-backports [amd64]) für »linux-image-5.18.0-0.bpo.1-amd64« gewählt.
...
Die folgenden NEUEN Pakete werden installiert:
  linux-image-5.18.0-0.bpo.1-amd64
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Nach erfolgreicher Installation reicht ein Neustart, um mit dem aktualisierten Kernel zu starten.

$ uname -a
Linux *** 5.18.0-0.bpo.1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.2-1~bpo11+1 (2022-06-14) x86_64 GNU/Linux

Im GRUB-Menü kann jederzeit wieder der bisher verwendete Kernel gestartet werden und falls der neue Kernel wieder entfernt werden soll, reicht ein einfaches “sudo apt purge …”, um die Installation rückgängig zu machen.


Festplatte einer virutellen Linux-Maschine vergrößern

15. Juni 2022 · Betriebssysteme · andreas · Kein Kommentar

Wenn die Festplatte einer virtuellen Maschine volläuft, so kann im Gegensatz zu physikalischen Rechnern das Problem meist recht einfach behoben werden. Etwas spannender wird es, wenn die virtuelle Festplatte partitioniert ist und bei der Erweiterung eine andere Partition im Weg ist:

$ sudo fdisk -l /dev/sda
Disk /dev/sda: 30,18 GiB, 32408698880 bytes, 63298240 sectors
Disk model: VBOX HARDDISK   
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: 0xf3f6188b

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 61296639 61294592 29,2G 83 Linux
/dev/sda2       61298686 63297535  1998850  976M  5 Extended
/dev/sda5       61298688 63297535  1998848  976M 82 Linux swap / Solaris

Das oben stehende Beispiel zeigt eine solche Situation: die eigentliche Daten- bzw. Betriebssystempartition “/dev/sda1” kann nicht einfach vergrößert werden, da die erweiterte Partition “/dev/sda2” mit der darin enthaltenen Swap-Partition “/dev/sda5” direkt anschließend auf dem Datenträger liegt.

Weiterlesen