Comme évoqué dans cet article présentant quelques unes des principales distributions Linux, arch linux est l’une des plus populaires. En plus de rassembler une large communauté d’utilisateurs enthousiastes et de disposer d’un wiki riche et de grande qualité, le nombre important de distributions en étant dérivées (Manjaro étant probablement la plus célèbre) suffit à convaincre de la grande qualité et de la solidité du projet.
En revanche, de par son orientation « utilisateurs passionnés » , arch linux n’est probablement pas la plus facile à installer. Voyons un exemple de comment installer arch linux.
A mon avis, ce désavantage apparent n’en est cependant pas un. En effet, cette installation peut donner au débutant motivé l’opportunité de s’intéresser à de nombreux aspects techniques. Il approfondira ainsi la connaissance du système qu’il va utiliser ensuite au quotidien. Ce tuto est plutôt donc destiné à un public curieux, mais non expert.
Contexte d’installation
Dans ce tuto, nous prendrons comme exemple un système ne disposant que d’un seul disque dur. Ce dernier est vierge et entièrement dédié à l’installation d’arch linux. Par conséquent, l’intégralité des données éventuellement présentes dans le système va être détruite par notre installation.
Le mode de démarrage de notre système sera le mode UEFI, et le secure boot est désactivé.
Ce tutoriel est basé sur la documentation d’installation officielle et a pour objectif de rendre compréhensible cette documentation au plus grand nombre, afin que tout le monde puisse profiter de la puissance d’arch linux.
Création du média d’installation et démarrage depuis celui-ci
Après avoir téléchargé l’image d’installation de arch linux la plus récente, nous créons une clé USB de démarrage selon le protocole décrit dans cet article présentant comment essayer Ubuntu sans modifier son système avec une clé USB « live ». La distribution est différente, mais la procédure est la même. Comme notre système démarre en UEFI, nous choisirons le partitionnement alternatif proposé par l’utilitaire rufus, à savoir un schéma de partition GPT et un système de destination UEFI (non CSM).
Pour démarrer son système depuis un live USB ; il suffit de presser la touche appelant le menu de démarrage de l’ordinateur pendant la phase de POST, puis de choisir la clé USB fraîchement préparée pour démarrer l’installateur de arch linux.
Préparation
Paramétrer le clavier
Le programme d’installation démarre réglé en clavier US. Il est donc nécessaire de modifier ce paramétrage pour utiliser un clavier français. On peut rapidement passer à une disposition azerty en tapant la commande suivante :
loadkeys fr-latin1
Configurer le réseau
Ici nous allons considérer que nous sommes connectés avec un câble RJ45 derrière une box qui se trouve dans la plupart des foyers. Celle-ci propose un serveur DHCP permettant de configurer automatiquement le réseau des stations clientes. Nous allons donc utiliser le client DHCP de systemd pour configurer automatiquement le réseau avec la commande suivante :
systemctl start systemd-networkd
On vérifie ensuite que notre machine a bien récupéré les paramètres IP fournis par le serveur DHCP de la box avec la commande suivante :
ip a
Cette commande nous montre que l’interface filaire nommée ens18 a bien reçu une adresse IP.
Les deux commandes suivantes montrent quant à elles que notre machine a bien reçu une adresse de passerelle par défaut, ainsi qu’une adresse de serveur DNS : elle pourra bien accéder à internet dorénavant.
ip route resolvctl status
Configurer la date et l’heure
On utilisera le client NTP de notre machine pour configurer automatiquement la date et l’heure, en la synchronisant sur un serveur de temps internet. Le client NTP s’active avec la commande suivante :
timedatectl set-ntp true
Par défaut le fuseau horaire est GMT +0, nous allons nous placer dans le fuseau horaire de Paris avec la commande suivante :
timedatectl set-timezone Europe/Paris
Et nous vérifions que tout est correct avec la commande suivante :
timedatectl status
Partitionner le disque dur
Pour rappel, l’exemple présente ici un système doté d’un disque dur unique et vierge, entièrement dédié à l’installation de notre arch linux. C’est pourquoi nous ne prendrons pas de précautions particulières lors du partitionnement.
Nous allons faire ici dans la simplicité : une seule partition pour y installer tout le système, ainsi qu’une partition dédiée au swap. Comme notre système démarre en UEFI, nous allons également ajouter une petite partition fat32 pour y déposer le matériel de démarrage UEFI.
Le logiciel utilisé sera gdisk, la version du logiciel historique fdisk dédiée au tables de partition de type GPT. En effet, comme notre système démarre en mode UEFI, il est préférable d’utiliser le schéma de partitionnement GPT, par opposition au partitionnement de type MBR (dit également DOS) historiquement utilisé.
Pour déterminer le chemin désignant notre disque dur, nous utilisons la commande lsblk, qui liste les périphériques de type bloc.
lsblk
On y repère notre unique périphérique bloc de type « disk » : ici, il s’appelle vda. Son chemin sera ainsi /dev/vda. L’étape suivante se déroule dans l’interface assistée de gdisk, appelée avec notre disque en paramètre.
gdisk /dev/vda
L’interface est assistée, et la liste des commandes possibles est accessible en saisissant point d’interrogation (« ? ») puis entrée.
Commençons par initialiser une nouvelle table de partitions sur notre disque, qui pour rappel est vierge. On le fait en saisissant « o », puis entrée. L’assistant nous signale qu’il y a danger, car cette opération va écraser toute table de partition existante, ce qui conduirait à une perte éventuelle de données. Pas de souci ici, notre disque est vierge : on confirme donc en saisissant « Y », puis entrée.
Nous poursuivons par la création de la première partition, qui sera celle qui est dédiée au système UEFI. Cela se fait en saisissant « n », puis entrée. L’assistant demande alors quel est le numéro de la partition, nous saisissons « 1 » puis entrée.
Il faut ensuite définir les secteurs de début et de fin de la partition : ici, nous allons utiliser la valeur par défaut pour le secteur de début (2048), les secteurs qui sont avant celui-ci sont réservés, nous ne partitionnerons pas dessus : on appuie sur entrée sans rien saisir.
Pour la fin de la partition, plutôt qu’indiquer un numéro de secteur de fin, nous allons plutôt indiquer la taille désirée pour notre partition, gdisk en déduira tout seul le numéro de secteur de fin de partition. Notre première partition est dédiée à l’UEFI, elle n’a pas besoin d’être grande : nous saisissons « +260M » (pour une taille de 260Mo) puis entrée.
Enfin gdisk nous demande d’indiquer le type de partition en utilisant un code : nous saisissons « L » puis entrée pour avoir la liste des codes :
On saisit « efi » puis entrée pour filtrer les résultats : on obtient « ef00 » pour ce type de partition.
Il faut donc saisir « ef00 » puis entrée.
La partition que nous allons créer à présent est celle qui sera réservée au swap. Le swap est très schématiquement une zone du disque dur dédiée à y simuler de la mémoire vive, lorsque celle-ci peut venir à manquer, ou dans d’autres circonstances.
Le swap est optionnel, et certains administrateurs système n’en mettent pas dans leurs serveurs. De plus, les ordinateurs modernes disposant d’une quantité de mémoire RAM importante (8Go de RAM étant la norme de base actuellement, ce qui est déjà honorable), l’intérêt du swap est moindre. Cependant, nous allons tout de même préparer une partition de swap, pour que ça serve d’exemple.
Le choix de la taille pour une partition de swap n’est pas trivial, et donne souvent lieu à des débats d’expert dans lesquels je ne rentrerai pas ici : pour ma part je n’ai pas réellement de recommandation à faire et je me contenterai de deux conseils qui valent ce qu’ils valent :
- 2 Go de swap ça suffit, et si jamais c’est insuffisant, ce n’est pas la taille de la partition de swap qui est un problème, mais bien la quantité de RAM de l’ordinateur qu’il faut sérieusement augmenter !
- si vous projetez de faire de la veille prolongée (aka suspend to disk), alors votre swap devrait avoir une taille égale à la quantité de RAM de l’ordinateur car le contenu de la RAM sera recopié dedans lors de la mise en veille prolongée.
Toujours devant notre assistant gdisk, nous invoquons la création d’une nouvelle partition en saisissant de nouveau « n » puis entrée. Le numéro de partition est cette fois « 2 » et on valide avec entrée. Nous utilisons de nouveau la valeur par défaut du numéro du premier secteur de la partition (qui est le numéro du secteur qui suit immédiatement le dernier secteur de la partition précédente) : on appuie simplement sur entrée donc. Au lieu d’indiquer un numéro de secteur de fin, nous indiquons une taille de partition comme tout à l’heure : ici on saisit « +2G » puis entrée (pour une taille de partition de 2 Go). Pour le type, nous saisissons « 8200 » puis entrée pour indiquer que c’est une partition de swap.
Enfin, nous allons créer la troisième et dernière partition de notre exemple, qui accueillera la racine de notre arch linux.
De nouveau, on saisit « n » puis entrée pour une nouvelle partition, puis on saisit « 3 » puis entrée pour lui assigner un numéro. On choisit également la valeur par défaut pour le numéro de secteur de début (qui est celui qui suit immédiatement le secteur de fin de la partition précédente), en pressant simplement la touche « entrée » et nous choisissons cette fois-ci également la valeur par défaut du numéro de secteur de fin de partition qui est en fait le dernier secteur du disque dur. Ceci fait que la partition occupera tout l’espace restant disponible sur le disque : on presse ici aussi simplement la touche « entrée ».
Enfin, on indique le type de partition en saisissant ici « 8304 » puis entrée pour indiquer que cette partition contiendra la racine de notre système linux 64 bits. Nous aurions également très bien pu indiquer le code « 8300 » qui indique une partition linux générique, cela fonctionnerait tout aussi bien.
Les trois partitions sont créées, on peut vérifier le résultat en pressant la touche « p » de l’assistant gdisk qui va nous afficher la table des partitions.
Il reste enfin à enregistrer pour de bon cette table dans le disque en pressant la touche « w » puis entrée : c’est la dernière chance de changer d’avis ou de vérifier qu’on ne va pas détruire des données qui n’ont pas été précédemment sauvegardées, puis on valide en pressant « Y » puis entrée.
Notez que même si on s’est trompé, et qu’il y a des données sur le disque qu’on a oublié de sauvegarder, il est encore temps de les sauver car nous n’avons fait que réécrire la table des partitions. Les données sur le disque sont toujours là. Théoriquement il est donc possible d’y accéder encore, mais pour ce faire il faut recréer à l’identique la table de partitions précédente, ce qui ne sera pas forcément facile, et cela sort du cadre de ce tuto. Vous n’aviez qu’à vérifier deux fois vos sauvegardes…
Créer les systèmes de fichiers des nouvelles partitions
Nous disposons à présent de nos trois partitions suivantes :
- /dev/vda1 qui sera la partition dédiée UEFI : elle doit être formatée en fat32 pour être accessible au système UEFI.
- /dev/vda2 qui sera le swap et devra donc être préparée comme telle.
- /dev/vda3 qui sera la racine du système, qui nous allons arbitrairement formater en ext4. D’autres systèmes de fichiers auraient également pu convenir comme xfs (réputé un peu plus rapide que ext4) ou encore btrfs qui représente probablement l’avenir des systèmes de fichiers pour Linux (mais qui n’est peut-être pas encore suffisamment mature).
La création du système de fichiers pour /dev/vda1 se fait avec la commande suivante :
mkfs.fat -F32 /dev/vda1
La création du système de fichiers pour /dev/vda3 se fait avec la commande suivante :
mkfs.ext4 /dev/vda3
Nous allons également assigner un label à notre partition racine, pour utiliser plus tard dans le fichier /etc/fstab. On le fait par exemple avec la commande suivante :
tune2fs -L racine /dev/vda3
La préparation de la partition de swap se fait avec la commande suivante :
mkswap /dev/vda2
Montage des systèmes de fichiers
Ici, il s’agira de mettre à disposition les systèmes de fichiers préparés précédemment dans le contexte live dans lequel l’installation se déroule, afin de copier dedans les fichiers constituant l’installation de notre arch linux.
On monte d’abord la partition qui contient le système de fichiers qui accueillera la racine de notre arch linux (ici, /dev/vda3), dans le répertoire /mnt :
mount /dev/vda3 /mnt
Ensuite nous créons un répertoire dans notre volume racine pour accueillir le point de montage de partition dédiée à l’UEFI, et nous la montons dedans.
mkdir /mnt/efi mount /dev/vda1 /mnt/efi
Enfin, nous activons la partition de swap :
swapon /dev/vda2
On peut vérifier que tout s’est bien passé, d’abord avec la commande mount :
mount
Qui met bien en évidence les deux volumes montés.
Ensuite avec la commande free :
free
Qui montre l’espace de swap de 2 Go précédemment préparé.
Installation
Configurer les dépôts
Juste avant de procéder au téléchargement du système de base, nous allons configurer les dépôts les plus proches et les plus rapides depuis lesquels télécharger les fichiers. Ça se fait avec l’utilitaire reflector, à qui nous allons demander de nous sélectionner les miroirs de dépôts français les plus rapides, et de les conserver dans un fichier de configuration du plus rapide au moins rapide : grâce à la commande suivante :
reflector --country France --protocol https --protocol http --sort rate --save /etc/pacman.d/mirrorlist
Si on affiche le contenu du fichier /etc/pacman.d/mirrorlist, on constate que ne sont présents dedans que les dépôts localisés en France :
cat /etc/pacman.d/mirrorlist
Télécharger le système de base
On le fait grâce à l’utilitaire pacstrap, à qui on va demander de télécharger les éléments suivants :
- le noyau linux
- les utilitaires de base provenant du paquet arch éponyme
- un paquet contenant de nombreux firmware pour permettre de faire fonctionner les matériels correspondant avec le noyau linux
- un ensemble d’utilitaires réseau (qui est déprécié et remplacé par d’autres dans la plupart des distributions, mais que mes habitudes de vieux bougon m’empêchent d’abandonner…)
- un éditeur de texte en mode console
- les utilitaires liés aux pages de documentation, et les pages de documentation elles-mêmes
- les utilitaires du chargeur d’amorçage grub et un utilitaire servant à écrire les entrées du menu de démarrage dans la mémoire UEFI
La commande est la suivante:
pacstrap /mnt base linux linux-firmware net-tools nano man-db man-pages man-pages-fr grub efibootmgr
Générer le fichier fstab
C’est ce fichier qui contient la liste des systèmes de fichiers à monter au démarrage du système. On le génère automatiquement à l’aide de l’utilitaire genfstab qui va détecter les partitions que nous avons montées précédemment, et va peupler le fichier avec. Nous utilisons l’option « -L » de genfstab, qui va identifier nos partitions avec leur label (nous en avons créé un pour /dev/vda3 précédemment à cette fin) plutôt qu’avec leur uuid pour que ça soit plus lisible).
genfstab -L /mnt >> /mnt/etc/fstab
On vérifie ensuite le résultat en affichant le contenu du fichier /mnt/etc/fstab
cat /mnt/etc/fstab
« chrooter » l’environnement
Nous sommes toujours dans le contexte « live USB » qui nous sert à procéder à l’installation de base, cependant, les opérations qui vont suivre ont besoin d’être exécutées dans le contexte du système que l’on installer : pour ce faire, on change la racine du système, pour la positionner sur la racine du système que l’on installe actuellement montée sur /mnt. Arch linux dispose de son propre utilitaire pour réaliser le chroot :
arch-chroot /mnt
A partir de ce moment, le préfixe « /mnt » que nous avions précédemment n’existe plus. Les chemins que nous allons utiliser seront les mêmes que ceux du système définitif.
Ajuster l’heure et le fuseau horaire du système définitif
En effet, précédemment nous avons ajusté l’heure du système « live », cette fois-ci il est nécessaire de la faire pour le système cible.
On commence par configurer le fuseau horaire en faisant un lien symbolique sur le fichier de zone Europe/Paris :
ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
Ensuite nous synchronisons l’horloge matérielle de l’ordinateur avec celle du système et générons le fichier /etc/adjtime. Celui-ci contient la valeur de la dérive de l’horloge matérielle par rapport au temps réel:
hwclock --systohc
Configuration de l’environnement linguistique
Nous allons activer le support de la langue anglaise/US, ainsi que celui de la langue française. On commence par éditer le fichier /etc/locale.gen avec l’éditeur de texte « nano » que nous avons installé précédemment :
nano /etc/locale.gen
Et nous supprimons la caractère « # » qui est devant la ligne « en_US.UTF-8 UTF-8 » ainsi que celui qui est devant les lignes « fr_FR.UTF-8 UTF8 » et « fr_FR ISO-8859-1 ».
On enregistre les modifications avec le raccourci clavier CTRL+O (valider avec la touche entrée) et on quitte nano avec le raccourci clavier CTRL+X.
Ensuite nous générons l’environnement linguistique avec la commande suivante :
locale-gen
Puis nous définissons la langue par défaut avec la commande suivante :
echo LANG=fr_FR.UTF-8 > /etc/locale.conf
Enfin, il reste à s’assurer que notre arch linux utilisera par défaut notre beau clavier fr-latin1 dès le prochain démarrage avec la commande suivante :
localectl set-keymap --no-convert fr-latin1
Donner un nom à notre machine
Avec la commande suivante : (le nom ici sera tuto-arch)
echo tuto-arch > /etc/hostname
Ensuite nous générons le fichier de configuration nécessaire au système pour qu’il puisse résoudre son nom local :
echo -e "\n127.0.01\tlocalhost\n::1\t\tlocalhost\n127.0.1.1\ttuto-arch" >> /etc/hosts
Le fichier /etc/hosts doit ressembler à ça :
cat /etc/hosts
Si la commande echo précédente est intimidante, on peut très bien utiliser nano comme on l’a vu précédemment pour éditer le fichier /etc/hosts, ça marche aussi bien 🙂
Activer le client DHCP pour les prochains démarrages
installer le démon client dhcpcd:
pacman -S dhcpcd
Puis activation de celui-ci:
systemctl enable dhcpcd
Définir le mot de passe root
« root » est comme vous le savez l’utilisateur administrateur de la machine. On définit son mot de passe avec la commande passwd : (attention la saisie est invisible)
passwd
Créer un utilisateur non root
C’est celui qu’on utilisera au quotidien, en dehors des tâches d’administration du système. C’est dans le profil de cet utilisateur (qui sera créé à la volée) que seront stockés nos fichiers, et nos préférences et fichiers de configuration personnalisés. Ça se fait avec la commande useradd:
useradd -d /home/julien -m -s /bin/bash julien
Puis on lui définit un mot de passe avec la commande suivante :
passwd julien
Installer le chargeur d’amorçage grub
C’est lui qui va prendre en charge la première partie du démarrage de notre système. On l’installe avec la commande suivante :
grub-install --target=x86_64-efi --efi-directory=efi --bootloader-id=GRUB
Dans cette commande, la valeur du paramètre target signifie que notre machine est une machine compatible x86 64 bits. La valeur du paramètre efi-directory indique le répertoire dans lequel nous avons monté la partition UEFI précédemment. Enfin, la valeur du paramètre bootloader-id est ce qui sera affiché dans le menu du chargeur d’amorçage intégré à l’UEFI.
Il faut également configurer le chargement précoce des correctifs de firmware pour notre processeur. En effet, certaines familles de processeurs présentent des bugs, qui doivent être corrigés au moment du démarrage du système par le chargement d’un firmware correctif. Cela doit être fait à chaque démarrage, car on ne peut pas re-graver le processeur 🙂 .
En fonction du fabriquant du processeur, on téléchargera le paquet intel-ucode ou le paquet amd-ucode, avec la commande suivante :
pacman -S intel-ucode
ou
pacman -S amd-ucode
Il reste enfin à générer le fichier de configuration principal de grub, avec la commande suivante :
grub-mkconfig -o /boot/grub/grub.cfg
Premier (re)démarrage
L’installation de notre système de base est terminée. Il ne reste plus qu’à quitter l’environnement chrooté avec la commande exit :
exit
Puis à redémarrer la machine avec la commande reboot :
reboot
Il faut bien à penser à retirer notre média d’installation pour ne pas de nouveau démarrer dessus. On devrait arriver au menu de démarrage de grub :
Puis quelques instants plus tard, au prompt de connexion de la console de notre arch linux toute fraîchement installée. Notez qu’il est possible que le clavier ne soit pas resté sur une disposition française par défaut (posant des problèmes si le mot de passe contient des touches concernées…). Dans ce cas on peut renouveler la commande:
localectl set-keymap --no-convert fr-latin1
La première partie de ce tutoriel d’installation d’arch linux est terminée. Nous disposons à présent d’un système minimaliste mais fonctionnel, occupant moins de 2 Go sur notre disque dur. Il pourrait même déjà faire office de serveur (moyennant l’ajout du programme serveur correspondant, et peut-être le démon SSH pour le gérer) et prendre place dans mon micro-datacenter 🙂
Rendez-vous à la deuxième page de cet article, où nous verrons comment installer le serveur graphique. Nous installerons également un environnement graphique de bureau, ainsi qu’une sélection de logiciels couvrant nos besoins pour une utilisation quotidienne de notre arch linux.
Merci beaucoup pour ce tuto très complet. Cela a l’air facile d’installer Arch… Je suis sous EndeavourO qui s’installe aussi facilement qu’un Mint. Au prochain plantage, à la prochaine réinstallation, je teste votre tuto. Merci!