À partir d’une Ubuntu 16.04 opérationnelle, j’ai réussi à chiffrer la partition racine après l’installation, la partition racine contenant tout, à l’exception de / boot. Je mets / boot sur un usb amovible séparé. Je l'ai notamment fait avant de passer à Ubuntu 18, et la mise à niveau a bien fonctionné avec la version de disque chiffrée.
Le cryptage n'a pas été effectué "en place", ce qui me convenait parfaitement, car je ne voulais pas écraser la version opérationnelle tant que la nouvelle configuration ne fonctionnait pas.
Effectuer la procédure correcte est extrêmement simple et rapide. (Bien que déterminer la procédure correcte prenait énormément de temps, car je suivais de fausses pistes.)
CONTOUR
- Créez un disque USB Linux en direct - il est pratique d’activer la persistance. Démarrez sur ce disque USB.
- Créez un groupe de volumes chiffré luks sur une partition vide. (Dans mon cas, il se trouvait sur le même disque que le linux d'origine, mais il pourrait s'agir d'un autre disque.) Créez / (racine) et échangez les volumes logiques sur cette partition chiffrée. Celles-ci serviront de partitions virtuelles en ce qui concerne Linux copié.
- Copiez les fichiers de l'ancienne racine vers la nouvelle.
- Configurez et partitionnez une autre clé USB pour qu’elle serve de disque de démarrage amovible.
- Configurez des fichiers dans la nouvelle racine, faites un peu de magie et chrootez dans la nouvelle racine, puis installez grub sur le disque de démarrage à partir du nouvel environnement racine chroot'd.
DÉTAILS
1 - Démarrez avec un disque USB Linux en direct - il est pratique d’activer la persistance.
Ubuntu 16 installé sur un usb avec unetbootin. L’interface graphique permet de spécifier la "persistance", mais une autre étape est également nécessaire pour que la persistance fonctionne: modifiez /boot/grub/grub.cfg
pour ajouter --- persistent
comme suit:
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
initrd /casper/initrd
}
Démarrer avec le live USB
2- Créez un groupe de volumes luks sur une partition vide. Créez / (racine) et permutez les volumes logiques sur cette partition chiffrée.
Supposons que la partition inutilisée à chiffrer est /dev/nvme0n1p4
.
En option , si vous avez des anciennes données sur la partition que vous voulez cacher avant le cryptage et le formatage, vous pouvez essuyer au hasard la partition. Voir la discussion ici .
dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress
Configurez le cryptage.
cryptsetup -y -v luksFormat /dev/nvme0n1p4
Vous serez invité à définir un mot de passe.
cryptsetup luksOpen /dev/nvme0n1p4 crypt1
Vous serez invité à entrer le mot de passe. Notez qu'il crypt1
s'agit d'un nom d'utilisateur arbitraire. Maintenant, créez les volumes et le format.
pvcreate /dev/mapper/crypt1
vgcreate crypt1-vg /dev/mapper/crypt1
lvcreate -L 8G crypt1-vg -n swap
mkswap /dev/crypt1-vg/swap
lvcreate -l 100%FREE crypt1-vg -n root
mkfs.ext4 /dev/crypt1-vg/root
Utilisez ces utilitaires pour afficher les volumes et comprendre la hiérarchie.
pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1
3- Copier les fichiers de l'ancienne racine vers la nouvelle racine
mkdir /tmp/old-root
mount /dev/ubuntu-vg/root /tmp/old-root/
mkdir /tmp/new-root
mount /dev/crypt1-vg/root /tmp/new-root/
cp -a /tmp/old-root/. /tmp/new-root/
umount /tmp/old-root
umount /tmp/new-root
cp -a ...
copies en mode archive, en préservant tous les modes de fichiers et les indicateurs.
4- Configurez et partitionnez une autre clé USB pour qu'elle serve de disque de démarrage amovible.
J'ai utilisé gparted pour cela. Configurez deux partitions. La première partition est vfat
, la seconde ext2
. Chacun faisait 512 Mo, vous pourriez vous en tirer avec moins. Suppose que l'appareil /dev/sdf
.
# The first partition: (will be /dev/sdf1)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: fat32
Label: (leave)
# The second partition: (will be /dev/sdf2)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: ext4
Label: (leave)
5- Configurez des fichiers dans la nouvelle racine, faites un peu de magie et chrootez dans la nouvelle racine, puis installez grub sur le disque de démarrage à partir du nouvel environnement racine chrooté.
Trouvez des UUID pour une utilisation ultérieure. Notez les résultats des commandes suivantes:
blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4
Montez la partition racine et les partitions de démarrage
sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi
Configurer le fichier /mnt/etc/fstab
/dev/mapper/crypt1--vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/crypt1--vg-swap none swap sw 0 0
UUID=[uuid of /dev/sdf2] /boot ext2 defaults 0 2
UUID=[uuid of /dev/sdf1] /boot/efi vfat umask=0077 0 1
où "[uuid of ...]" est juste une combinaison lettre-nombre-trait d'union.
Créer le fichier /mnt/etc/cryptab
# <target name> <source device> <key file> <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root
Un peu de magie est nécessaire pour entrer dans l’environnement du répertoire racine:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt
Maintenant, configurez le disque USB de démarrage avec grub
:
apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub
Vous devriez maintenant pouvoir redémarrer et démarrer à l’aide du nouveau disque de démarrage USB.
Le dépannage
(a) Le réseau doit être connecté pour la apt install --reinstall grub-efi-amd64
commande. Si le réseau est connecté mais que le DNS échoue, essayez
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
(b) Avant d'appeler initramfs
, le vmlinuz...
fichier actuel utilisé dans le linux d'origine doit être présent dans le nouveau répertoire racine. Si ce n'est pas le cas, trouvez-le et placez-le là.
(c) La grub-install
commande par défaut rechercher tous les autres disques de Linux , il peut trouver même si elles ne sont pas mount
ed, et les mettre dans le menu de démarrage sur le nouveau USB de démarrage. Généralement, cela n'est pas souhaité, vous pouvez donc l'éviter en ajoutant cette ligne à /boot/default/grub.cfg
:
GRUB_DISABLE_OS_PROBER=true
REMARQUE:
Un fichier texte avec la clé de cryptage peut être ajouté à la clé USB de démarrage amovible.