cryptsetup verwendet seit Version 2.1.0 das LUKS2-Format als Standard. Allerdings wollte mein Gentoo initramfs kein LUKS2-Device entschlüsseln, während LUKS1 problemlos funktionierte. Daher musste ich irgendwie meine Gentoo-Root-Partition von LUKS2 auf LUKS1 konvertieren. Der convert-Befehl in cryptsetup funktionierte nicht, weil mein Keyslot nicht luks1-kompatibel sei.

Deshalb habe ich stattdessen meine Partion verkleinert, alle Dateien auf eine neue Partition mit LUKS1 kopiert und diese Partition dann wieder vergrößert.

Als erstes muss man das Dateisystem verkleinern, dann den cryptsetup-Container und zuletzt die Partition selbst. Ich hab dies zuerst mit GParted versucht, welches alle Schritte können sollte, dieses brach aber beim cryptsetup-resize ab. Manuell gehen die Schritte wie folgt:

resize2fs -p /dev/sda1 102383616
cryptsetup --size 204767232 resize gentoo
parted /dev/sda
> resizepart 1 110GB

Im letzten Schritt habe ich die Partition etwas größer gewählt als die beiden anderen Schritte, damit wirklich genug Platz für das Dateisystem ist. Die Zahlen von resize2fs und cryptsetup stammen aus der GParted-Ausgabe, welche beim 2. Schritt abgebrochen hat.

Als nächstes erstellt man sich eine neue Partition, in welche man alle Dateien kopieren will:

fdisk /dev/sda
> n (=new partition),(Partition Number),(Start Sector),(End Sector)

Diese legt man als LUKS1 an und erstellt darin ein Dateisystem:

cryptsetup luksFormat --type luks1 --cipher aes-xts-plain64 /dev/sda2
cryptsetup open /dev/sda2 gentoo2
mkfs.ext4 /dev/mapper/gentoo2
mkdir /mnt/gentoo2
mount /dev/mapper/gentoo2 /mnt/gentoo2

Nun muss man noch alle Dateien von der alten Partition auf die neue mit rsync kopieren. Dazu habe ich folgende rsync-Einstellungen verwendet:

  • -a:
    • -r: recursive
    • -l: copy symlinks as symlinks
    • -p: copy permissions
    • -t: preserve modification times
    • -g: preserve group
    • -o: preserve owner
    • -D:
      • --devices: transfer character and block device files to the remote system
      • --specials: transfer special files such as named sockets and fifos
  • -h: human readable
  • -X: preserve extended attributes
  • -A: ACLs on target should be the same as on source
  • -v: verbose
rsync -ahXAv /mnt/gentoo/ /mnt/gentoo2/

An dieser Stelle sollte man bereits in die neue Partition booten können. In meinem Fall hat das mit LUKS1 nun problemlos funktioniert. Daher kann man nun die alte Partition bei Bedarf löschen und die neue wieder vergrößern.

I do not maintain a comments section. If you have any questions or comments regarding my posts, please do not hesitate to send me an e-mail to blog@stefan-koch.name.