Tak mám málo místa na šifrovaném disku…

Aneb příběh o tom, jak jsem migroval systém na větší šifrovaný disk, zachoval všechna data, přepsal si pár názvů volume groupů a trochu se zapotil s GRUBem. Pokud vás podobné dobrodružství čeká, tenhle článek vás provede cestou krok za krokem.

1. Příprava bootovacího média

Nejdřív je potřeba vytvořit bootovací USB s live Linuxem (doporučuju třeba Kubuntu nebo Debian Live). Na to můžete použít třeba balenaEtcher, Rufus nebo dd:

sudo dd if=kubuntu.iso of=/dev/sdX bs=4M status=progress oflag=sync

Po nabootování live systému nezapomeňte připojit Wi-Fi nebo síť a otevřít terminál.

2. Připojení disků a kontrola UUID

Doporučuju otevřít si dva terminály. V jednom budete zadávat příkazy, v druhém mít otevřený výpis disků a UUID:

sudo lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
sudo blkid

Pomocí těchto nástrojů snadno identifikujete nové i staré disky, oddíly a jejich UUID, což se později bude hodit.

3. Vytvoření nového šifrovaného disku

Pokud jste ještě nevytvořili nové oddíly, teď je ten čas. Doporučuju pomocí gparted vytvořit:

  • ESP oddíl (FAT32, 512 MB, boot, esp flags)
  • Oddíl pro LUKS (většina disku)

Pak přichází šifrování:

sudo cryptsetup luksFormat /dev/nvme0n1p3
sudo cryptsetup open /dev/nvme0n1p3 luksroot

Následuje vytvoření LVM struktury:

sudo pvcreate /dev/mapper/luksroot
sudo vgcreate vgnew /dev/mapper/luksroot
sudo lvcreate -L 64G -n swap vgnew
sudo lvcreate -l 100%FREE -n root vgnew

A nakonec vytvoření filesystémů:

sudo mkfs.ext4 /dev/vgnew/root
sudo mkswap /dev/vgnew/swap

4. Mountování nového systému

Připojíme nový root oddíl a připravíme chroot:

sudo mount /dev/vgnew/root /mnt
sudo mkdir /mnt/boot
sudo mkdir /mnt/boot/efi
sudo mount /dev/nvme0n1p1 /mnt/boot/efi

Případně připojte i /dev, /sys, /proc a další:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc

5. Přenos systému

Pomocí rsync přenesete starý systém na nový disk:

sudo rsync -aAXv / /mnt --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}

6. Konfigurace: crypttab, fstab, initramfs

Zkontrolujte a upravte soubory:

  • /mnt/etc/crypttab: název mapper zařízení, např. luksroot UUID=xxxx none luks
  • /mnt/etc/fstab: opravte UUID a názvy volume group, např. /dev/mapper/vgnew-root / ext4 errors=remount-ro 0 1 /dev/nvme0n1p1 /boot/efi vfat umask=0077 0 1

Pak chrootněte do nového systému:

sudo chroot /mnt

A aktualizujte initramfs:

sudo update-initramfs -u

7. Instalace GRUBu

Teď přichází ta zábava s EFI:

Nejdřív ověřte, že /boot/efi je připojen správně. Pak:

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
sudo update-grub

Pokud chcete ručně přidat boot položku přes EFI:

sudo efibootmgr --create --disk /dev/nvme0n1 --part 1 --label "debian" --loader "\\EFI\\debian\\grubx64.efi"

8. Restart a test

Odpojte instalační médium a zkuste nabootovat z nového disku. Pokud máte Secure Boot, možná bude potřeba ho vypnout v BIOSu.

Při prvním bootu se objeví výzva na zadání hesla k šifrování. Pokud vše proběhne dobře, nový systém nabootuje.


Závěrečné tipy

  • Používejte sudo u všech příkazů – tohle není místo pro překlepy.
  • UUID je král – kontrolujte lsblk, blkid a porovnávejte.
  • initramfs a GRUB jsou klíčové – po každé větší změně: update-initramfs -u && update-grub
  • Přejmenování volume group: sudo vgrename staranazev novynazev a poté aktualizace všech konfigurací.

Hotovo? Gratuluju. Máš větší šifrovaný disk, přenesený systém, a o pár znalostí víc v rukávu. ☕