Ubuntu Full ZFS encrypted

Pour une installation full ZFS presque entièrement chiffrée de Ubuntu, c’est un tout petit poil plus compliqué, mais vous allez voir, rien de bien sorcier et point de magie noire.

Une installation presque entièrement chiffrée

Il s’agit d’une installation sur ordinateur portable (laptop).

1 partition EFI
1 partition SWAP chiffrable (par les procédés habituels)
1 partition ZFS bpool non chiffré pour les kernels et initramfs
1 partition ZFS rpool chiffrée pour le système et les datas

Prerequis

  • Nous allons commencer par booter une iso Live Ubuntu.

  • On lance le mode Live : Try Ubuntu button.

Une fois la session live démarrée, je vous suggère d’installer ssh et de permettre le root login afin de se simplifier l’édition.

$ sudo su
## passwd
New password :
Retype new passord :
passwd: password updated successfully
# apt install ssh
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# service ssh restart

Edition du script zsys-setup

Une fois tout ces prérequis effectués, connectez-vous en ssh à votre machine en cours d’installation pour éditer le fichier zsys-setup qui se trouve dans le Live Ubuntu : /usr/share/ubiquity/zsys-setup

Dans ce script cherchez « zpool create », vérifiez que vous êtes bien sur celui qui crée le « rpool ».

Avant la commande “zpool create”, insérez :

echo MYPASSWORD |

Et avant les derniéres lignes de la commande « zpool create », ajoutez les lignes ci-dessous :

-O recordsize=1M \
-O encryption=aes-256-gcm \
-O keylocation=prompt \
-O keyformat=passphrase \

Ajuster la taille de la SWAP pour pouvoir hiberner

Avec le default Ubuntu zsys-setup, la partition swap sera de 2GB ce qui risque de ne pas être suffisant pour votre système. Nous devons créer une swap dont la taille est égale à la quantitée de RAM.

Il faut ajouter les 2 lignes ci-desous dans : /usr/share/ubiquity/zsys-setup

MEMSIZE=$(cat /proc/meminfo | grep MemTotal | awk -F' ' '{print $2}')
SWAPVOLSIZE=$(( MEMSIZE / 1024 ))

comme ci-dessous dans le contexte :

# Convert to MiB to align the size on the size of a block
SWAPVOLSIZE=$(( SWAPSIZE / 1024 / 1024 ))

MEMSIZE=$(cat /proc/meminfo | grep MemTotal | awk -F' ' '{print $2}')
SWAPVOLSIZE=$(( MEMSIZE / 1024 ))

prepare_target "${TARGET}"
format_disk "${DISK}" "${PARTBASE}" "${PARTESP}" "${PARTBPOOL}" "${PARTRPOOL}" "${SWAPVOLSIZE}"
init_zfs "${TARGET}" "${DISK}${PARTBASE}${PARTBPOOL}" "${DISK}${PARTBASE}${PARTRPOOL}"
init_system_partitions "${TARGET}" "${DISK}${PARTBASE}1" "${DISK}${PARTBASE}${PARTESP}"

Lancer l’installation

Dans un terminal, lancer ubiquity, puis il suffit de suivre les points de la procédure Ubuntu Full ZFS.