Archlinux: Guide d’installation sur systèmes UEFI

Archlinux: Guide d’installation sur systèmes UEFI

25 février 2018 0 Par Mairien Anthony

Cet article va traiter de la très connue distribution Archlinux, réputée pour être extrêmement minimaliste, robuste, mais difficile à aborder pour les novices. Nous allons donc voir son installation  sur une machine avec UEFI, pas à pas, tout en décrivant chaque étape et chaque commande.

Sommaire:

1) Création de la VM et téléchargement de l’ISO
2) Démarrage et partitionnement du disque
3) Installation des dépôts et du système
4) Installation et configuration de GRUB
5) Premier redémarrage
6) Configuration du système
7) Création d’un utilisateur admin et réglages de base
8) Installation d’xorg
9) Installation des outils d’impression, de yaourt, et services au démarrage

ArchLinux est une distribution Linux créée par un développeur Canadien du nom de Judd Vinet, ayant pour objectif principal d’être la plus simple possible (selon la philosophie KISS: Keep it simple, stupid) et être orientée pour les utilisateurs avancés. Ici, pas d’interface graphique lors de l’installation, seulement de la ligne de commande ! L’utilisateur doit donc créer soi-même ses partitions, monter les fichiers système, installer (ou non) une interface graphique à la main, etc. Cela permet d’obtenir un système d’exploitation dépourvu de paquets supplémentaires, en sachant exactement ce qui est installé et comment cela fonctionne.

C’est donc une distribution en rolling release, ce qui veut dire que les paquets sont mis à jour sans interruptions, il n’y a pas de « grosse mise à jour » comme pour une Debian ou Ubuntu (attention donc lors de certaines mises à jour, car les paquets ne sont pas tous entièrement testés, certains sont encore en bêta).

Pour ce qui est de l’installation de logiciels, cela passe par ABS (Arch Build System), un système ressemblant fortement aux distributions BSD (nous n’en parlerons pas ici). ABS permet donc d’installer des paquets pré-compilés ou d’en compiler soi-même depuis les sources. Quand aux paquets binaires -qui sont les plus courants- , on utilisera le gestionnaire qui répond au nom de Pacman.

Les paquets construits depuis les sources utilisent un dépôt dénommé AUR (pour Arch User Repository), ceux-ci sont en fait des scripts qui téléchargent-compilent-configurent automatiquement chaque logiciel. Ils sont tous maintenus par la communauté.

En complément de ces dépôts officiels, il en existe énormément d’autres, certains ayant un thème précis comme le dépôt des utilisateurs d’Archlinux.fr .

Actuellement, les paquets dans les dépôts officiels d’Arch existent en différentes versions, à savoir :

  • Core – Contenant tous les paquets requis pour installer un système de base ;
  • Extra – Contenant des paquets non requis pour un système de base mais utiles pour améliorer l’utilisation quotidienne (environnements de bureau, langages de programmation, etc) ;
  • Testing – Contenant des paquets susceptibles de poser problème durant une mise à jour et qui sont en attente de rapports de bugs ;
  • Community – Contenant les paquetages choisis par vote sur AUR et maintenus par des utilisateurs reconnus ;
  • Multilib – Contenant les paquets des programmes/bibliothèques en 32bits pour l’architecture 64bits (wine, skype et flashplugin, etc). Cela permet d’utiliser des applications qui n’existent qu’en 32bits.
  • Source – Contenant les sources de certains paquets  ;
  • Iso – Contenant des fichiers pour l’installation d’Arch Linux ;

En plus de ces versions, il existe trois dépôts de test :

  • Testing – Pour les paquets Core et Extra
  • Community-testing – Pour les paquets de Community
  • Multilib-testing – Pour les paquets de Multilib

Par défaut, ces trois dépôts ne sont pas utilisés par pacman (et c’est tant mieux !).

1) Création de la VM et téléchargement de l’ISO

La première étape est donc d’aller sur le site officiel d’Arch pour télécharger l’ISO (en 64 bits): ArchLinux.org – downloads

Une fois votre ISO téléchargée, nous allons commencer la création de notre machine virtuelle (sous Vmware, comme toujours):

Comme vous pouvez le voir, un disque de 20Go, 4Go de mémoire vive et un CPU 2 cœurs sont plus que suffisants. Pour pouvoir activer l’UEFI sur une machine virtuelle dans VMware, terminez sa création puis allez dans son dossier, ouvrez le fichier votre_vm.vmx puis rajoutez cette ligne-ci:

firmware = "efi"

Voilà, nous pouvons à présent commencer !

2) Démarrage et partitionnement du disque

