Arch Linux chiffré (boot compris) : installation du système de base

Installation d'Arch Linux complètement chiffré (boot compris)

Installation du système de base

Pages 1 - 2 - 3 - 4

motdepasse

Après avoir effectué le partitionnement, créé le container LUKS et les volumes logiques LVM que nous avons montés, il est temps d'installer le système de base d'Arch Linux.

 

Une fois que cette étape sera terminée, il nous faudra faire une première configuration du système. Nous installerons et réglerons le programme de démarrage GRUB afin qu'il puisse reconnaître la partition chiffrée et lancer le système.

Sélection des miroirs

 

Nous commençons par modifier la liste des miroirs de téléchargement des paquets d'Arch Linux pour donner la priorité aux plus proches (ici les miroirs français). Cette liste est incluse dans le fichier /etc/pacman.d/mirrorlist.

Nous utilisons l'utilitaire nano. L'objectif est de repérer les lignes situées sous ## Score: 0.x, France, de les couper et de les mettre en tête des miroirs pour qu'ils soient priorisés. On le fait pour au moins trois serveurs.

Pour couper une ligne, nous nous mettons en début de ligne puis Ctrl + k.

Pour coller la ligne, nous nous rendons sur l'emplacement choisi puis Ctrl + u.

Au préalable, nous allons faire une copie de secours de mirrorlist au cas où nous ferions une erreur.

root@archiso ~ # cp /etc/pacman.d/mirorrlist /etc/pacman.d/mirorrlist.bak

root@archiso ~ # nano /etc/pacman.d/mirorrlist

 

Le fichier non modifié ressemble à cela :

mirrorlist non modifié

 

À la fin, il devra ressembler à cela :

mirrorlist modifié

 

Rappel, pour enregistrer les modifications dans nano puis quitter :

Ctrl-o, Ctrl-x.

Installation du système de base avec pacstrap

 

La commande pacstrap permet d'installer le système de base sur le disque dur (qui est pour le moment monté sur /mnt). Nous allons ajouter à ce système de base "base" les paquets supplémentaires dont nous aurons besoin pour cette installation.

En particulier, j'ai choisi ici d'ajouter le paquet "linux-lts" qui est le noyau Long Term Support. Si vous avez un matériel très récent, mieux vaut utiliser le dernier noyau, inutile dans ce cas de prendre linux-lts.

root@archiso ~ # pacstrap /mnt base base-devel grub-efi-x86_64 git efibootmgr os-prober dialog wpa_supplicant syslog-ng mtools dosfstools ntfs-3g exfat-utils linux-lts

Ensuite, nous générons le fichier fstab (table des disques) :

root@archiso ~ # genfstab -pU /mnt >> /mnt/etc/fstab

Grâce à la commande chroot d'Arch Linux, nous allons entrer dans notre environnement sur le disque dur :

root@archiso ~ # arch-chroot /mnt /bin/bash

 

Configuration du système de base

Maintenant que nous sommes "chrootés" dans la nouvelle installation, nous allons faire la première configuration :

Réglage de l'heure

[root@archiso /]# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
[root@archiso /]# hwclock --systohc --utc

 

Définition d'un nom d'hôte

J'ai choisi ici comme nom d'hôte soozx

[root@archiso /]# echo soozx > /etc/hostname

 

Réglage de la langue et du clavier

[root@archiso /]# echo LANG=fr_FR.UTF-8 >> /etc/locale.conf
[root@archiso /]# echo LANGUAGE=fr_FR >> /etc/locale.conf
[root@archiso /]# echo LC_ALL=C >> /etc/locale.conf
[root@archiso /]# touch /etc/vconsole.conf
[root@archiso /]# echo KEYMAP=fr-latin9 >> /etc/vconsole.conf
[root@archiso /]# echo FONT=lat9w-16 >> /etc/vconsole.conf
[root@archiso /]# nano /etc/locale.gen

Dans le fichier qui s'ouvre, décommenter (enlever le #) devant en_US.UTF-8 et fr_FR.UTF-8. Enregistrer (Ctrl-o) et quitter (Ctrl-x)

[root@archiso /]# locale-gen
[root@archiso /]# export LANG=fr_FR.UTF-8

 

Utilisateur et mot de passe

Nous allons créer un utilisateur et changer les mots de passe. Il est fortement conseillé de ne pas utiliser le même mot de passe que celui servant à déverrouiller le disque chiffré. Par contre, on peut utiliser le même mot de passe pour root et pour l'utilisateur principal.

  • création d'un nouvel utilisateur (ici soozxuser)
[root@archiso /]# useradd -m -g users -G wheel soozxuser
  • mot de passe root
