ThinkPad X1 Tablet gen 2 mit verschlüsseltem Dualboot Ubuntu + Windows 10

Hallo zusammen,

hier wurde es in letzter Zeit leider noch etwas ruhiger als sonst, daher beende ich die Funkstille hier einmal.

Ich habe nun ein neues Notebook erhalten und ich will Euch in diesem Beitrag zeigen, wie man auf diesem ein Dual Boot System einrichtet, wie man die einzelnen Betriebssysteme verschlüsselt. Dabei versuche ich möglichst weitgehend auf die vorgesehenen Installations-Tools zurückzugreifen und nur wenn das nicht geht, auf andere (grafische) Tools auszuweichen.

Windows-Installation und Updates

Als erstes wird Windows installiert. Ich denke, dazu brauche ich nicht so viele Worte zu verlieren, die Installation geht einfach per USB-Stick. Ich habe den USB-Stick der Einfachheit-halber unter Windows mit dem Open Source Tool Rufus und einer ISO-Datei von Windows 10 erstellt. Alternativ kann man diesen auch mit ein wenig Gefummel unter Linux erstellen, oder einfach die bestehende Windows Installation mit GParted verkleinern.

In der Windows Installation sollten dann zunächst mal einige Updates installiert werden, ein paar davon betreffen die Hardware. Das erfordert ein paar Neustarts. Anschließend müssen noch die Updates aus dem Tool „Lenovo Vantage“ installiert werden, welches aus dem Microsoft Store installiert wird. Mit diesem Tool gibt es noch ein paar Hardware-spezifische Updates, welche installiert werden sollten, ein paar davon erfordern Neustarts (BIOS und Tastatur).

Die Windows Installation kann auch verschlüsselt werden, allerdings ist hier unbedingt der Wiederherstellungsschlüssel aufzubewahren. Wenn Ubuntu installiert wird, werden Änderungen am Bootloader vorgenommen, was wiederum dazu führt, dass Windows (einmalig) nach dem Wiederherstellungsschlüssel verlangt. Aber auch bei späteren Updates am Bootloader kann es passieren, dass Windows wieder nach dem Wiederherstellungsschlüssel fragt.

Zuletzt sollte noch die Schnellstart-Funktion von Windows ausgeschaltet werden – sonst wird der Wechsel des Betriebssystems unnötig schwierig. Geht dazu in die Energie-Optionen, klickt auf der rechten Seite auf die erweiterten Energiefunktionen, dort wiederum auf der linken Seite auf „Was passieren soll, wenn der Netzschalter gedrückt wird“, dort in der Mitte recht weit oben auf „Einige Einstellungen stehen nicht zur Verfügung“ und zuletzt entfernt dann den Haken vor „Schnellstart“. Fragt mich jetzt bitte nicht, warum die Microsoft-Übersetzung bei „Einige Einstellungen stehen nicht zur Verfügung“ so schief gelaufen ist ^^

Kommen wir zum spannenden Part: Der verschlüsselten Installation von Ubuntu, ohne dabei Windows abzuschießen.

Ubuntu Installations-Stick vorbereiten

Zunächst muss wieder ein USB-Stick erstellt werden. Das geht unter Windows leicht mit dem Linux Live USB Creator, unter Ubuntu mit dem Startmedienersteller oder mit dem folgenden Terminal-Befehlen:

sudo umount /Pfad/zur/eingehängten/USB/Partition
sudo dd if=/Pfad/zur/Ubuntu/ISO of=/Pfad/zum/USB/Stick bs=1M
sudo sync

In meinem Fall lauteten diese 3 Zeilen:

sudo umount /dev/sdb1
sudo dd if=Downloads/ubuntu.iso of=/dev/sdb bs=1M
sudo sync

Alles kein Hexenwerk also. Der Stick wird in das ThinkPad gesteckt und anschließend gestartet – der Windows Start wird entweder per Touch auf den Bildschirm oder per Enter-Taste unterbrochen und dann per F12 der „Generic Flash Drive“ oder „USB HDD“ gestartet (im UEFI funktioniert übrigens der Stift nicht).

Verschlüsselte Partitionen vorbereiten

Dann sollte sich Ubuntu auch schon starten, wo „Try Ubuntu without installing“ ausgewählt wird. Sobald Ubuntu gestartet ist, bietet es sich an, die WLAN-Verbindung einzurichten und in den Spracheinstellungen die korrekte Sprache und die dazugehörigen Tastaturlayouts einzustellen.

Da Ubuntu im Dual-Boot-Modus keine Option anbietet, die Ubuntu Installation zu verschlüsseln, müssen wir das selbst übernehmen. Das geht aber recht einfach. Vom Prinzip her richten wir die Partitionen von Hand ein und führen dann mit Ubuntu eine normale Installation durch und wählen im Laufe des Prozesses diese Partitionen aus.

