web-dev-qa-db-fra.com

Mettre à jour grub dans un environnement chroot avec la racine sur un volume chiffré luks

Je souhaite déplacer un système (tous les systèmes que j'utilise sont basés sur Ubuntu 16.04) d'une partition non chiffrée vers une partition chiffrée par luks (sur le même disque).

À cette fin, j'ai créé un volume logique chiffré par LUKS contenant une partition racine et une partition de swap. Ensuite, j'ai copié le contenu de la partition existante dans la nouvelle partition racine à l'aide de dd. J'ai vérifié que cette nouvelle racine contenait la structure de répertoires appropriée et effectué une analyse de disque de la partition.

Le plan consistait à adopter le nouveau système et à mettre à jour les fichiers Grub à partir de là.

En détail, je tente ce qui suit (qui est une combinaison des pages d’aide Ubuntu et Comment réinstaller grub depuis un liveUSB si la partition/est chiffrée et qu’il existe une partition/boot distincte? ):

# Unlock crypto file system
Sudo cryptsetup luksOpen /dev/sda2 lukslvm 

Sudo vgscan 
Sudo vgchange -ay
Sudo svscan

# Mount root file system
Sudo mount /dev/mapper/vgubuntu-root /mnt
# Mount boot filesystem
Sudo mount /dev/sda1 /mnt/boot
# Mount required internal file systems
Sudo mount -o rbind /dev /mnt/dev
Sudo mount -t proc proc /mnt/proc
Sudo mount -t sysfs sys /mnt/sys
## Additional LVM directories (for older systems)
Sudo mount -o rbind /run/lvm /mnt/run/lvm
Sudo mount -o rbind /run/lock/lvm /mnt/run/lock/lvm
# Enable DNS resolution
Sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
# Change to the encrypted system
Sudo chroot /mnt /bin/bash

# Install required software
Sudo apt-get install cryptsetup lvm2

# Edit /etc/crypttab
Sudo printf "lukslvm\tUUID=%s\tnone\tluks\n" "$(cryptsetup luksUUID /dev/sda2)" | tee -a /etc/crypttab

# /etc/modules editieren
Sudo echo "dm-crypt" >> /etc/modules

# Update kernel initramfs
Sudo update-initramfs -u -k all

echo "Edit /etc/default/grub as GRUB_CMDLINE_LINUX_DEFAULT=\"kopt=root=/dev/mapper/vgubuntu-root\""
Sudo vi /etc/default/grub

Sudo update-grub

# Leave chroot environment
exit
# Write buffers to disk
Sudo sync
# Unmount file systems
Sudo umount /mnt/run/lvm
Sudo umount /mnt/run/lock/lvm
Sudo umount /mnt/sys
Sudo umount /mnt/proc
Sudo umount /mnt/boot
#
Sudo swapoff -a

Malheureusement, cela ne fonctionne pas comme cela car update-grub ne semble pas trouver le système installé sur la partition chiffrée. Il ne trouve que l'installation existante sur une autre partition /dev/sda3.

Qu'est-ce que je rate?

1
highsciguy

J'ai l'impression que vous avez oublié de créer un fichier/etc/mtap approprié

Sudo cp /proc/mounts /mnt/etc/mtab

Voir https://wiki.sabayon.org/index.php?title=HOWTO:_Restore_Grub2

1
Simon Sudler