Skip to main content
marcozanon.com

Installazione full-encrypted di Xubuntu Linux 20.04 in dual boot

Creazione: | Aggiornamento:

Questo documento rappresenta l'aggiornamento di quello di un paio d'anni fa, nel quale avevamo installato un sistema Ubuntu Linux 18.04 crittografando le partizioni in modalità full-encrypted senza dover necessariamente formattare l'intero disco fisso ed anzi mantenendo la coesistenza con eventuali altri sistemi operativi.

Evito quindi le considerazioni di stampo generale e passo direttamente a verificare la replicabilità di quanto effettuato allora ma, questa volta, con Xubuntu 20.04 ("cugina" della distribuzione utilizzata in precedenza, ma orientata all'utilizzo dell'ambiente grafico Xfce).

Anche in questa circostanza farò uso di VirtualBox, lasciando per comodità l'ambiente configurato in lingua Inglese.

Effettuiamo anzitutto il boot tramite il live-cd di Ubuntu e selezioniamo Try Xubuntu.

Installazione passo-passo

  1. Lanciamo gparted e creiamo due partizioni per la nostra installazione, una per /boot da formattare in ext4 e l'altra per il resto del sistema e la swap, da gestire nei passaggi seguenti.
    Nel mio esempio, /dev/sda1 rappresenta un altro sistema operativo (o anche una semplice partizione di dati non interessata dalla presente installazione), /dev/sda2 è riservata a /boot e /dev/sda3 è la partizione da gestire meglio in seguito.
    Preparazione delle partizioni
  2. Creiamo un contenitore LUKS.
    $ sudo cryptsetup luksFormat /dev/sda3
    $ sudo cryptsetup luksOpen /dev/sda3 RootAndSwap
  3. Nel contenitore LUKS, creiamo un volume LVM fisico, un gruppo e due volumi LVM logici: la partizione di swap e quella di sistema /.
    Nel mio esempio, la partizione di swap occupa 2 GB e quella di sistema tutto lo spazio residuo.
    $ sudo pvcreate /dev/mapper/RootAndSwap
    $ sudo vgcreate lvmvg /dev/mapper/RootAndSwap
    $ sudo lvcreate -n swap -L 2g lvmvg
    $ sudo lvcreate -n systemroot -l 100%free lvmvg
    Preparazione del contenitore LUKS e dei volumi
  4. Facciamo partire l'installazione assegnando opportunamente le partizioni.
    Nel mio esempio, /dev/sda2 diventa /boot (da formattare in ext4), /dev/mapper/lvmvg-systemroot diventa / (da formattare in ext4) e /dev/mapper/lvmvg-swap diventa la partizione di swap.
  5. Attendiamo la copia dei file e la configurazione di base, dopodiché premiamo Continue testing ed apriamo un terminale (CTRL + ALT + T).
  6. Recuperiamo lo UUID della partizione fisica dove è stato creato il contenitore LUKS.
    Nel mio esempio, si tratta di /dev/sda3.
    $ sudo blkid /dev/sda3
  7. Montiamo opportunamente le nuove partizioni ed effettuiamo un chroot nel nuovo ambiente.
    $ sudo mkdir /mnt/xubuntu
    $ sudo mount /dev/mapper/lvmvg-systemroot /mnt/xubuntu
    $ sudo mount /dev/sda2 /mnt/xubuntu/boot
    $ sudo mount --bind /dev /mnt/xubuntu/dev
    $ sudo chroot /mnt/xubuntu
    # mount -t proc proc /proc
    # mount -t sysfs sys /sys
    # mount -t devpts devpts /dev/pts
    Chroot
  8. Creiamo, nell'ambiente chroot, un file /etc/crypttab con il seguente contenuto (naturalmente inserendo il valore UUID recuperato in precedenza):
    RootAndSwap UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx none luks

    (Attenzione che, rispetto al precedente documento su Ubuntu 18.04, qui il quarto parametro è cambiato.)

  9. Creiamo, nell'ambiente chroot, un file /etc/initramfs-tools/conf.d/cryptroot con il seguente contenuto (naturalmente inserendo il valore UUID recuperato in precedenza):
    CRYPTROOT=target=RootAndSwap,source=/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
  10. Eseguiamo, nell'ambiente chroot, l'aggiornamento dell'immagine di sistema.
    # update-initramfs -k all -c
  11. Modifichiamo, nell'ambiente chroot, il file /etc/default/grub ed impostiamo il valore GRUB_CMDLINE_LINUX (come meglio specificato in questa pagina per gestire l'ibernazione ed in questa pagina per evitare l'errore cryptsetup: lvm fs found but no lvm configured):
    GRUB_CMDLINE_LINUX="RESUME=/dev/mapper/lvmvg-swap CRYPTOPTS=target=RootAndSwap,source=/dev/sda3,luks"

    (Attenzione che, rispetto al precedente documento su Ubuntu 18.04, qui la stringa è cambiata.)

  12. Lanciamo, nell'ambiente chroot, il comando per aggiornare il boot-loader.
    # update-grub

L'installazione è terminata.

Test

Per vedere se il tutto funziona correttamente, è sufficiente riavviare il computer: dovrebbe essere chiesta la chiave di sblocco della partizione crittografata e, una volta digitata, il sistema dovrebbe eseguire il boot di Xubuntu senza problemi ed arrivare alla schermata di login.

Richiesta della chiave di sblocco del contenitore LUKS
Sblocco del contenitore LUKS avvenuto correttamente
Schermata di login

Per ulteriore scrupolo, è possibile eseguire il comando

$ mount

ed osservare che la partizione di sistema / è mappata su /dev/mapper/lvmvg-systemroot, mentre il comando

$ swapon -s

ci conferma che la swap è mappata su /dev/dm-1 corrispondente a /dev/mapper/lvmvg-swap (si può verificare con l'output del comando lvdisplay).

Considerazioni finali

Rispetto al documento di un paio di anni fa, non è presente quel bug nell'installer e quindi non è stato necessario applicare manualmente alcuna patch.

Rimane comunque un tipo di installazione più complessa rispetto alle opzioni messe a disposizione di default dal sistema, ma senz'altro molto più sicura e quindi, a mio avviso, decisamente consigliabile perlomeno su un notebook (più facilmente soggetto a smarrimento o furto).