Bien, une fois votre VM démarrée, la première étape consiste à partitionner son disque. Ici, nous allons essayer de nous rapprocher de la version du Wiki officiel d’Arch sans pour autant le suivre à la lettre. La toute première étape après avoir booté est donc de passer son clavier en azerty via la commande:

loadkeys fr-pc

Ensuite nous pouvons lister nos périphériques de stockage pour voir si notre disque virtuel de 20Go est bien reconnu:

Comme vous pouvez le voir, il est ici en /dev/sda. Pour rappel, sous Linux la nomenclature des périphériques est telle que:

  • /dev : répertoire contenant tout les devices de votre ordinateur, que ce soit votre (ou vos) disque(s), votre lecteur cd, votre webcam…
  • /sd : désigne un périphérique permettant le stockage de données (donc pas de webcam, clavier, ou autre ici).
  • /sda : la lettre après sd identifie le périphérique, par exemple sda pour le lecteur cd, sdb pour votre disque dur, sdc pour votre clé USB, etc.
  • /sda1 : le numéro après la lettre qui identifie votre périphérique est le numéro de la partition. Par exemple, si votre disque dur en /dev/sda contient 3 partitions, elles seront notées comme ceci: /dev/sda1, /dev/sda2, et /dev/sda3.

A noter qu’il existe aussi des périphériques spéciaux dans ce répertoire, comme:

  • /dev/random : génère une sortie aléatoire
  • /dev/null : utilisé en général pour se débarrasser de fichiers ou documents
  • /dev/loop0 permet de créer de faux périphériques de type block (stockage) à partir de fichiers créés avec la commande dd

Après ce petit rappel, nous pouvons poursuivre 😉

Pour le partitionnement de notre disque nous allons utiliser l’utilitaire cgdisk, qui est présent sur la quasi-totalité des distributions Linux:

cgdisk /dev/sda

Il vous sera alors affiché un message d’erreur vous disant que votre disque est endommagé ou non formaté en GPT, ce qui est tout à fait logique. Appuyez sur Enter et vous arriverez au menu principal:

Nous allons partitionner 20Go comme suit:

  • Une partition de 512Mb (/boot):
  • Une partition de 10Go (/)
  • Une partition de 7Go (/home)
  • Une partition de 2Go pour le Swap

Il vous suffit d’aller sur free space, puis New, ensuite cliquez simplement sur Enter, attribuez la taille désirée pour la partition (512M pour la partition EFI par exemple), ensuite deux fois Enter.

*Pour la partition EFI et Swap, il vous faudra renseigner un code spécifique avant le dernier Enter (8200 pour la swap, et ef00 pour l’EFI).

Après avoir terminé le partitionnement, on clique sur write, puis quit et le tour est joué !

On peut afficher les partitions existantes sur notre disque via la commande lsblk :

On formate ensuite nos partitions avec les systèmes de fichier adéquats:

#Pour la partition root
mkfs.ext4 /dev/sda1
#Pour la partition home
mkfs.ext4 /dev/sda4
#Pour la partition boot
mkfs.fat -F32 /dev/sda2
#Pour la swap
mkswap /dev/sda3
#Pour activer la swap
swapon /dev/sda3

A noter que vous pouvez rajouter la variable -q pour enlever le mode verbeux, ce qui peut « accélérer » le formatage de grosses partitions.

Vient ensuite leur montages:

mount /dev/sda1 /mnt

La commande mount permet comme son nom l’indique de monter le volume, et le /mnt est le dossier où il sera monté. A noter qu’il faut monter la partition root dans le /mnt.

Nous allons en même temps créer le dossier /boot dans le dossier /mnt car celui-ci n’existe pas par défaut, ainsi que le /home.

mkdir /mnt/{boot,home}

On termine:

mount /dev/sda2 /mnt/boot
mount /dev/sda4 /mnt/home

Bien ! Désormais, on peut vérifier nos montages via la commande mount :

Aux dernières lignes on voit bien nos trois partitions ainsi que leur système de fichier.

3) Installation des dépôts et du système

La prochaine étape est d’installer un petit utilitaire très léger permettant de sélectionner certains miroirs dans certains pays, pour rendre nos téléchargements et mises à jour bien plus rapides à l’avenir.

Mais avant de télécharger reflector, nous allons rapidement modifier manuellement le fichier miroirs situé dans /etc/pacman.d/mirrorlist, et rajoutez un # devant les premiers serveurs jusqu’à celui situé en Belgique, pour justement accélérer notre premier téléchargement 😉.

Ensuite on peut télécharger reflector:

