Die ursprünglichen Schritte waren größtenteils korrekt, aber aus irgendeinem Grund endete ich mit einer korrupten Initrd. Nachfolgend sind alle Schritte zusammengefasst, die zu einem Arbeitsszenario für alle führen sollten, die daran interessiert sind, dasselbe zu tun:
- Erstellen Sie eine virtuelle Maschine wie gewünscht.
- Installieren Sie Linux mit dem gewünschten Partitionslayout und nehmen Sie alle gewünschten Änderungen vor. In diesem Fall besteht sie aus einer BTRFS-Bootpartition und einer LUKS-verschlüsselten BTRFS-Rootpartition. Andere Layouts sollten funktionieren, wenn darauf geachtet wird, dass Referenzen während der Übertragung ordnungsgemäß aktualisiert werden.
- Starten Sie die vorherige VM mit einem Linux-Live-ISO, damit Sie offline auf das installierte System zugreifen können.
- Schließen Sie ein USB-Flashlaufwerk für die Übertragung an die VM an. (Hinweis: Sie können ein
dd
Image des installierten Laufwerks erstellen und außerhalb der VM speichern, das Sie dann von einem normalen Linux-System aus verwenden können.) - Bereiten Sie die Flash-Laufwerkpartitionen vor.
- Option:
dd
Das Originalbild auf das Flash-Laufwerk und mit Schritt 7, dann mit Schritt 10 fortfahren. (Hinweis: In meinem Fall war es notwendig, die Partitionen aus einem unbekannten Grund neu zu erstellen, bei demblkid
die UUID des Bootes nicht aufgelistet werden konnte BTRFS-Partition.) - Option: Erstellen Sie neue Partitionen mit denselben UUIDs wie die ursprünglichen. Angenommen
/dev/sda1
für boot und/dev/sda2
für root.- Für BTRFS-Bootpartition:
sudo mkfs.btrfs -f -L BOOT -U <original UUID> /dev/sda1
- Für LUKS-Root-Partition:
sudo cryptsetup --uuid=<original UUID> luksFormat /dev/sda2
- Map-Root-Partition:
sudo cryptsetup --allow-discards open --type luks /dev/sda2 flash_luks
- Wurzel mit BTRFS formatieren:
sudo mkfs.btrfs -f -L ROOT -U <original UUID> /dev/mapper/flash_luks
- Für BTRFS-Bootpartition:
- Option: Erstellen Sie neue Partitionen mit neuen UUIDs. Wiederholen Sie die gleichen Schritte wie bei Option 2, entfernen Sie jedoch Argumente, die sich auf UUID / uuid beziehen. Beachten Sie die neuen UUIDs mit
sudo blkid
.
- Option:
- Mounten Sie die ursprünglichen Bildpartitionen.
- Erstellen Nur - Lese-Loop-Back - Geräte für jede Partition:
sudo kpartx -ar <flash dd image file>
. Angenommen, kpartx hängt an loop0 an. - Erstellen Sie Verzeichnisse für Einhängepunkte:
sudo mkdir -p /media/orig_boot /media/orig_root
- Stiefel:
sudo mount -r /dev/mapper/loop0p1 /media/orig_boot
- Wurzel-LUKS:
sudo cryptsetup -r open --type luks /dev/mapper/loop0p2 orig_luks
- Wurzel:
sudo mount -r /dev/mapper/orig_luks /media/orig_root
- Erstellen Nur - Lese-Loop-Back - Geräte für jede Partition:
- Mounten Sie Flash-Laufwerkpartitionen. Vorausgesetzt
/dev/sda1
für den Start.- Erstellen Sie Verzeichnisse für Einhängepunkte:
sudo mkdir -p /media/flash_boot /media/flash_root
- Stiefel:
sudo mount -t btrfs -o nodiratime,noatime,compress=zlib,discard,ssd,space_cache /dev/sda1 /media/flash_boot
- Root (vorausgesetzt, es wurde bereits früher mit cryptsetup abgebildet):
sudo mount -t btrfs -o relatime,compress=zlib,discard,ssd,space_cache /dev/mapper/flash_luks /media/flash_root
- Erstellen Sie Verzeichnisse für Einhängepunkte:
- Inhalt kopieren:
- Stiefel:
sudo rsync -aEXS --progress /media/orig_boot/ /media/flash_boot
- Wurzel:
sudo rsync -aEXS --progress /media/orig_root/ /media/flash_root
- Stiefel:
- Hängen Sie das Originalbild ab.
- Wurzel:
sudo umount /media/orig_root
- Wurzel-LUKS:
sudo cryptsetup close orig_luks
- Stiefel:
sudo umount /media/orig_boot
- kpartx:
sudo kpartx -d <flash dd image file>
- Wurzel:
- Chroot in Flash-Laufwerk.
- Binden
/sys
:sudo mount --bind /sys /media/flash_root/sys
- Binden
/dev
:sudo mount --bind /dev /media/flash_root/dev
- Binden
/dev/pts
:sudo mount --bind /dev/pts /media/flash_root/dev/pts
- Binden
/proc
:sudo mount --bind /proc /media/flash_root/proc
- Boot aushängen:
sudo umount /media/flash_boot
- Remount in root:
sudo mount -t btrfs -o relatime,compress=zlib,discard,ssd,space_cache /dev/sda1 /media/flash_root/boot
- Chroot:
sudo chroot /media/flash_root
- Binden
- Aktualisieren
/etc/fstab
.- Startlinie:
UUID=<btrfs boot uuid> /boot btrfs nodiratime,noatime,compress=zlib,discard,ssd,space_cache 0 2
- Grundlinie:
UUID=<btrfs root uuid> / btrfs nodiratime,noatime,compress=zlib,discard,ssd,space_cache 0 1
- Startlinie:
- Update
/etc/crypttab
:flash_luks UUID=<luks root uuid> none discard,luks
- Installieren
btrfs-tools
(falls nicht installiert):sudo apt-get install btrfs-tools
- Aktualisieren Sie die Startsachen.
- Initrd (verwendet fstab / crypttab, um zu entscheiden, was vor dem Mounten benötigt wird, und beim Booten das LUKS-Kennwort
sudo update-initramfs -u -k all
einzugeben ): (Hinweis: Sie können alle initrds mit neu erstellensudo update-initramfs -c -k all
, aber ich habe es nicht versucht, um sicher zu gehen.) - Grub (verwendet fstab zum Aktualisieren der Kernel-Startoptionen und zum Einhängen korrekter Partitionen):
sudo update-grub
- Installiere grub in MBR (vorausgesetzt
/dev/sda
):sudo grub-install --recheck /dev/sda
- Ausgang chroot:
exit
- Initrd (verwendet fstab / crypttab, um zu entscheiden, was vor dem Mounten benötigt wird, und beim Booten das LUKS-Kennwort
- Unmount alles
sudo umount /media/flash_root/boot
sudo umount /media/flash_root/proc
sudo umount /media/flash_root/dev/pts
sudo umount /media/flash_root/dev
sudo umount /media/flash_root/sys
sudo umount /media/flash_root
sudo cryptsetup close flash_luks