Logo carnetderootxzz@carnetderoot.net"La simplification est la sophistication suprême" - Léonard De Vinci
samedi 17 novembre 2018

:: Installation minimale d'ArchLinux avec système de fichier crypté et UEFI ::

Préparation de l'installation

  1. Télécharger l'archiso à partir du site https://www.archlinux.org/
  2. Préparer la clé usb

    # dd if=archlinux.img of=/dev/sdX bs=16M && sync
  3. Démarrer sur la clé usb et attendre le prompt root

Installation

Sélection du clavier

# loadkeys fr-latin9

Configuration du wifi

# wifi-menu

Synchronisation horaire

# timedatectl set-ntp true

Schéma de partitionnement

Sur mon Thinkpad, la taille du disque SSD est de 128Go.
1G sera réservé pour les partitions de boot (boot et EFI) et le reste intégralement chiffré.

A noter que les tailles des partitions efi et boot ne sont pas optimisées, 100M serait suffisant pour efi et 250M pour boot...

Configuration cible

NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 119,2G  0 disk
├─sda1                  8:1    0   512M  0 part  /boot/efi
├─sda2                  8:2    0   512M  0 part  /boot
└─sda3                  8:3    0 118,2G  0 part
  └─cryptroot         254:0    0 118,2G  0 crypt
    ├─vg0-swap        254:1    0     4G  0 lvm   [SWAP]
    ├─vg0-root        254:2    0    20G  0 lvm   /
    └─vg0-home        254:3    0  94,2G  0 lvm   /home

Une partition de swap n'est pas nécessaire, mais peut s'avérer pratique si on souhaite utiliser les fonctions d'hibernation d'un portable.
Dans ce cas, la taille de la partition doit être au moins égale à la quantité de RAM, sur mon Thinkpad -> 3915312 octets.

Création des partitions

# cgdisk /dev/sda

Créer les partitions suivantes :

Partition Périphérique Taille Système Hex code
EFI /dev/sda1 512M vfat ef00
boot /dev/sda2 512M ext2 8300
cryptroot /dev/sda3 Espace disque restant luks 8300

Formatage des partitions

# mkfs.vfat -F32 /dev/sda1
# mkfs.ext2 /dev/sda2

Chiffrement de la partition cryptroot

# cryptsetup -c aes-xts-plain64 -y --use-random luksFormat /dev/sda3
# cryptsetup luksOpen /dev/sda3 cryptroot

Création des volumes logiques

Créer un groupe de volume (vg0) et les volumes logiques suivants :

Volume logique Taille
swap 4G
root 20G
home le reste
# pvcreate /dev/mapper/cryptroot
# vgcreate vg0 /dev/mapper/cryptroot
# lvcreate --size 4G vg0 --name swap
# lvcreate --size 20G vg0 --name root
# lvcreate --extents +100%FREE vg0 --name home

Création des systèmes de fichiers

# mkfs.ext4 /dev/mapper/vg0-root
# mkfs.ext4 /dev/mapper/vg0-home
# mkswap /dev/mapper/vg0-swap
# swapon /dev/mapper/vg0-swap

Montage des partitions

# mount /dev/mapper/vg0-root /mnt
# mkdir /mnt/boot && mount /dev/sda2 /mnt/boot
# mkdir /mnt/boot/efi && mount /dev/sda1 /mnt/boot/efi
# mkdir /mnt/home && mount /dev/mapper/vg0-home /mnt/home

Sélection des miroirs

Manuelle

  • /etc/pacman.d/mirrorlist

Décommenter et déplacer en haut du fichier le miroir préféré.

Test des miroirs

  1. Sauvegarder le mirrorlist existant et préparer une copie de travail

    # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
    # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.test
  2. Modifier le fichier mirrorlist.test et décommenter les miroirs à tester

    Pour garder les miroirs français, générer le fichier à partir de la commande suivante :

    # grep -E '^## France$' -A 1 /etc/pacman.d/mirrorlist | grep -vE '^-' > /etc/pacman.d/mirrorlist.test

    Pour décommenter tous les serveurs :

    # sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.test
  3. Tester les miroirs et générer le nouveau mirrorlist (ici avec les 5 miroirs les plus rapides uniquement) :

    # rankmirrors -n 5 /etc/pacman.d/mirrorlist.test > /etc/pacman.d/mirrorlist

Installation des paquets

Installation du système de base et des outils nécessaires au premier démarrage (vim et git sont optionnels)

# pacstrap /mnt base base-devel grub-efi-x86_64 efibootmgr dialog wpa_supplicant vim git

Création du fstab

# genfstab -pU /mnt >> /mnt/etc/fstab

Facultatif

tempfs sur /tmp

# /tmp
tmpfs   /tmp    tmpfs   defaults,noatime,mode=1777  0   0

Options pour SSD

Remplacer les options 'relatime' par 'noatime' sur les partitions sauf celle de boot (limite les accès et augmente donc la durée de vie d'un disque SSD)

Entrer dans le nouveau système

# arch-chroot /mnt /bin/bash

Fuseau horaire

# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
# hwclock --systohc --utc

Localisation

  • /etc/locale.gen

Décommenter fr_FR.UTF-8 UTF-8 dans le fichier puis regénérer les locales :

# locale-gen
  • /etc/locale.conf

    LANG=fr_FR.UTF-8
  • /etc/vconsole.conf

    KEYMAP=fr-latin9

Nom d'hôte

  • /etc/hostname

    myhostname
  • /etc/hosts

    127.0.0.1    localhost
    ::1          localhost
    127.0.1.1    myhostname.domain.local myhostname

Utilisateurs

Modification du mot de passe root

# passwd

Utilisateur supplémentaire

# useradd -m -g users -G wheel username
# passwd username

Configuration de mkinitcpio

Editer le fichier /etc/mkinitcpio.conf

Ajouter les options suivantes avant 'filesystems' :

  • keymap : chargement du clavier
  • encrypt : gestion du chiffrement
  • lvm2 : gestion des volumes logiques
  • resume : gestion du mode hibernation

Au final, cela donne :

HOOKS=(base udev autodetect modconf block keymap encrypt lvm2 resume filesystems keyboard fsck)

Regénérer l'image initrd

# mkinitcpio -p linux

GRUB

Installation

# grub-install

Configuration

Editer le fichier /etc/default/grub et modifier la variable GRUB_CMDLINE_LINUX afin de préciser le périphérique chiffré (cryptroot) et le périphérique d'hibernation (partition de swap) :

GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:cryptroot resume=/dev/mapper/vg0-swap"

Regénérer le grub.cfg

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

Fin de l'installation et redémarrage

# exit
# umount -R /mnt
# swapoff -a
# reboot

Au démarrage la passphrase est demandée afin de déchiffrer le volume puis on accède à la console. On a maintenant un système minimal installé et fonctionnel.

Pour configurer un environnement graphique basé sur openbox, cf. Configuration environnement graphique avec Openbox

References