pacman -Sy reflector

Pour choisir certains miroirs, la commande est un poil plus complexe:

reflector -c France -l 20 -f 10 --sort rate --save /etc/pacman.d/mirrorlist
  • -c France : permet de choisir le pays où sont les miroirs ;
  • -l 20: nombre de miroirs à ‘scanner’ ;
  • -f 10 : nombre de miroirs à sélectionner et utiliser ;
  • –sort –rate : permet de les lister par ordre de vitesse ;
  • –save /etc/pacman.d/mirrorlist : écrase le fichier contenant les miroirs par défaut et le remplace par la liste des nouveaux miroirs choisis précédemment ;

Il ne nous reste plus qu’à mettre à jour nos dépôts:

pacman -Syy

On peut déjà modifier le fichier /etc/pacman.conf et décommentez le dépôt [multilib] pour avoir accès aux paquets 32 bits par la suite, ainsi que rajouter le dépôt d’archlinux.fr :

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Nous allons à présent pouvoir installer les fichiers systèmes, et commencer l’installation d’ArchLinux à proprement parler 🙂.

La commande est extrêmement simple: le meta-package base va installer le système de base, et le meta-package base-devel va installer d’autres utilitaires et composants systèmes indispensables à la compilation de paquets (qui est assez régulière pour rappel). On installe donc les deux:

pacstrap /mnt base base-devel

*Pour info, les meta-packages sont des sortes de packages comportant d’autre packages.

On continue l’installation en rajoutant divers utilitaires (je vais rapidement vous en décrire quelque uns, pour les autres, je vous invite à vous renseigner sur internet) :

pacstrap /mnt zip unzip p7zip vim mc alsa-utils syslog-ng mtools dosfstools lsb-release ntfs-3g ntp cronie git
  • zip et unzip permettent de créer/extraire des archives
  • p7zip est l’équivalent du 7-zip de windows, mais porté sous Linux
  • vim est un éditeur de texte version console
  • mc (Midnight Commander) est un utilitaire très pratique permettant de ne pas taper de commandes, nous l’utiliserons plus loin
  • alsa-utils est un utilitaire pour le son
  • syslog-ng est un serveur permettant la centralisation des journaux d’évènements
  • mtools est une collection d’outils permettant la manipulation de fichiers MS-DOS sous GNU/Linux

Ensuite nous allons générer notre fichier fstab (file system table). C’est en réalité une table des différents systèmes de fichiers sur une machine sous Unix/Linux : il contient une liste des disques utilisés au démarrage et des partitions de ces disques. Pour chaque partition, il indique comment elle sera utilisée et intégrée à l’arborescence du système de fichiers (c’est-à-dire le point de montage).

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

La variable -U va utiliser l’identification de partitions par les UUID, qui permettront d’identifier clairement un disque ou une partition. Ensuite, on redirige la sortie de cette commande dans le fichier fstab.

4) Installation et configuration de GRUB

Pour l’installer, rien de plus simple:

pacstrap /mnt grub os-prober efibootmgr
  • GRUB: acronyme signifiant en anglais Grand Unified Bootloader, c’est un programme d’amorçage de micro-ordinateur qui s’exécute donc à la mise sous tension de l’ordinateur, après les séquences de contrôle du BIOS et avant le système d’exploitation proprement dit car son rôle est justement d’en organiser le chargement. Lorsque l’ordinateur comporte plusieurs systèmes (multi-boot), il permet à l’utilisateur de choisir quel système démarrer.
  • Os-prober: détecte les autre OS installés sur la machine et les propose directement au démarrage, sans avoir à les renseigner manuellement
  • Efibootmgr: EFI Boot Manager est un utilitaire utilisable en ligne de commande permettant de gérer le chargeur de démarrage EFI. Il permet aussi de modifier l’ordre de démarrage des OS disponibles, etc.

Arrivé à ce stade, pour pouvoir poursuivre l’installation, on va devoir changer le répertoire d’installation et se placer dans /mnt : ce sera notre disque dur, et non plus le CD d’installation. Cette manipulation est obligatoire pour diverses raisons, notamment pour pouvoir configurer correctement GRUB:

arch-chroot /mnt

Bien. Maintenant, nous allons pouvoir générer le fichier de configuration de GRUB:

mkinitcpio -p linux 
#Si noyau LTS: 
mkinitcpio -p linux-lts
#Puis on finis la configuration en lui indiquant le bon répertoire
grub-mkconfig -o /boot/grub/grub.cfg

*Pour ceux désirant un noyau LTS, il vous suffit de le télécharger via la commande pacman -Sy linux-lts. Je n’en parlerai pas ici, à vous de regarder sur le wiki officiel.

