La base et le chroot

pacstrap

Pacstrap sert à installer les systemes nécessaires à la survie de cette magnifique distribution qu'est Arch Linux. La première commande ci-dessous est la commande avec les paquets minimums, vous pouvez cependant télécharger les paquets que vous souhaitez. Il est conseillé d'installer les paquets suivants :

  • base
  • linux ou un autre paquet noyau
  • linux-firmwareou un autre micrologiciel
  • un gestionnaire de réseau, ici networkmanager
  • un éditeur de texte, ici vim
# Nous aurons ici besoin des paquets suivants
pacstrap /mnt gimp base linux linux-firmware \ # Paquets nécessaires à arch linux
            grub \          # Nous reviendrons dessus plus tard
            efibootmgr \    # utile pour GRUB
            vim \
            sudo \          # Nous reviendrons dessus plus tard
            networkmanager \
            lvm2

Cela va installer tous les paquets de base (ça peut prendre quelques minutes).

Si pacstrap sort une erreur du type :

error: pam: signature from "John Doe <john@doe.com>" is unknown trust
:: File /mnt/var/cache/pacman/pkg/pam-1.5.2-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n]

Lancer la commande suivante puis relancer la commande pacstrap :

pacman -Sy archlinux-keyring

Déchiffrement automatique

Copier le fichier de clé dans /mnt/root.

cp keyfile /mnt/root

Trouver la valeur de la partition home dans ls -l /dev/disk/by-uuid. Ici 4517ff0f-deab-4564-90ca-e4f4947b8ca3 :

total 0
lrwxrwxrwx 1 root root 10 Dec  4 10:37 3c07c1fb-8c95-4b86-b133-be0dbcf94e44 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Dec  4 09:57 4A6B-045F -> ../../sda1
lrwxrwxrwx 1 root root 10 Dec  4 10:37 8f885dc4-2292-48a0-a319-b9045a300d93 -> ../../dm-3
lrwxrwxrwx 1 root root 15 Dec  4 10:32 4517ff0f-deab-4564-90ca-e4f4947b8ca3 -> ../../nvme0n1p7
lrwxrwxrwx 1 root root 15 Dec  4 10:37 51565f90-9666-47fc-ba13-85c1bdb016eb -> ../../nvme0n1p5
lrwxrwxrwx 1 root root 15 Dec  4 09:57 C6B27122B27117DF -> ../../nvme0n1p4
lrwxrwxrwx 1 root root 15 Dec  4 09:57 D2A6-C16F -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Dec  4 09:57 FC5AA8015AA7B734 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 15 Dec  4 10:31 ad022385-b683-4e48-8e66-3cb027b67a9a -> ../../nvme0n1p6
lrwxrwxrwx 1 root root 10 Dec  4 10:35 bc05acd8-90a2-43e8-922a-df890c3a11ad -> ../../dm-2

Ajouter crypt_hdd UUID=xyz /root/keyfile luks dans /mnt/etc/crypttab avec xyz étant la valeur trouvée précédement :

crypt_hdd	UUID=4517ff0f-deab-4564-90ca-e4f4947b8ca3	/root/keyfile	luks

TRIM

TRIM va permettre d'augmenter la durée de vie d'un SSD si ce dernier est chiffré.

Si l'on se trouve sous ssd (ce qui est notre cas) :

  • on vérifie que notre SSD supporte l'usage de TRIM. Une valeur différente de zéro indique le support de TRIM :
lsblk --discard
  • dans /mnt/etc/crypttab, ajouter discard après luks :
crypt_hdd	UUID=4517ff0f-deab-4564-90ca-e4f4947b8ca3	/root/keyfile	luks	discards
  • dans /mnt/etc/lvm/lvm.conf, activer issue_discards. (S'il n'existe pas, copier /etc/lvm/lvm.conf d'abord)
  • systemctl enable fstrim.service et systemctl enable fstrim.timer.

Référence sur TRIM :

arch-chroot

On va ensuite générer notre table de fichiers (fstab) et lancer le système.

genfstab -U /mnt >> /mnt/etc/fstab

arch-chroot /mnt

Nous sommes maintenant dans notre systeme de fichier, en tant que root.

Time

ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime

hwclock --systohc

Langue

On va maintenant définir le locale, soit la langue de l'ordinateur.

vim /etc/locale.gen

Vous arrivez dans un gros fichier où toutes les lignes sont commentées. Trouvez la langue souhaitée et décommentez là.

en_US.UTF-8 UTF-8   # Pour l'anglais
fr_FR.UTF-8 UTF-8   # Pour le français
locale-gen

On peut également changer le keymap, c'est à dire la disposition du clavier au niveau du système. Ouvrir /etc/vconsole.conf :

# us par défaut
KEYMAP=fr   # pour mettre en français

Hostname & hostfile

echo "<hostname>" > /etc/hostname
vim /etc/hosts

Entrer la configuration suivante, remplacer pour le nom défini juste avant :

127.0.0.1       localhost
::1             localhost
127.0.1.1       <hostname>.localdomain  <hostname>