[root@archiso /]# passwd
  • mot de passe utilisateur (soozxuser)
[root@archiso /]# passwd soozxuser

 

Installation du gestionnaire de connexion

Afin de pouvoir avoir une connexion internet au redémarrage, nous allons installer tout de suite le gestionnaire networkmanager :

[root@archiso /]# pacman -S networkmanager
[root@archiso /]# systemctl enable NetworkManager

 

Configuration de GRUB

Grub est le programme de démarrage.

Il doit détecter le système Arch Linux en mode UEFI ainsi que le disque chiffré. Il y a donc une configuration spécifique à entreprendre.

 

Nous commençons par éditer mkinitcpio.conf

[root@archiso /]# nano /etc/mkinitcpio.conf

À la 7e ligne du fichier, nous trouvons MODULES="". Rajouter ext4 entre les guillemets :

mkinitcpio.conf modules

 

Descendre jusqu'à la section HOOKS="base udev(...) fsck" et rajouter après block : keymap encrypt lvm2 de façon à obtenir ceci :

mkinitcpio.conf hooks

Ctrl-o et Ctrl-x pour enregistrer puis quitter.

 

Nous allons maintenant générer le fichier de configuration GRUB modifié :

[root@archiso /]# mkinitcpio -p linux-lts

Ou si l'on souhaite plutôt utiliser le dernier noyau :

[root@archiso /]# mkinitcpio -p linux

 

Ne pas s'inquiéter si l'on a des ===> WARNING: Possibly missing firmware.

Si tout se passe bien, nous devrions voir :

===> Image generation successfull.

 

 

 

Nous modifions le fichier /etc/default/grub pour qu'il prenne en compte le container LUKS chiffré. Il faut pour cela remplacer GRUB_CMDLINE_LINUX="" par GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:luks:allow-discards" (mettre l'identifiant de votre disque chiffré, ici sda2) et ajouter dessous la ligne GRUB_ENABLE_CRYPTODISK=y

[root@archiso /]# nano /etc/default/grub

 

/etc/default/grub chiffré

 

Nous générons le fichier de démarrage (ne pas s'inquiéter des messages d'avertissement "Failed to connect to lvmetad") :

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg

grub-mkconfig

 

Nous terminons en installant grub (indiquer l'identifiant de votre disque dur, ici sda) :

[root@archiso /]# grub-install /dev/sda

 

Note : si on a fait cette installation dans une machine virtuelle (Virtualbox), il faut faire la manoeuvre suivante :

[root@archiso /]# mkdir /boot/efi/EFI/BOOT
[root@archiso /]# cp /boot/efi/EFI/arch/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi

Sortie du chroot et premier redémarrage

La première configuration du système de base et de GRUB sont terminés, nous allons effectuer le redémarrage de notre système.

 

On quitte l'environnement chroot :

[root@archiso /]# exit

 

On démonte le disque /mnt

root@archiso ~ # umount -R /mnt

 

Et on redémarre :

root@archiso ~ # reboot

 

Au redémarrage, GRUB nous demande une première fois le mot de passe de chiffrement :

GRUB mot de passe chiffrement

 

Puis une deuxième fois pour lancer le système d'exploitation :

Enter passphrase for /dev/sda2:

 

On se connecte ensuite en utilisant le login root et le mot de passe que nous avons configuré pour root.

 

Ajout d'un fichier clé pour éviter la double saisie du mot de passe

Afin d'éviter la double saisie du mot de passe, nous allons ajouter une "keyfile" (fichier clé) permettant de déchiffrer le système d'exploitation. Grub ira chercher ce fichier à chaque démarrage pour déchiffrer le système d'exploitation.

 

Génération du fichier clé :

# dd bs=512 count=4 if=/dev/urandom of=/crypto_keyfile.bin

 

Ajout du fichier clé aux mots de passe de cryptsetup :

# cryptsetup luksAddKey /dev/sda2 /crypto_keyfile.bin
Entrez une phrase secrète existante :

On tape le mot de passe de chiffrement.

 

Sécurisation du fichier clé :

# chmod 000 /crypto_keyfile.bin

 

Configuration de GRUB pour accepter le fichier clé :

# nano /etc/mkinitcpio.conf

 

Trouver la section FILES et modifier FILES="" par FILES="/crypto_keyfile.bin"

 

# mkinitcpio -p linux-lts

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

# grub-install /dev/sda

 

Deuxième redémarrage

# reboot

 

Donner le mot de passe de chiffrement à GRUB et si tout est bien configuré, Arch Linux devrait maintenant pouvoir se lancer sans redonner ce mot de passe.