Une fois GRUB configuré, il est important de vérifier si l’EFI a bien été configuré lui aussi, avec la commande mount. Si une ligne ‘efivarfs‘ apparaît, alors tout est bon et on peut continuer 🙂.

On finit ensuite son installation:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck

-> Une commande supplémentaire mais facultative qui permet de s’assurer que l’on arrivera bien à redémarrer en UEFI:

mkdir /boot/EFI/boot
cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi

La dernière étape concerne la configuration réseau,dû moins, pour son installation basique. Il nous suffit d’installer le paquet NetworkManager et de l’activer via systemctl:

pacman -S networkmanager
systemctl enable NetworkManager

5) Premier redémarrage

Après avoir installé notre système de base, faites  un exit pour sortir du chroot, puis démontez tous les points de montage précédemment montés:

umount -R /mnt

La variable -R active le mod récursif, permettant de s’appliquer à tous les fichiers et dossiers sous-jacent. Une fois fait, on enlève le CD d’installation de la vm, puis on reboot.

On peut d’ores et déjà voir au démarrage que GRUB est fonctionnel et qu’il reconnaît bien notre partition boot où nous avons installé notre ArchLinux, c’est un bon gros point !

Et voilààà ! Vous êtes sur une ArchLinux fraîchement installée et encore non-configurée présente sur votre disque dur ! Vous pouvez être fier ! 😁
Il reste encore cependant la configuration réseau avancée, le changement d’hostname, l’installation d’une interface graphique…

6) Configuration du système

Bien, nous allons pouvoir commencer à configurer le hostname, la langue du système, l’agencement du clavier, l’heure, etc.

Pour modifier le nom d’hôte de notre machine, rien de plus simple:

hostnamectl set-hostname station-arch

Pour afficher directement le nouveau hostname, tapez simplement exec bash pour ouvrir un nouveau terminal. Vous pouvez aussi utiliser la commande hostnamectl pour obtenir plus d’informations sur votre machine:

Ensuite vient la langue: il vous suffit d’éditer le fichier /etc/locale.conf et d’y ajouter ceci:

LANG=fr_FR.UTF-8
LC_COLLATE=C

Et même chose pour le clavier, mais ce coup-ci ce sera le fichier /etc/vconsole.conf:

KEYMAP=be-latin1
FONT=lat9w-16

On en profite aussi pour éditer les locales (dans /etc/locale.gen). Ici, vous n’avez qu’à simplement dé-commentez deux lignes, une en_US en UTF-8 et l’autre fr_FR aussi en UTF-8.

Et ensuite on les génèrent:

locale-gen

Et voilà ! Pour nos futurs redémarrages, notre machine sera en langue française, tout comme notre clavier !

Vient ensuite l’heure:

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

Ici, on créer un lien symbolique vers le bon fuseau horaire, en l’occurrence, celui de Bruxelles.

Ensuite, si vous êtes dans le cas d’une installation en multi-boot (avec Windows donc), vous n’avez pas à rentrer cette commande, et si, dans l’autre cas c’est une installation « mono-boot » il nous faut dire à Arch d’utiliser l’heure au format UTC:

hwclock --systohc --utc

7) Création d’un utilisateur admin et réglages de base

La première étape est donc de donner un mot de passe pour notre compte root:

passwd root

Ensuite on créer un utilisateur que l’on va intégrer à la fois dans le groupe users (utilisateurs ‘classiques’) et wheels (administrateurs):

useradd -m -G wheel,users it-anthony
chown it-anthony -R /home/it-anthony

A vous ensuite de donner un mot de passe pour cet utilisateur (commande identique que celle pour le compte root plus haut).

Désormais, il ne reste plus qu’à modifier le fichiers contenant la configuration pour les sudoers (administrateurs) si besoin est:

visudo

Cela permet de modifier qui a droit à la commande sudo: décommentez la ligne en fin de fichier #wheel ALL=(ALL) … et les utilisateurs du groupe wheels seront autorisés à utiliser la commande sudo:

Petite parenthèse sécurité, si vous le désirez aussi vous pouvez désactiver le mot de passe pour le compte root, ce qui bloquera sa connexion via l’accès console, SSH, Telnet, etc. En général, ce genre de sécurité est plutôt réalisée sur des serveurs en production, pas des machines deskstops mais je trouvais ça intéressant d’en parler.

passwd -l root

Vient ensuite la configuration d’alsamixer, qui se fait en deux lignes de commandes très simple (on va simplement modifier les paramètres de base pour obtenir le volume à 100%):

