Skip to content

Qubes-OS für Microsoft Surface

Ich bin großer Liebhaber von freien Betriebssystemen, idealerweise mit Open Source erstellt. Daher teste ich auch gerne mal Grenzfälle aus und bin neugierig, wie Geräte mit anderen Betriebssystemen reagieren.

Ich habe seit einiger Zeit ein Microsoft Surface Pro 8 - ich wollte was Tablet-ähnliches mit sinnvoller Tastatur und sinnvoller Shell. Windows kann sowas, aber ich wollte gerne mit Linux arbeiten.

Es scheint mehr Personen zu geben die so denken, weil Du für das Softcover (Tastatur, die auch das Display schützt) spezielle Treiber für den Linuxkernel benötigst, weil das keine Standard-USB-Tastatur ist. linux-surface ist dafür das Stichwort, für die üblichen Distributionen gibt es Pakete.

Debian kann mit Secureboot umgehen, liess sich auch gut installieren. Damit war der erste Schritt da.

Nun wollte ich aber auch Qubes-OS installieren. Qubes-OS ist eine Linux-Variante wo Du quasi nur mit virtuellen Maschinen arbeitest. Damit separierst Du Deine Arbeit und deine verschiedenen Tätigkeiten voneinander - und zwar so, das Du kontrollierst, welches Programm welche Informationen bekommt. Der Browser startet zum Beispiel in einer Umgebung die nichts weiss - der Browser kennt Deine Bookmarks, aber alles andere ist für ihn so als wäre der ganz neu installiert, und zwar bei jedem Neustart.

Auch Qubes-OS ist Open-Source, aber sie haben bei Linux viel für sich angepasst (sie arbeiten mit Xen als Host-System und erstellen dann viele verschiedene virtuelle Maschinen). Und der Treiber für das Surface-System (damit die Tastatur auch beim Starten schon funktioniert) muss für den Xen-Host bereits verwendet werden.

Das Qubes-OS-Projekt hat inzwischen auf Github einen Qubes-Builder Version 2 veröffentlicht, mit dem man seine eigene Qubes-OS-DVD erstellen kann. Da das alles mit git-Mitteln geht ist es auch einfach, das ganze selbst zu machen und zu modifizieren.

Was habe ich also gemacht?
Erst einmal auf Github das originale Qubes-OS qbuilder-v2-Repository geforkt und heruntergeladen. Dann habe ich dafür notwendige Änderungen gemacht, bei dem Paket linux-kernel-latest die Patche von Linux-Surface eingepflegt und dann die DVD erstellt.

Im Einzelnen sah das dann so aus:

im Hauptverzeichnis:

git clone https://github.com/QubesOS/qubes-builderv2
cd qubes-builderv2
git submodule update --init


in einem anderen Verzeichnis:

git clone https://github.com/linux-surface/linux-surface/
cd linux-surface/
cd patches/
ls
cd 6.4
ls
mv 00*patch ~/qubes-builderv2/artifacts/sources/linux-kernel-latest/


Das sorgt dafür, das die notwendigen Patches im Qubes-Builderv2-Tree abgelegt sind, und zwar beim Paket linux-kernel-latest.


cd ~/qubes-builderv2/artifacts/sources/linux-kernel-latest
vi series.conf


In der series.conf stehen die einzupflegenden Patches in der Reihenfolge in der sie eingepflegt werden sollen - falls es da Abhängigkeiten gibt.

Natürlich muss dem Builder noch gesagt werden, was er mit den Surface-Modulen machen soll. Ein reines einbinden reicht ja nicht - der Linux-Kernel muss mit den Modulen gebaut werden und dracut bzw. die initramfs-Umgebung muss davon wissen und es einbinden.
Dies passiert, indem man noch weitere Quellen für den Build angibt, genauer gesagt für die Linux-Utils.

Dafür muss die qubes-os-r4.2.yml in "example-configs" angepasst werden:


- linux-utils:
url: https://github.com/grince/qubes-linux-utils
- linux-kernel:
branch: stable-6.1
timeout: 21600
- linux-kernel-latest:
url: https://github.com/QubesOS/qubes-linux-kernel
branch: main
timeout: 21600
- linux-surface:
url: https://github.com/linux-surface/linux-surface
branch: main


(ich habe das linux-utils geforkt, weil ich natürlich keine Schreibrechte zu qubes-os haben möchte ;-)

Danach kann mit


qb installer init-cache all


das DVD-Image erstellt werden.