Outils pour utilisateurs

Outils du site


divers:lvm-on-luks

LVM on LUKS


Préparation du disque

On démarre avec le live-usb d'ArchLinux et on créer en premier un container crypter temporaire :

cryptsetup open --type plain /dev/sda container --key-file /dev/random

On regarde si il est présent :

fdisk -l

Doit apparaître un truc du style :

Disk /dev/mapper/container: 74.5 GiB, 80026361856 bytes, 156301488 sectors
......
Disk /dev/mapper/container does not contain a valid partition table

Ensuite on écrit des données :

dd if=/dev/zero of=/dev/mapper/container status=progress

L'opération peut prendre plusieurs heures suivant la capacité du disque et de sa vitesse d'écriture. L retour de la commande : dd: writing to ‘/dev/mapper/container’: No space left on device

156301489+0 records in
156301488+0 records out
80026361856 bytes (80 GB) copied, 23349.2 s, 3.4 MB/s
dd if=/dev/zero of=/dev/mapper/container iflag=nocache oflag=direct  328.25s user 3632.16s system 16% cpu 6:29:09.20 total

Une fois fait on referme le container :

cryptsetup close container

Partitionnement du disque

On va créer une partition de type lvm soit 8E00, et bootable avec cfdisk.

cfdisk /dev/sda

On crérer un container :

cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random --verify-passphrase luksFormat /dev/sda1

On ouvre le container :

cryptsetup open --type luks /dev/sda1 lvm

Le container est maintenant accessible à /dev/mapper/lvm On prépare les volumes logiques :

pvcreate /dev/mapper/lvm
vgcreate MyStorage /dev/mapper/lvm
lvcreate -L 2G MyStorage -n swapvol
lvcreate -L 15G MyStorage -n rootvol
lvcreate -l +100%FREE MyStorage -n homevol

On crée les sytèmes de fichiers et on les monte :

mkfs.ext4 /dev/mapper/MyStorage-rootvol
mkfs.ext4 /dev/mapper/MyStorage-homevol
mkswap /dev/mapper/MyStorage-swapvol
mount /dev/MyStorage/rootvol /mnt
mkdir /mnt/home
mount /dev/MyStorage/homevol /mnt/home
swapon /dev/MyStorage/swapvol

Il ne reste plus qu'a reprendre l’installation d'ArchLinux en prenant soin des deux points suivants :

Grub

Ajouter ces paramètre à Grub avant de générer sa configuration :

nano /etc/default/grub
GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX_DEFAULT="... ipv6.disable=1 resume=/dev/MyStorage/swapvol"
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda1:MyStorage root=/dev/mapper/MyStorage-rootvol"

Puis :

grub-mkconfig -o /boot/grub/grub.cfg

Si cette erreur apparaît, ce n'est pas grave :

/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.

Et :

grub-install --no-floppy --recheck /dev/sda

Mkinitcpio

Il faut ajouter des hooks avant filesystems :

nano /etc/mkinitcpio.conf
HOOKS="... encrypt lvm2 resume ... filesystems ..."

Et faire :

mkinitcpio -p linux

Se loguer en une fois

Dans l'état actuel il vous faudra donner deux fois le mot de passe pour démarrer l'OS, pour y remédier :

dd bs=512 count=4 if=/dev/urandom of=/crypto_keyfile.bin
cryptsetup luksAddKey /dev/sda1 /crypto_keyfile.bin

On rajoute ensuite un fichier dans le mkinitcpio.conf :

nano /etc/mkinitcpio.conf
FILES=/crypto_keyfile.bin

Pour ouvrir automatiquement un autre disque chiffré :

cryptsetup luksAddKey /dev/sdd1 /crypto_keyfile.bin

Sécurité

chmod 000 /crypto_keyfile.bin
chmod -R g-rwx,o-rwx /boot

Dépannage

Si le système ne démarre plus on utilise un live-usb :

cryptsetup open --type luks /dev/sda1 lvm
mount /dev/MyStorage/rootvol /mnt
mount /dev/MyStorage/homevol /mnt/home
arch-chroot /mnt

On dépanne le système et pour sortir proprement :

exit
umount -R /mnt
cryptsetup close lvm

Source

divers/lvm-on-luks.txt · Dernière modification: 2018/10/25 18:19 (modification externe)