Unter Ubuntu 16.04 gelang es mir, die Root-Partition nach der Installation zu verschlüsseln, wobei die Root-Partition alles außer / boot enthielt. Ich lege / boot auf einem separaten entfernbaren USB. Insbesondere habe ich dies vor dem Upgrade auf Ubuntu 18 getan, und das Upgrade funktionierte auf der verschlüsselten Festplattenversion einwandfrei.
Die Verschlüsselung wurde nicht "an Ort und Stelle" durchgeführt, was für mich in Ordnung war, da ich die Arbeitsversion sowieso nicht überschreiben wollte, bis das neue Setup funktionierte.
Das korrekte Verfahren ist äußerst einfach und schnell durchzuführen. (Obwohl es sehr zeitaufwändig war, das richtige Verfahren herauszufinden, da ich einigen falschen Hinweisen gefolgt bin.)
GLIEDERUNG
- Erstellen Sie ein Live-Linux-USB-Laufwerk - es ist praktisch, die Persistenz zu aktivieren. Booten Sie auf diesem Live-USB-Laufwerk.
- Erstellen Sie eine luks-verschlüsselte Volume-Gruppe auf einer leeren Partition. (In meinem Fall befand es sich auf demselben Datenträger wie das ursprüngliche Linux, es könnte sich jedoch auch um einen anderen Datenträger handeln.) Erstellen Sie / (root) und tauschen Sie logische Volumes auf dieser verschlüsselten Partition aus. Diese fungieren für das kopierte Linux als virtuelle Partitionen.
- Kopieren Sie die Dateien vom alten Stamm in den neuen Stamm.
- Richten Sie einen anderen USB-Stick als Wechseldatenträger ein und partitionieren Sie ihn.
- Richten Sie einige Dateien im neuen Stammverzeichnis ein, zaubern Sie und chrooten Sie in das neue Stammverzeichnis und installieren Sie dann grub von der neuen chroot-Stammumgebung auf der Bootdiskette.
EINZELHEITEN
1 - Booten Sie mit einem Live-Linux-USB-Laufwerk. Es ist praktisch, die Persistenz zu aktivieren.
Installierte Ubuntu 16 auf einem USB mit Unetboot. Über die GUI kann "Persistenz" angegeben werden. Es ist jedoch ein weiterer Schritt erforderlich, um die Persistenz zum Funktionieren zu bringen. Ändern Sie dies /boot/grub/grub.cfg
, um --- persistent
Folgendes hinzuzufügen :
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
initrd /casper/initrd
}
Booten Sie mit dem Live-USB
2- Erstellen Sie eine luks-verschlüsselte Volume-Gruppe auf einer leeren Partition. Erstellen Sie / (root) und tauschen Sie logische Volumes auf dieser verschlüsselten Partition aus.
Angenommen, die nicht verwendete zu verschlüsselnde Partition ist /dev/nvme0n1p4
.
Optional möchten Sie vor der Verschlüsselung und Formatierung verbergen , wenn Sie alte Daten auf der Partition haben, können Sie zufällig wischen Sie die Partition. Siehe Diskussion hier .
dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress
Richten Sie die Verschlüsselung ein.
cryptsetup -y -v luksFormat /dev/nvme0n1p4
Sie werden aufgefordert, ein Passwort festzulegen.
cryptsetup luksOpen /dev/nvme0n1p4 crypt1
Sie werden aufgefordert, das Passwort einzugeben. Beachten Sie, dass dies crypt1
ein beliebiger vom Benutzer festgelegter Name ist. Erstellen Sie nun die Volumes und das Format.
pvcreate /dev/mapper/crypt1
vgcreate crypt1-vg /dev/mapper/crypt1
lvcreate -L 8G crypt1-vg -n swap
mkswap /dev/crypt1-vg/swap
lvcreate -l 100%FREE crypt1-vg -n root
mkfs.ext4 /dev/crypt1-vg/root
Verwenden Sie diese Dienstprogramme, um die Volumes anzuzeigen und die Hierarchie zu verstehen.
pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1
3- Kopieren Sie Dateien von der alten Wurzel zur neuen Wurzel
mkdir /tmp/old-root
mount /dev/ubuntu-vg/root /tmp/old-root/
mkdir /tmp/new-root
mount /dev/crypt1-vg/root /tmp/new-root/
cp -a /tmp/old-root/. /tmp/new-root/
umount /tmp/old-root
umount /tmp/new-root
cp -a ...
kopiert im Archivmodus, wobei alle Dateimodi und Flags erhalten bleiben.
4- Richten Sie einen anderen USB-Stick als Wechseldatenträger ein und partitionieren Sie ihn.
Ich habe dafür gparted verwendet. Richten Sie zwei Partitionen ein. Die erste Partition ist vfat
die zweite ext2
. Jede war 512 MB, Sie könnten mit weniger davonkommen. Gerät annehmen /dev/sdf
.
# The first partition: (will be /dev/sdf1)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: fat32
Label: (leave)
# The second partition: (will be /dev/sdf2)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: ext4
Label: (leave)
5- Richten Sie einige Dateien im neuen Stammverzeichnis ein, zaubern Sie und chrooten Sie in das neue Stammverzeichnis und installieren Sie dann grub auf der Bootdiskette aus der chroot-Umgebung für das neue Stammverzeichnis.
Suchen Sie einige UUIDs für die spätere Verwendung. Beachten Sie die Ausgaben der folgenden Befehle:
blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4
Hängen Sie die Root-Partition und die Boot-Partitionen ein
sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi
Richten Sie die Datei ein /mnt/etc/fstab
/dev/mapper/crypt1--vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/crypt1--vg-swap none swap sw 0 0
UUID=[uuid of /dev/sdf2] /boot ext2 defaults 0 2
UUID=[uuid of /dev/sdf1] /boot/efi vfat umask=0077 0 1
Wobei "[uuid of ...]" nur eine Buchstaben-Zahlen-Bindestrich-Kombination ist.
Erstellen Sie die Datei /mnt/etc/cryptab
# <target name> <source device> <key file> <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root
Ein bisschen Magie ist erforderlich, um in die Root-Verzeichnis-Umgebung zu gelangen:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt
Richten Sie nun das Boot-USB-Laufwerk ein mit grub
:
apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub
Jetzt sollten Sie in der Lage sein, mit der neu erstellten USB-Bootdiskette neu zu starten und zu booten.
Fehlersuche-
(a) Das Netzwerk muss für den apt install --reinstall grub-efi-amd64
Befehl verbunden sein. Wenn das Netzwerk verbunden ist, DNS jedoch fehlschlägt, versuchen Sie es
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
(b) Vor dem Aufruf initramfs
muss die vmlinuz...
im ursprünglichen Linux verwendete aktuelle Datei im neuen Stammverzeichnis vorhanden sein. Wenn nicht, finden Sie es und platzieren Sie es dort.
(c) Der grub-install
Befehl durchsucht standardmäßig alle anderen Linux-Festplatten, die er findet, auch wenn sie nicht mount
bearbeitet wurden, und legt sie im Boot-Menü auf dem neuen Boot-USB ab. In der Regel ist dies nicht erwünscht. Sie können dies vermeiden, indem Sie diese Zeile hinzufügen zu /boot/default/grub.cfg
:
GRUB_DISABLE_OS_PROBER=true
HINWEIS:
Eine Textdatei mit dem Verschlüsselungsschlüssel kann zum entfernbaren Boot-USB hinzugefügt werden.