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
- 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. - Creiamo un contenitore LUKS.
$ sudo cryptsetup luksFormat /dev/sda3
$ sudo cryptsetup luksOpen /dev/sda3 RootAndSwap
- 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
- 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. - Attendiamo la copia dei file e la configurazione di base, dopodiché premiamo Continue testing ed apriamo un terminale (CTRL + ALT + T).
- Recuperiamo lo UUID della partizione fisica dove è stato creato il contenitore LUKS.
Nel mio esempio, si tratta di/dev/sda3
.$ sudo blkid /dev/sda3
- 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
- Creiamo, nell'ambiente chroot, un file
/etc/crypttab
con il seguente contenuto (naturalmente inserendo il valoreUUID
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.)
- Creiamo, nell'ambiente chroot, un file
/etc/initramfs-tools/conf.d/cryptroot
con il seguente contenuto (naturalmente inserendo il valoreUUID
recuperato in precedenza):CRYPTROOT=target=RootAndSwap,source=/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
- Eseguiamo, nell'ambiente chroot, l'aggiornamento dell'immagine di sistema.
# update-initramfs -k all -c
- Modifichiamo, nell'ambiente chroot, il file
/etc/default/grub
ed impostiamo il valoreGRUB_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.)
- 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.
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).