Zunächst sollte geprüft werden, wie die interne Festplatte eigentlich heißt. Dies kann mit dem Tool „Laufwerke“ festgestellt werden. Wichtig ist hier der Eintrag unter Gerät (in meinem Fall /dev/nvme0n1p1 usw.). Die Standard-Windows-Installation erstellt 4 Partitionen, wobei die vierte Partition die eigentliche Windows Partition ist.

Für Ubuntu werden zwei weitere Partitionen benötigt. Starte nun das Programm GParted und prüfe, ob die richtige Festplatte ausgewählt ist (rechts oben). Dann lege noch 2 weitere Partitionen an:

  • 500 MiB Partition vom Typ „ext4“ – das wird dann später die Boot-Partition für Ubuntu.
  • Rest Partition vom Typ „luks encrypted“ oder „unformated“ – hier wird dann Ubuntu installiert. Diese Partition muss im nächsten Schritt noch verschlüsselt werden, bevor die Ubuntu Installation gestartet wird.

Die erstellten Partitionen können auch benannt werden, um diese dann später leichter zu identifizieren, bspw. kann man die Boot-Partition „ubuntuBoot“ nennen.

Die Verschlüsselung der Ubuntu Partition erfolgt im Terminal. Gib dazu die folgenden Befehle nacheinander ein. Achte darauf, auch die Festplattenbezeichnungen anzupassen!

sudo cryptsetup luksFormat /dev/nvme0n1p6

Hierbei muss ein Passwort vergeben werden. Verwendet am besten keine Zeichen, welcher auf einer englischen Tastatur an anderer Stelle zu finden sind – das könnte sonst Booten zu Schwierigkeiten führen.

Anschließend wird die neu angelegte Verschlüsselung zur weiteren Verwendung geöffnet:

sudo cryptsetup luksOpen /dev/nvme0n1p6 ubuntuCrypt

„ubuntuCrypt“ ist dabei der Bezeichner für den geöffneten Verschlüsselungscontainer. Der Bezeichner ist beliebig, wird aber im weiteren Prozedere verwendet – passe ggf. die Befehle auch dahingehend an.

Mit den nächsten beiden Befehlen werden zwei Abstraktionsebenen erstellt, welche für eine spätere Änderung des Dateisystems ermöglichen. Diese sind aber nicht optional, sondern vom Format vorgegeben.

sudo pvcreate /dev/mapper/ubuntuCrypt
sudo vgcreate ubuntuPool /dev/mapper/ubuntuCrypt

„ubuntuPool“ ist wieder ein Bezeichner, welcher beliebig vergeben werden kann, und im weiteren Prozess verwendet wird.

Anschließend werden die letzten zwei Partitionen erstellt – Swap und die eigentliche Ubuntu Partition. Beide Partitionen werden im verschlüsselten Container angelegt. Zur Frage, wie groß Swap sein sollte, wurden ganze Bücher geschrieben – das hängt ganz vom Anwendungszweck ab. Ich habe hier 16 GB für Swap reserviert.

sudo lvcreate -L 16G -n swap ubuntuPool
sudo lvcreate -l 100%FREE -n root ubuntuPool

„100%FREE“ vergibt den letzten freien Speicherplatz an die root-Partition. Genauso könnte man an dieser Stelle noch weitere Partitionen anlegen für /home, /var, /tmp etc.

Die Partitionen müssen noch formatiert werden:

sudo mkswap /dev/mapper/ubuntuPool-swap
sudo mkfs -t ext4 /dev/mapper/ubuntuPool-root

Nun kann die Ubuntu-Installation gestartet werden!

Ubuntu installieren

Der Installationsprozess läuft nahezu identisch ab wie eine normale Ubuntu-Installation.

Nur beim Schritt zur Auswahl des Installationsziels bzw. ob Ubuntu neben Windows installiert werden soll etc. muss für die Installation „Etwas anderes“ ausgewählt werden. Nach einem Klick auf „Weiter“ gelangt man zu einer Auflistung aller gefundenen Laufwerke und möglicher Installationsorte. Dort müssen die folgenden Einstellungen vorgenommen werden:

  • Die vorhin als Boot-Partition angelegte Partition muss den Einhängepunkt „/boot“ erhalten, kann auch als „Boot“ benannt werden. Bei meiner Konfiguration hieß die Partition /dev/nvme0n1p5
  • Die virtuelle Partition /dev/mapper/ubuntuPool-swap muss als Swap-Partition markiert werden.
  • Die virtuelle Partition /dev/mapper/ubuntuPool-root muss als Einhängepunkt „/“ erhalten, kann auch als „root“ benannt werden.

Hier können auch noch weitere Partitionen eingehängt werden, falls diese vorhin erstellt wurden. Die Windows-Partitionen sollten nicht angerührt werden, dass kann ggf. dazu führen, dass Windows nicht mehr ordentlich bootet.

Der Bootloader muss auf Laufwerksebene installiert werden – in meinem Fall also /dev/nvme0n1.

Dann kann die Installation wie geplant fortgesetzt werden. Bei Mehrbenutzer-Systemen empfiehlt es sich auch, den Benutzeraccount nochmal separat zu verschlüsseln (über das Installationsprogramm), damit die eigenen Daten auch bei einer Privilege Escalation geschützt bleiben.

