[root@arch ~]#

Tuto mis à jour : 01.03.2022

Prérequis

Télécharger l’iso d’Arch sur le site officiel : https://www.archlinux.org/download/ Installer l’iso sur une clé USB. Plusieurs manières de s’y prendre :

Premières étapes

Démarrer l'ordinateur sur la clé USB.

Clavier

Mettre le clavier en azerty :

loadkeys fr

Pour d'autres dispositions de touches, une liste complète est accessible via la commande ls /usr/share/kbd/keymaps/**/*.map.gz.

Police

Faites-vous une faveur, augmentez-la taille de la police pour votre confort:

setfont ter-124b

La liste complète des polices est accessible via ls /usr/share/kbd/consolefonts/.

Activer la connexion internet

Nous avons besoin d’une connexion internet pour installer le système. Le plus simple est de relier votre ordinateur au routeur par ethernet. Si c'est impossible, voici comment activer le Wi-Fi:

ip link

drawing

Repérez le nom de votre carte Wi-Fi -- généralement wlan0 (wlp3s0 dans l'exemple ci-dessus) -- puis :

iwctl station wlan0 scan station wlan0 connect SSID exit

Pensez à remplacer wlan0 par le nom de votre carte Wi-Fi. Le SSID est le nom de votre réseau Wi-Fi. Testons le bon accès à internet :

ping 1.1.1.1 -c 5

Si vous recevez des temps de réponse du serveur, la connexion est bien établie.

Mode d'amorçage

Premier moment déterminant: prendre bonne note du mode d'amorçage compatible avec votre matériel (BIOS ou UEFI). De cette étape dépend le bon fonctionnement du boot loader, qui s'occupe de charger le kernel et le ramdisk avant d'initier le démarrage système (voir ici pour les explications). Votre matériel (hardware) va donc vous imposer de respecter quelques règles pour le bon déroulement de l'installation.

BIOS ou UEFI?

Observez le résultat de cette commande:

cat /sys/firmware/efi/fw_platform_size

Deux possibilités :

Partitionnement logique (LVM)

Deuxième moment déterminant: prendre bonne note du nom du disque dur qui va accueuillir le système d'exploitation. La commande lsblk sert à lister tous les supports de données détectés par Linux:

lsblk

Example of the result of lsblk command.

Dans l'exemple ci-dessus, sda représente un disque dur. sda1 et sda2 sont des partitions physiques. vgarchlinux-* sont des partitions logiques

Si vous n’avez qu’un disque dur connecté à votre carte mère, le nom de disque sera probablement sda, mais ce n’est pas obligatoire.

Petit aparte: il existe des différences entre une table de partition GPT et une table de partition MBR. Pour la faire courte et trancher, GPT est à préférer (mais faites-vous un avis personnel).

À la différence du partitionnement physique (cf Annexe), le partitionnement logique permet d’utiliser tout l’espace disque et est plus flexible. Par exemple, il est possible de créer plus de quatre partitions, ce qui n'est pas le cas avec le partitionnement physique.

⚠️ Attention, dans les étapes qui suivent nous partirons du principe que le nom de votre disque dur est sda. Soyez vigilant si le vôtre porte un nom différent ⚠️

Si votre matériel est compatible BIOS

cfdisk /dev/sda

(Si le disque contient déjà des partitions, et que vous avez déjà backuper les données impportantes qu'elles contiennent, appliquez Delete sur chacune d'entre elles. En revanche, si des données importantes s'y trouvent encore, à vous de faire le nécessaire avant de poursuivre.)

  • New
  • Primary, Size 1M, puis Type, BIOS boot, et Write.
  • New
  • Primary, Size (utilisez le restant du disque), puis Type, Linux LVM, et Write.
  • Quit
  • pvcreate /dev/sda2 vgcreate vglinux /dev/sda2

    Si votre matériel est compatible UEFI

    cfdisk /dev/sda

    (Si le disque contient déjà des partitions, et que vous avez déjà backuper les données impportantes qu'elles contiennent, appliquez Delete sur chacune d'entre elles. En revanche, si des données importantes s'y trouvent encore, à vous de faire le nécessaire avant de poursuivre.)

  • New (utilisez la totalité du disque)
  • Primary, Size (utilisez le restant du disque), puis Type, Linux LVM, et Write.
  • Quit
  • pvcreate /dev/sda1 vgcreate vglinux /dev/sda1

    Le volum group appelé vglinux contiendra les différentes partitions que nous allons ajouter; à savoir: /boot, /root, /home et swap (partition d’échange pour alléger la charge RAM).

    Créer la partition boot d’une taille de 500Mo, au sein du groupe de volume vglinux:

    lvcreate -n boot -L 512M vglinux

    Si un message d’erreur vous signale qu’une partition LVM est déjà existante, tapez yes et utilisez la commande vgremove comme ceci : vgremove vglinux /dev/sda (en remplaçant par le nom du précédent groupe de volume et de la partition sur laquelle il se trouve).

    Passons à la partition swap qui permet d'allouer de la mémoire virtuelle en cas de surcharge de la RAM. Les recommandations de chez Red Hat sont résumées dans le tableau ci-dessous. Notez toutefois que cela s'applique principalement aux système à faible mémoire (1GB) :

    drawing

    lvcreate -n swap -L 4096M vglinux

    Passons désormais à la partition root, la racine du système de fichiers. Nous créons un logical volume qui prend 30% de l’espace du volum group encore disponible. Notez que vous pouvez gérer comme vous le souhaitez le pourcentage d’espace que va prendre cette partition par rapport au total restant. (Vous pouvez également spécifier directement la taille avec lvcreate -n root -L 30G vglinux. À vous de voir.)

    lvcreate -n root -l 30%VG vglinux

    Enfin, créons la partition home (répertoire principal des utilisateurs du système) qui occupera 100% de l’espace disque restant :

    lvcreate -n home -l 100%VG vglinux

    Nous avons terminé l’organisation des partitions. Pour les afficher:

    lvs

    Formatons ces partitions au format souhaité (ext4, à l'exception du swap). (Les partitions LVM sont adressées dans le répertoire /dev/mapper.)

    mkfs.ext4 /dev/mapper/vglinux-root mkfs.ext4 /dev/mapper/vglinux-boot mkfs.ext4 /dev/mapper/vglinux-home mkswap /dev/mapper/vglinux-swap swapon /dev/mapper/vglinux-swap

    Le partitionnement et le formattage sont terminés. Ne reste plus qu'à faire pointer les partitions vers un point de montage pour y installer le système. Nous utiliserons le point de montage /mnt.

    mount /dev/mapper/vglinux-root /mnt mkdir /mnt/boot mount /dev/mapper/vglinux-boot /mnt/boot mkdir /mnt/home mount /dev/mapper/vglinux-home /mnt/home

    Installation du système

    Bloguelinux recommande d’installer un sélecteur de mirroir (reflector) qui trouvera les serveurs les plus rapides en fonction de votre localisation (NB : c’est sur ces serveurs que pacman, le gestionnaire de paquets de Arch, ira chercher les mises à jour de vos programmes):

    pacman -Sy reflector reflector -c France -l 50 -f 10 --sort rate --save /etc/pacman.d/mirrorlist

    La première commande installe reflector. La seconde lui demande de sélectionner les 10 mirroirs parmi 50 les plus rapides de France. On demande maintenant à pacman d’aller voir sur ces mirroirs s’il y a des mises à jour disponibles:

    pacman -Syy

    Il se peut que certaines clés associées à des paquets nécessaires pour la suite de l’installation ne soient plus à jour. Si tel est le cas, vous auriez des messages d’erreur. Il suffira de lancer la commande suivante (qui va mettre toutes les clés à jour):

    pacman-key --refresh

    Une fois terminé, relancez pacman -Syy Puis on installe tous les programmes nécessaires à un système minimal (base) :

    pacstrap /mnt base base-devel mkinitcpio linux linux-headers linux-firmware sudo dhcpcd lvm2 iwd nano vim

    Cette commande permet d’installer tous les paquets utiles à Arch au point de montage /mnt. Pour rappel, /mnt contient votre futur système. base et base-devel contiennent un les programmes basiques, nécessaires à son bon fonctionnement (grep, perl, etc.) (voyez plutôt ici et ici).

    Une fois fait, on inscrit dans la table des partitions /etc/fstab la structure de partitionnement de notre disque :

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

    Le fichier /etc/fstab sera lu pour savoir quelle partie du disque est destinée à quoi (boot,root,home,swap). L’option -U permet de lister les disques à partir de leur UUID qui est un identifiant unique.

    Entrons désormais dans le système pré-installé (au point de montage /mnt) en tant que super-administrateur (root):

    arch-chroot /mnt

    Si vous avez partitionné votre disque dur physiquement (sans LVM), passez directement à la commande mkinitcpio -p linux.

    Nous allons indiquer au gestionnaire de démarrage (GRUB) comment démarrer une machine avec partitions LVM. On lui indique dans le initramfs (le ram-disk qui est démarré avant le kernel). Notez que si mkinitcpio ou tout autre programme utile n’est pas installé, vous obtiendrez des messages d’erreur. Une astuce est de quitter le chroot (pour cela tapez exit) et de lancer pacstrap /mnt mkinitcpio (vous pouvez en profiter pour installer d’autres programmes manquants également; éventuellement dhcpcd, sudo, lvm2, grub, etc.), puis de relancer arch-chroot /mnt.

    nano /etc/mkinitcpio.conf

    Descendez à la ligne HOOKS qui n’est pas commentée (en bash, une ligne commentée commence par #). Et, entre block et filesystems, insérez lvm2 comme ci-dessous :

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

    Maintenant on est prêt à regénérer le fichier initramfs :

    mkinitcpio -p linux

    Installons maintenant GRUB si ce n’est pas déjà fait (si vous n'êtes pas sûr, le réinstaller serait inoffensif), ainsi que os-prober (qui permet de détecter les autres OS éventuellement installés) :

    pacman -S grub os-prober

    On peut maintenant inscrire les informations de démarrage pour GRUB à la racine du disque dur :

    grub-install --recheck /dev/sda grub-mkconfig -o /boot/grub/grub.cfg

    Pour terminer cette première partie, il nous reste à donner un mot de passe à l’utilisateur root. Cela vous servira à vous logguer quand vous démarrerez votre nouveau système :

    passwd root

    Entrez votre mot de passe (vous ne verrez pas les astérisques ****** usuellement affichées, c’est normal). Et voilà. Si tout s’est bien passé le système est fonctionnel et amorçable. Avant de tester, nous allons quitter la session d’installation.

    exit umount -R /mnt

    Ça sert à bien démonter les disques récursivement (-R) avant de redémarrer le système.

    reboot

    Retirez votre clé USB. Si le système démarre sur votre disque dur, tout a bien fonctionné! Vous vous retrouvez avec une demande de login. Logguez-vous comme utilisateur root :

    root

    Utilisez le mot de passe que vous avez défini plus haut, et vous voilà super-administrateur de votre nouveau système 😼. Comme root posède les droits administrateur, il est facile de modifier quelque chose par accident et de planter son PC. La prochaine étape va consister à ajouter un utilisateur (supposons qu’il s’appelle robert)

    useradd -m -G wheel,users robert

    wheel et users sont les groupes auxquels va appartenir l’utilisateur. Si vous comptez utiliser virtualbox vous pouvez rajouter vboxusers (pas sûr que ça fonctionne tout de suite si virtualbox n’est pas installé). Mais comme ce n’est pas irréversible, ce n’est pas la peine d’en rajouter ici, on pourra toujours le faire plus tard si nécessaire. Attribuez un mot de passe au nouvel utilisateur (dans notre exemple, robert) :

    passwd robert

    Maintenant nous allons lui donner les droits sudo (les droits administrateur) :

    visudo

    Notez que pour lancer une commande en tant qu’administrateur, robert devra indiquer sudo en début de commande (ce qui n’est pas le cas pour root).

    On descend à la ligne “## Same thing without a password” et on retire le dièse # devant %wheel ALL=(ALL) NOPASSWD: ALL. Ce qui donne :

    drawing

    Une fois que cette ligne est décommentée, pour sortir de visudo et enregistrer nos modifications, on tape n’importe où :

    :x

    Oui, c’est bien :x puis Entrée qu’il faut taper pour enregistrer et quitter (vous venez d’utiliser l’éditeur de texte vim, qui vaut vraiment le coup d’oeil.) Nous allons désormais tenter de se logguer en tant que nouvel utilisateur pour voir si ça fonctionne :

    exit

    Connectez-vous avec votre nouveau compte utilisateur, et vérifiez qu’il possède bien les droits administrateur :

    sudo -i

    Si tout va bien, on se trouve directement connecté en utilisateur root, sans avoir besoin d’entrer de mot de passe (niveau sécurité c’est largement suffisant pour un PC de bureau). Pour éviter que quelqu’un se connecte en root sur votre ordinateur, nous allons empêcher de pouvoir se logguer directement comme super-administrateur :

    passwd -l root

    Avec cette commande le mot de passe de root a expiré et il ne peut plus se connecter. Il faudra obligatoirement se connecter avec votre compte utilisateur pour accéder au compte administrateur. Ainsi, on peut toujours faire des manoeuvres en root avec sudo ou sudo -i mais on ne peut pas se connecter interactivement avec root, même à la console, ce qui est une bonne chose niveau sécurité (Bloguelinux, 2017) même si ce n’est pas la panacée.

    Nous allons maintenant donner un nom à la machine en modifiant son hostname. En supposant que l’on veuille appeler la machine machine_de_robert :

    echo machine_de_robert >> /etc/hostname

    Pour activer directement le nouveau nom d’host on tape :

    hostnamectl set-hostname machine_de_robert exec bash

    Nous avons bien progressé dans l’installation. Les paquets nécessaires au fonctionnement d’un système rudimentaire sont installés. Toutefois, il nous manque pas mal de choses pour pouvoir en profiter à fond.

    Configuration du système

    On s’assure qu’internet est fonctionnel et on passe à la mise en langue française du système.

    Internet

    Normalement ça devrait déjà fonctionner mais si ce n’est pas le cas, vérfiez d’avoir bien fait les manipulations données au tout début de ce tuto. ⚠️ Si ça ne fonctionne pas ⚠️, regardez ce que renvoie ip link ou ip a :

    ip link

    Voyez les interfaces internet disponibles ainsi que leur statut, IP, etc. Et activez l’interface que vous souhaitez activer en particulier (normalement c’est eno1) en lui assignant une adresse IP à l’aide de dhcpcd :

    dhcpcd eno1

    Mettre en langue française

    Si le clavier n’est pas déjà en azerty :

    localectl set-keymap fr

    Il faut également décommenter fr_FR.UTF-8 UTF-8 dans le fichier /etc/locale.gen :

    nano /etc/locale.gen

    drawing

    Pour quitter l’éditeur nano, on presse Ctrl + X et on sauvegarde y. Puis on génère la langue :

    locale-gen localectl set-locale LANG=fr_FR.UTF-8

    Dans /etc/vconsole.conf on indique la langue ainsi que la police que nous allons utiliser :

    nano /etc/vconsole.conf

    Le fichier est vide. On y inscrit les deux lignes suivantes:

    KEYMAP=fr FONT=lat9w-16

    Horloge - Fuseau horaire

    Voici un moyen de synchroniser l’heure de votre système à celle de Paris :

    rm /etc/localtime ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime ntpd -qg hwclock --systohc --utc

    La commande hwclock --systohc --utc écrit l’heure du système sur l’horloge matérielle (celle du BIOS).

    Configuration des dépôts

    Pacman est le gestionnaire de paquets de Arch. Tout à l’heure on installera aussi yay (un gestionnaire de paquets “non-officiels” et disponibles sur le AUR, que nous décrierons plus tard). C’est le seul gros changement visible (pour ceux qui les utilisaient) par rapport à Debian ou Ubuntu, on ne mettra plus à jour avec sudo apt-get update mais avec sudo pacman -Syyu ou bien yay -Syyu.

    On update pacman :

    pacman -Syy

    Environnement graphique

    Nous sommes sur le point de passer à l'installation d'une interface graphique... ou pas! Vous pouvez très bien utiliser votre système tel quel et passer par la ligne de commande (CLI) pour effectuer vos tâches. Si comme moi vous trouvez cette idée trop rudimentaire, nous allons passer ensemble à l’installation d’un environnement de bureau (abrégé en DE pour Desktop Environment). Mais lequel choisir? Cela dépend des goûts. Il en existe plusieurs tels que Cinnamon, GNOME, LXDE, Mate, XFCE, etc. Je ne ferai pas d'inventaire des environnements installables (la liste des DE supportés par Arch Linux est disponible sur leur site) mais vous en proposerai deux, à choisir:

    🔻Faites votre choix 🔻

    XFCE

    Une interface graphique populaire (ma préférée), personnalisable et légère qui ne vous dépaysera pas de Windows ou des environnements de bureau habituels.

    drawing

    dwm

    Un environnement de bureau pour utilisateurs “confirmés” (ou plutôt ceux qui n’ont pas peur de la nouveauté et d’y passer un peu de temps) avec un gestionnaire de fenêtre minimaliste et hautement configurable (dwm) orienté clavier (permet de n’avoir besoin que du clavier pour utiliser son PC; la souris restant utilisable, rassurez-vous 😉).

    drawing

    🔺Faites votre choix 🔺

    🔻Et suivez le tuto ! 🔻

    Si vous avez choisi XFCE

    Nous allons passer à l’installation des éléments visuels pour en finir (pas totalement) avec les lignes de commandes.

    XORG

    Installation des paquets nécessaires à l’environnement graphique :

    pacman -S xorg-server xorg-apps xorg-xinit mesa xorg-twm xterm xorg-xclock

    Drivers de la carte graphique (GPU)

    Maintenant on voudrait installer les drivers de notre carte graphique. Là, ça dépend de notre matériel, du coup nous allons chercher le nom de notre carte graphique à l’aide de la commande lspci. Cette commande liste tous les appareils PCI de l’ordinateur :

    lspci

    La ligne VGA nous indique le type de carte (Intel? Nvidia? ATI ? AMD ?…) Pour moi ça donne ça sur mon ordi de bureau :

    drawing

    En fonction du modèle de votre carte, il faut installer le paquet de la colonne Driver et celui de la colonne OpenGL du tableau du wiki Archlinux à la partie Driver installation :

    drawing

    Supposons que vous possédiez une Intel il faut taper :

    pacman -S xf86-video-intel mesa

    Notez que l’on peut installer plusieurs paquets avec la commande pacman si on les sépare d’un espace Maintenant que c’est fait on peut passer à l’installation de l’environnement graphique.

    Installer le bureau XFCE

    Pour installer XFCE :

    sudo pacman -S xfce4

    On quitte root pour revenir à notre utilisateur :

    exit

    On se relogue avec notre nom d’utilisateur puis on tente un startx :

    startx

    Normalement ça fonctionne et on a notre environnement graphique ainsi qu’un Arch Linux fonctionnel ! Pour le moment c’est un peu vide, mais il ne reste plus qu’à personnaliser notre système et installer quelques extras !

    Afin d'automatiser le lancement du bureau XFCE lorsque vous êtes loggué, appuyons-nous sur xinitrc:

    echo "exec startxfce4" > ~/.xinitrc

    Et ajoutez ces lignes à votre fichier ~/.bash_profile:

    if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then exec startx fi

    🏁

    Si vous avez choisi dwm

    Ce tuto n’ayant pas vocation à tout couvrir, je vous propose d’installer dwm accompagné d’une pré-configuration vous donnant un système fonctionnel dès que vous aurez tapé ces quelques lignes de commande dans votre terminal. Vous n’aurez plus qu’à suivre les instructions (en anglais 🇬🇧) avant de vous retrouvez face à votre nouveau système.

    sudo curl -LO larbs.xyz/larbs.sh sudo bash larbs.sh

    Pour les curieux, je vous renvoie vers le site de ce shell script pour plus de détails.

    🇫🇷 Si vous souhaitez une version alternative en français, utilisez ma version modifiée de LARBS : DOT

    sudo curl -LO dougy147.com/dot.sh sudo sh dot.sh

    Suivez les instructions à l’écran, et tout est bon !

    🏁

    Pour un autologin de la console virtuelle:

    sudo systemctl edit getty@tty1

    Puis ajoutez ces lignes au fichier qui vient de s'ouvrir:

    [Service] ExecStart= ExecStart=-/sbin/agetty --autologin votre_nom_d'utilisateur --noclear %I 38400 linux

    Commentaires

    Comme vous allez vite le voir, tout ne fonctionne pas out of the box avec Arch, mais c’est ce qui fait tout son intérêt.

    drawing

    Sources

    chessgitxmppbookswallet