alsamixer

Echap pour quitter, puis ensuite on sauvegarde la configuration:

alsactl store

Toujours dans les petites configurations supplémentaires, nous allons modifier journald pour passer les fichiers journaux au format .txt :

nano /etc/systemd/journald.conf
#On modifie la ligne "ForwardToSyslog=no" en "ForwardToSyslog=yes"

Après ça, on ajoute le support pour l’audio et les codecs en général, comme ça tout ce qui est audio ou vidéo sera supporté 😁 :

pacman -S gst-plugins-base gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav

On choisis le preset par défaut (1) pour les deux options qui vous seront demandées.

8) Installation d’xorg

X.org est un logiciel libre fournissant un serveur X pour les systèmes d’exploitation de type UNIX, c’est-à-dire qu’il permet de gérer l’affichage des éléments à l’écran, notamment les fenêtres fournies par le gestionnaire de fenêtres, le tout via le protocole X11. Depuis 2012, le protocole Wayland permet de gérer l’affichage de manière davantage sécurisée et optimisée pour les compositeurs graphiques des environnements modernes. Il devrait donc à terme remplacer xorg.

On va donc installer les composants dont nous aurons besoin :

pacman -S xterm xorg-xinput xorg-xinit xorg-server xorg-xhost xdg-user-dirs xf86-video-vesa 
#Si vous possédez un pavé tactile, rajoutez xf86-libinput

A noter que xdg-users-dirs n’est pas obligatoire mais nous permettra d’avoir les répertoires utilisateurs en français, ce qui n’est pas plus mal en soit.

Ensuite on installe les fonts nécessaires:

pacman -S ttf-bitstream-vera ttf-dejavu ttf-freefont ttf-liberaton

*Si vous installez votre Archlinux sur une machine virtuelle sous Virtualbox, il peut être intéressant de déjà installer les Guest Additions:

pacman -S virtualbox-guest-utils

Choisissez ensuite l’option numéro 2, sinon vous devrez ré-installer les modules à chaque changement de noyau.

Puis on active les services au démarrage:

systemctl enable vboxservice

9) Installation des outils d’impression, de yaourt, et services au démarrage

Vient ensuite l’installation et la configuration de tout ce qui est gestion d’imprimantes:

pacman -S cups hplip python-pyqt5

Et on va installer une grosse majorité des pilotes d’impression, histoire d’être tranquille 🙂 :

pacman -S foomatic-db foomatic-db-ppds foomatic-db-gutenprint-ppds foomatic-db-nonfree foomatic-db-nonfree-ppds gutenprint

Pour installer et utiliser yaourt, il nous faut installer package-query au préalable:

git clone https://aur.archlinux.org/package-query.git

On se rend ensuite dans le dossier de package-query, et on le compile (la variable -si permet de lancer l’installation directement après la compilation):

cd package-query/
makepkg -si

Puis on peut (enfin) télécharger et compiler yaourt, de la même façon:

git clone https://aur.archlinux.org/yaourt.git
cd yaourt/
makepkg -si

La dernière étape est de mettre à jour yaourt, puis de vider le cache:

yaourt -Syua
yaourt -Scc

Pour rappel, yaourt est une surcouche à Pacman, permettant notamment la compilation et l’installation interactive, ainsi que le support d’AUR.

Bien ! On approche de la fin ! On va simplement activer quelques services nécessaires au démarrage:

#Pour l'heure
systemctl enable ntpd 
#Pour les tâches quotidiennes
systemctl enable cronie 
#Pour les services d'impression
systemctl enable org.cups.cupsd 
#Pour les réglages réseau et DNS
systemctl enable avahi-daemon 
systemctl enable avahi-dnsconfd
#Et enfin syslog-ng pour les logs
systemctl enable syslog-ng@.service

On peut re-démarrer, et c’est fini !

Voilà voilà ! Vous avez à présent une Archlinux entièrement fonctionnelle et très minimaliste ! Je rédigerai dans les jours qui suivent un autre tutoriel sur l’installation d’une interface graphique (Mate à mon humble avis) et encore quelques petites configurations supplémentaires 🙂.

N’hésitez pas à vous rendre sur le site d’archlinux.fr ou directement sur le wiki officiel pour faire de plus amples recherches ou si vous avez des questions ou autres problèmes.

A noter que je ne suis en aucun cas un grand habitué de cette distribution, et que je me suis basé sur divers tutoriels (en anglais notamment) en essayant de rendre le tout le plus clair possible, si vous relevez donc quelque erreurs/oublis, n’hésitez pas à m’en faire part !