Wenn die Meldung kommt, dass Ubuntu fertig installiert sei, unbedingt auf „Weiter ausprobieren“ klicken und nicht auf „Neustarten“. Falls das doch im Affekt passiert ist das auch erstmal kein Problem – boote erneut vom Stick und führe den „cryptsetup luksOpen“-Befehl von oben erneut aus und fahre mit den nächsten Schritten fort.

Installationsnachbereitungen

Die Ubuntu-Installation weiß noch nichts von ihrem Glück, verschlüsselt zu sein, dass muss noch konfiguriert werden. Dafür werden die ganzen Partitionen so eingebunden, wie sie auch im „richtigem“ System sein sollen, und es werden noch ein paar Programme installiert und Einstellungen vorgenommen.

Zunächst werden die Partitionen unter /mnt eingebunden. Prüft vorher nochmal über das Programm „Laufwerke“, wie die Pfade für einzelnen Partitionen lauten. In diesem Prozess wird auch der Pfad für das Windows EFI-Laufwerk benötigt!

sudo mount /dev/mapper/ubuntuPool-root /mnt
sudo mount /dev/nvme0n1p5 /mnt/boot
sudo mount /dev/mapper/nvme0n1p2 /mnt/boot/efi 
sudo mount -o rbind /dev /mnt/dev
sudo mount -t proc /proc /mnt/proc
sudo mount -t sysfs /sys /mnt/sys
sudo mount -o rbind /run/lvm /mnt/run/lvm
sudo mount -o rbind /run/lock/lvm /mnt/run/lock/lvm

Dann wird noch schnell die DNS-Datei ins neue System kopiert und anschließend per „chroot“ ins neue System kopiert.

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
sudo chroot /mnt /bin/bash

Nun im neuen System sollte noch eventuell nicht vorhandene Programme nachinstalliert:

apt install cryptsetup lvm2

Dann ergänzt man noch die verschlüsselte Partition in der Datei /etc/crypttab. Per blkid wird die UUID der Partition ausgelesen…

blkid /dev/nvme0n1p6

… und ohne Anführungszeichen per folgendem Befehl in die Datei /etc/crypttab ergänzt.

echo "ubuntuCrypt UUID=[Hier UUID ohne Anführungszeichen eintragen] none luks" >> /etc/crypttab

Außerdem sollte noch das notwendige Modul für die Entschlüsselung beim Systemstart geladen werden…

echo "dm-crypt" >> /etc/modules

… und das Initramfs aktualisiert werden:

update-initramfs -u -k all

Zuletzt muss noch GRUB angepasst werden, damit es das verschlüsselte System auch korrekt öffnen kann:

nano /etc/default/grub

# Die folgende Zeile...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

# wie folgt ergänzen
GRUB_CMDLINE_LINUX_DEFAULT="kopt=root=/dev/mapper/ubuntuPool-root quiet splash"

Aus dem Nano-Editor entkommt man wieder per STRG+X. Immer auch die Bezeichnungen für die Laufwerke anpassen, wenn diese bei Dir anders lauten.

Nun noch GRUB aktualisieren lassen:

update-grub

Fertig! Nun kann das installierte System verlassen werden, alle Laufwerke ausgehängt und neu gestartet werden.

# Das Installationssystem verlassen
exit

# Abwarten, dass alle Daten geschrieben wurden
sudo sync

# Gemountete Laufwerke wieder entfernen
sudo umount /mnt/run/lvm
sudo umount /mnt/run/lock/lvm
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot/efi
sudo umount /mnt/boot
sudo swapoff -a

# Neustarten
reboot

Beim Booten erscheint nun das GRUB-Menü, in welchem man zwischen Ubuntu und Windows wählen kann. Bei einem verschlüsseltem Windows wird nun nach dem Wiederherstellungsschlüssel gefragt, ansonsten ist wie gewohnt nutzbar. Beachte beim Ubuntu-Start, dass bei der Verschlüsselungskennwort-Eingabe das englische Tastaturlayout eingestellt ist und erst später auf das deutsche Layout gewechselt wird.

Update, 12.10.2018, mit Ubuntu 18.10:

Ich habe mich mal rangesetzt und meinen Rechner neu aufgesetzt (zwischenzeitlich mit KDE rumgespielt, weil die eine bessere Unterstützung für HiDPI Displays haben), nun allerdings mit Ubuntu 18.10 – Fazit: Im Wesentlichen hat sich am Prozess nichts geändert, allerdings kann man nun den persönlichen Ordner nicht mehr über die Standardinstallation verschlüsseln lassen – ärgerlich!

Windows hat zwischenzeitlich eine weitere Partition angelegt, weswegen ich die Schritte selbst für meinen eigenen Rechner anpassen musste – prüft daher immer, wie die jeweiligen Bezeichnungen lauten!

One thought to “ThinkPad X1 Tablet gen 2 mit verschlüsseltem Dualboot Ubuntu + Windows 10”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.