Arch Linux avec
chiffrage intégral

Au cours des dernières années, j’ai installé Arch Linux plusieurs dizaines de fois, sur des appareils différents. Cet article a pour objectif de me rappeler facilement les étapes que j’utilise pour faire une installation sur un Dell XPS 9300, avec UEFI et un chiffrage de l’intégralité du disque de l’ordinateur.

Attention : le Guide d’installation d’Arch Linux doit rester votre référence si vous souhaitez faire une installation sur votr epropre machine. Non seulement ces instructions évolueront avec le temps, mais elles vous permettront d’adapter les étapes avec vos besoins. Surtout, c’est particulièrement instructif !

Création du disque d’installation

L’image d’installation peut-être téléchargée depuis le site d’Arch Linux.

Après avoir inséré une clef USB ou une carte micro-SD, on récupère son adresse avec fdisk -l. On peut ensuite y copier l’image (toutes les données seront perdues) avec :

sudo dd bs=4M if=<image.iso> of=/dev/<sdx> oflag=sync

Démarrage depuis le disque d’installation

Après avoir désactivé Secure Boot dans le BIOS si besoin, on peut démarrer en bootant depuis le disque d’installation. Une fois cela fait, l’installer consiste en un simple invité de commande.

Agencement du clavier

Le clavier utilise un agencement américain par défaut. Pour obtenir un clavier français, on utilise :

loadkeys fr-latin9

Réseau

Pour le reste de l’installation, nous allons avoir besoin d’une connexion pour télécharger les paquets. Pour se connecter à un réseau wifi, on peut utiliser (où [ssid] est le nom du réseau) :

iwctl station wlan0 connect [ssid]

Horloge

Pour éviter tout problème de synchronisation, on peut mettre l’ordinateur à l’heure avec :

timedatectl set-ntp true

Partitionnement

J’ai choisi de partitionner l’ordinateur en ne laissant que deux partitions : 100 Mo pour le démarrage, et le reset pour le système. Attention : les commandes qui suivent suppriment toutes les données de l’ordinateur.

On commence par voir quels disques et partitions existent avec parted -l.

Ensuite, dans mon cas, je supprime l’entrée UEFI précédente avec :

efibootmgr -b 0 -B

Ensuite, pour partitionner mon disque /dev/nvme0n1, j’utilise :

wipefs -af /dev/nvme0n1
parted -s /dev/nvme0n1 mklabel gpt
parted -s /dev/nvme0n1 mkpart primary fat32 1MiB 100MiB
parted -s /dev/nvme0n1 set 1 esp on
parted -s /dev/nvme0n1 mkpart primary ext4 100MiB 100%

Formatage

Nous allons ensuite formater ces deux partitions, la seconde étant intégralement chiffrée :

mkfs.fat -F32 /dev/nvme0n1p1
cryptsetup -y -v luksFormat --iter-time 100 /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 cryptroot
mkfs.ext4 /dev/mapper/cryptroot

Enfin, on peut les monter avec :

mount /dev/mapper/cryptroot /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot

Installation

On utilise pacstrap pour installer le système minimal sur nos partitions et créer le fichier fstab. J’y ajoute iwd pour avoir le wifi au redémarrage, et intel-ucode pour le processeur Intel :

pacstrap /mnt base linux linux-firmware iwd intel-ucode
genfstab -U /mnt >> /mnt/etc/fstab

On entre ensuite dans le système nouvellement créé avec :

arch-chroot /mnt

Langage

On peut indiquer notre fuseau horaire, langue et agencement de clavier avec :

ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
hwclock --systohc
echo "LANG=fr_FR.UTF-8" > /etc/locale.conf
echo "KEYMAP=fr-latin9" > /etc/vconsole.conf
echo "en_US.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen

Réseau

On active ensuite les différents services pour bénéficier du Wifi et du DNS au démarrage :

systemctl enable systemd-networkd systemd-resolved iwd
echo "[General]
EnableNetworkConfiguration=True" >> /etc/iwd/main.conf

Il est également nécessaire d’indiquer le nom de la machine :

echo "xps" > /etc/hostname
echo "127.0.0.1 localhost
::1             localhost
127.0.1.1       xps.localdomain>xps" >> /etc/hosts

Initramfs

Les instructions suivantes sont nécessaires pour que l’ordinateur puisse demander le mot de passe de déchiffrement au démarrage :

sed -i 's/keyboard/keyboard keymap encrypt/' /etc/mkinitcpio.conf
mkinitcpio -P

Mot de passe administrateur

On choisit son mot de passe administrateur avec :

passwd

Amorceur de démarrage

J’utilise simplement efibootmgr pour créer directement une etrée UEFI, permettant d’éviter d’utiliser tout amorceur de démarrage :

UUID1=$(blkid /dev/nvme0n1p2 -o value -s UUID)
UUID2=$(blkid /dev/mapper/cryptroot -o value -s UUID)
efibootmgr -d /dev/nvme0n1 -p 1 -c -L "Arch Linux" \
  -l /vmlinuz-linux -u "cryptdevice=UUID=${UUID1}:cryptroot \
  root=UUID=${UUID2} rw quiet \
  initrd=\intel-ucode.img initrd=\initramfs-linux.img"

Fini !

Il est possible de quitter l’installation et de redémarrer avec :

exit
reboot