rss logo

Mon guide d'installation ArchLinux

Le logo d'ArchLinux

Je vais parler ici de l'installation de ArchLinux sur mon ordinateur. Avec un peu de chance cela pourra ĂŞtre utile Ă  d'autres et peut ĂŞtre mĂŞme Ă  toi!

Par contre je ne l'installerai jamais sur un serveur pour lequel je préfère debian. Mais c'est un autre sujet.

Note : Ce guide s'inspire largement de l'article d'installation officiel.

MĂ©dia d'installation

  • La première chose Ă  faire est de tĂ©lĂ©charger l'iso depuis le site officiel (voir ici pour vĂ©rifier la signature) :

https://archlinux.org/download/

  • Identifier son mĂ©dia usb :
[root@host ~]# fdisk -l
  • J'utilise personnelement l'installation via une clĂ© usb, la commande suivante permet de crĂ©er ce type de media :
[root@host ~]# dd if=archlinux-XXXX.XX.XX-x86_64.iso of=/dev/sdX bs=16M status=progress; sync
  • DĂ©sactiver la fonctionnalitĂ© secure boot dans l'UEFI (car le mĂ©dia d'installation n'est pas compatible) et dĂ©marrer sur l'USB.

Pré-Install

  • Changer la disposition du clavier de la console (fr pour français) :
root@archiso ~ # loadkeys fr
  • On vĂ©rifie que l'on est bien en dĂ©marrage UEFI :
root@archiso ~ # if [ -d /sys/firmware/efi/efivars ]; then echo "UEFI OK"; else echo "UEFI KO"; fi

Configuration réseau

  • Lister et identifier les interfaces rĂ©seau :
root@archiso ~ # ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 00:50:56:80:0b:32 brd ff:ff:ff:ff:ff:ff altname enp11s0
  • Obtenir la configuration rĂ©seau via dhcp :
root@archiso ~ # dhclient ens192
  • Ou paramĂ©trer manuellement :
root@archiso ~ # ip addr add 192.168.1.10/24 dev ens192 root@archiso ~ # ip route add default via 192.168.1.254 root@archiso ~ # echo 'nameserver 192.168.1.254' >> /etc/resolv.conf
  • VĂ©rifier la connexion internet :
root@archiso ~ # ping 46.105.57.169
  • VĂ©rifier la rĂ©solution dns :
root@archiso ~ # host std.rocks std.rocks has address 46.105.57.169 std.rocks has IPv6 address 2001:41d0:301::20 std.rocks mail is handled by 1 mx4.mail.ovh.net. std.rocks mail is handled by 10 mx3.mail.ovh.net. Note : à partir de cette étape, si besoin, il est possible de se connecter depuis une autre machine à l'installeur avec ssh. Il faudra juste utiliser la commande passwd avant pour paramétrer un mot de passe.
  • Mettre Ă  jour l'heure système :
root@archiso ~ # timedatectl set-ntp true

Partitionnement du disque

Je vais partitionner mon disque de 40G de la façon suivante.

Partition Note Système de fichier Taille
EFI partition efi FAT32 512M
/boot partition de démarrage ext2 500M
swap partition fichiers d'Ă©change swap sur LUKS 2G
/ partition racine btrfs sur LUKS 37G
  • La reprĂ©sentation graphique du partitionnement du disque :
un partitionnement d'un disque linux avec un efi, /boot, swap et une partition racine

⚠️ A noter que le disque sera complètement supprimé et par conséquent les données présentes seront effacées.⚠️

  • Identifier le disque de destination :
root@archiso ~ # fdisk -l Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/loop0: 683.24 MiB, 716427264 bytes, 1399272 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
  • Commencer le partitionnement, ici avec le disque /dev/sda :
root@archiso ~ # gdisk /dev/sda GPT fdisk (gdisk) version 1.0.9 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT.
  • Supprimer les partitions existantes :
Command (? for help): d
  • CrĂ©er la partition EFI :
Command (? for help): n Partition number (1-128, default 1): First sector (34-83886046, default = 2048) or {+-}size{KMGTP}: Last sector (2048-83886046, default = 83884031) or {+-}size{KMGTP}: +512M Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): EF00 Changed type of partition to 'EFI system partition'
  • CrĂ©er la partition /boot :
Command (? for help): n Partition number (2-128, default 2): First sector (34-83886046, default = 1050624) or {+-}size{KMGTP}: Last sector (1050624-83886046, default = 83884031) or {+-}size{KMGTP}: +500M Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'
  • CrĂ©er la partition de type LUKS pour swap :
Command (? for help): n Partition number (3-128, default 3): First sector (34-83886046, default = 2074624) or {+-}size{KMGTP}: Last sector (2074624-83886046, default = 83884031) or {+-}size{KMGTP}: +2G Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): 8309 Changed type of partition to 'Linux LUKS'
  • CrĂ©er la partition de type LUKS pour / :
Command (? for help): n Partition number (4-128, default 4): First sector (34-83886046, default = 6268928) or {+-}size{KMGTP}: Last sector (6268928-83886046, default = 83884031) or {+-}size{KMGTP}: Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): 8309 Changed type of partition to 'Linux LUKS'
  • VĂ©rifier et Ă©crire le partitionnement du disque :
Command (? for help): p Disk /dev/sda: 83886080 sectors, 40.0 GiB Model: Virtual disk Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 45AB06C7-DDAF-45D4-A781-B5C33DAF56D2 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 83886046 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 1050623 512.0 MiB EF00 EFI system partition 2 1050624 2074623 500.0 MiB 8300 Linux filesystem 3 2074624 6268927 2.0 GiB 8309 Linux LUKS 4 6268928 83884031 37.0 GiB 8309 Linux LUKS Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sda. The operation has completed successfully.

Formater les partitions

  • Formater la partition EFI :
root@archiso ~ # mkfs.fat -F32 /dev/sda1
  • Formater la partition /boot :
root@archiso ~ # mkfs.ext2 /dev/sda2
  • CrĂ©er la partition LUKS pour le swap :
Note : La complexité du mot de passe n'a que peu d'importance ici car le mot de passe de la partition swap sera autogénéré à chaque démarrage (voir plus bas). root@archiso ~ # cryptsetup luksFormat /dev/sda3 WARNING! ======== This will overwrite data on /dev/sda3 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/sda3: STDp@$$ Verify passphrase: STDp@$$ cryptsetup luksFormat /dev/sda3 16.55s user 1.08s system 86% cpu 20.303 total
  • DĂ©chiffrer la partition swap :
root@archiso ~ # cryptsetup luksOpen /dev/sda3 swap Enter passphrase for /dev/sda3: STDp@$$
  • VĂ©rifier que la partition swap soit bien remontĂ©e :
root@archiso ~ # ls /dev/mapper control swap
  • Formater la partition swap :
root@archiso ~ # mkswap /dev/mapper/swap
  • CrĂ©er la partition LUKS pour / :
root@archiso ~ # cryptsetup luksFormat /dev/sda4 WARNING: Device /dev/sda4 already contains a 'dos' partition signature. WARNING! ======== This will overwrite data on /dev/sda4 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/sda4: ComplexSTDp@$$ Verify passphrase: ComplexSTDp@$$ cryptsetup luksFormat /dev/sda4 9.72s user 0.68s system 75% cpu 13.721 total
  • DĂ©chiffrer la partition / (root) :
root@archiso ~ # cryptsetup luksOpen /dev/sda4 root Enter passphrase for /dev/sda3: ComplexSTDp@$$
  • VĂ©rifier que la partition root est prĂ©sente :
root@archiso ~ # ls /dev/mapper control root swap
  • Formater la partition / (root) :
root@archiso ~ # mkfs.btrfs /dev/mapper/root

Monter les partitions et chrooter dans /mnt/

Monter les partitions dans /mnt

  • Monter la partition / (root) :
root@archiso ~ # mount /dev/mapper/root /mnt/
  • Activer le swap :
root@archiso ~ # swapon /dev/mapper/swap
  • Monter /boot :
root@archiso ~ # mount --mkdir /dev/sda2 /mnt/boot
  • Monter /efi :
root@archiso ~ # mount --mkdir /dev/sda1 /mnt/efi
Créer un sous volumes btrfs (Optionnel)

Si besoin on pourra ajouter ici un ou plusieurs sous-volumes btrfs, par exemple ici avec /home.

  • CrĂ©er un sous volume /home :
root@archiso ~ # btrfs subvolume create /mnt/home
  • Monter /home :
root@archiso ~ # mount /dev/mapper/root -o subvol=home /mnt/home

Installation

Installer les paquets essentiels

root@archiso ~ # pacstrap /mnt base linux linux-firmware btrfs-progs vim grub efibootmgr
  • GĂ©nĂ©rer le fichier fstab :
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
  • Éditer le fichier /mnt/etc/fstab et remplacer l'entrĂ©e pour le swap par cette ligne :
/dev/mapper/swap none swap defaults 0 0
  • Chrooter dans /mnt :
root@archiso ~ # arch-chroot /mnt

Fuseau horaire

  • Identifier son Fuseau horaire :
[root@archiso /]# ls /usr/share/zoneinfo/
  • ParamĂ©trer son Fuseau horaire :
[root@archiso /]# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
  • Exemple :
[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
  • GĂ©nĂ©rer le fichier /etc/adjtime :
[root@archiso /]# hwclock --systohc

Les locales

  • Éditer le fichier /etc/locale.gen et dĂ©commenter en_US.UTF-8 UTF-8 et les autres locales, par exemple pour la France :
[…] #en_SG ISO-8859-1 en_US.UTF-8 UTF-8 #en_US ISO-8859-1 […] #fr_CH ISO-8859-1 fr_FR.UTF-8 UTF-8 #fr_FR ISO-8859-1
  • GĂ©nĂ©rer les locales :
[root@archiso /]# locale-gen
  • CrĂ©er le fichier /etc/locale.conf et paramĂ©trer la variable LANG en rapport avec la langue qui sera utilisĂ© sur le système :
    • Par exemple :
[root@archiso /]# echo 'LANG=en_US.UTF-8' > /etc/locale.conf [root@archiso /]# echo 'LANG=fr_FR.UTF-8' > /etc/locale.conf
  • ParamĂ©trer le clavier :
    • Par exemple :
[root@archiso /]# echo 'KEYMAP=fr' > /etc/vconsole.conf [root@archiso /]# echo 'KEYMAP=us' > /etc/vconsole.conf

Configuration réseau

  • ParamĂ©trer le nom de sa machine :
[root@archiso /]# echo 'stdesktop' > /etc/hostname

Initramfs

  • Éditer le fichier /etc/mkinitcpio.conf pour activer les modules utiles au dĂ©marrage :
MODULES=(dm_mod ext2 btrfs ext4 xfs) […] #add lvm2, mdadm if needed HOOKS=(base udev autodetect modconf block keyboard keymap encrypt filesystems usr fsck shutdown)
  • GĂ©nĂ©rer le fichier initramfs :
[root@archiso /]# mkinitcpio -P
  • Ajouter l'entrĂ©e swap dans le /etc/crypttab pour paramĂ©trer la gĂ©nĂ©ration d'une clĂ© de chiffrement automatique pour la partition swap :
[root@archiso /]# echo 'swap /dev/sda3 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256' >> /etc/crypttab

Le chargeur d'amorçage

  • Éditer le fichier /etc/default/grub, ici je :
    • amdgpu.audio=0 : dĂ©sactiver l'audio HDMI/DP Audio parce que je n'en ai point besoin et que j'ai dĂ©jĂ  eu des problèmes avec. (pour info voir ici) les diffĂ©rents paramètres que l'on peut passer au module amdgpu.
    • je dĂ©clare mon disque chiffrĂ© root : /dev/sda4:root
    • J'ai supprimĂ© le mot clĂ© quiet parce que je veux que l'affichage soit verbeux au dĂ©marrage, dans le cas ou un dĂ©bugage est nĂ©cessaire.
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 amdgpu.audio=0" #we can use /dev/sda4 UUID like that : cryptdevice=UUID=XXXX-XXXX-XXXX:root if you prefer GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda4:root"
  • Installer l'application GRUB EFI dans /efi/ (sda1) :
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/efi/ --bootloader-id=GRUB Installing for x86_64-efi platform. Installation finished. No error reported.
  • GĂ©nĂ©rer le fichier de configuration grub.cfg :
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. Adding boot menu entry for UEFI Firmware Settings ... done

Redémarrage

  • ParamĂ©trer le mot de passe du compte root :
[root@archiso /]# passwd
  • Retirer le mĂ©dia d'installation et redĂ©marrer le système :
[root@archiso /]# exit root@archiso ~ # reboot

Post-Installation

Ajout d'un simple utilisateur

  • CrĂ©er un utilisateur :
[root@stdesktop ~]# useradd -m newuser
  • DĂ©finir le mot de passe utilisateur :
[root@stdesktop ~]# passwd newuser

Configuration réseau

On peut configurer le réseau de façon manuelle, statique ou via DHCP.

  • La première chose Ă  faire est d'identifier son interface rĂ©seau :
[root@stdesktop ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 24:1f:fe:d3:bc:2a brd ff:ff:ff:ff:ff:ff

Configuration manuelle avec la commande ip

Note : Cette configuration sera réinitialisée après chaque redémarrage.

  • Activer l'interface rĂ©seau :
[root@stdesktop ~]# ip link set ens192 up
  • Attribuer une adresse ip :
[root@stdesktop ~]# ip addr add 192.168.1.10/24 dev ens192
  • DĂ©finir la passerelle :
[root@stdesktop ~]# ip route add default via 192.168.1.254
  • DĂ©finir le dns :
[root@stdesktop ~]# echo 'nameserver 80.67.169.12' > /etc/resolv.conf

Configuration statique avec systemd-networkd

  • CrĂ©er un fichier /etc/systemd/network/ens192.network :
[Match] Name=ens192 [Network] Address=192.168.1.10/24 Gateway=192.168.1.254 DNS=192.168.1.254
  • Activer et dĂ©marrer le service systemd-networkd :
[root@stdesktop ~]# systemctl enable systemd-networkd.service && systemctl start systemd-networkd.service

Configuration DHCP avec systemd-networkd

  • CrĂ©er un fichier /etc/systemd/network/ens192.network :
[Match] Name=ens192 [Network] DHCP=yes
  • Activer et dĂ©marrer le service systemd-networkd :
[root@stdesktop ~]# systemctl enable systemd-networkd.service && systemctl start systemd-networkd.service

L'environnement de bureau

  • Installer GNOME (presser simplement sur entrer Ă  chaque question) :
[root@stdesktop ~]# pacman -S gnome
  • Si le clavier n'est pas en qwerty, paramĂ©trer le clavier pour gdm :
[root@stdesktop ~]# localectl set-x11-keymap fr
  • Activer et dĂ©marrer le service gdm :
[root@stdesktop ~]# systemctl enable gdm [root@stdesktop ~]# systemctl start gdm écran de démarage gdm archlinux en attente de connexion

Misc

Accélération matérielle pour la carte AMD FirePro W5000

Si comme moi vous êtes propriétaire d'une carte AMD FirePro W5000 il peut être interessant d'activer l'accélération matérielle.

  • Installer les paquets libva-mesa-driver et mesa-vdpau :
[root@stdesktop ~]# pacman -S libva-mesa-driver mesa-vdpau
  • Installer les outils vainfo, vdpauinfo et radeontop :
[root@stdesktop ~]# pacman -S libva-utils vdpauinfo radeontop
  • CrĂ©er le fichier /etc/modprobe.d/amdgpu.conf :
options amdgpu si_support=1
  • CrĂ©er le fichier /etc/modprobe.d/radeon.conf file :
options radeon si_support=0 options radeon cik_support=0
  • Éditer le fichier /etc/mkinitcpio.conf :
MODULES=(dm_mod ext2 btrfs ext4 xfs amdgpu) […] HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems usr fsck shutdown)
  • GĂ©nĂ©rer un nouveau initramfs :
[root@archiso /]# mkinitcpio -P
  • RedĂ©marrer et vĂ©rifier que amdgpu est chargĂ© :
[newuser@stdesktop ~]$ lspci -k | grep -A 3 -E "(VGA|3D)" 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn LE GL [FirePro W5000] Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device 0b06 Kernel driver in use: amdgpu Kernel modules: radeon, amdgpu
  • Ajouter la variable d'environnement VDPAU_DRIVER pour activer VDPAU :
[newuser@stdesktop ~]$ echo 'export VDPAU_DRIVER=radeonsi' >> ~/.bashrc
  • VĂ©rifier le bon fonctionnement de VA-API :
[newuser@stdesktop ~]$ vainfo vainfo: VA-API version: 1.15 (libva 2.15.0) vainfo: Driver version: Mesa Gallium driver 22.1.7 for ATI FirePro V(FireGL V) Graphics Adapter (pitcairn, LLVM 14.0.6, DRM 3.47, 5.19.9-arch1-1) vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264High : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc
  • VĂ©rifier le bon fonctionnement de VDPAU :
[newuser@stdesktop ~]$ vdpauinfo display: :0 screen: 0 API version: 1 Information string: G3DVL VDPAU Driver Shared Library version 1.0 Video surface: name width height types ------------------------------------------- 420 16384 16384 NV12 YV12 422 16384 16384 UYVY YUYV 444 16384 16384 Y8U8V8A8 V8U8Y8A8 420_16 16384 16384 422_16 16384 16384 444_16 16384 16384 Decoder capabilities: […]

Ouvrir des applications Ă  l'ouverture de la session GNOME

Quand j'ouvre ma session, j'aime bien que les programmes que j'ai l'habitude d'utiliser s'ouvrent automatiquement.

  • CrĂ©er le dossier ~/.config/autostart/ :
[newuser@stdesktop ~]$ mkdir ~/.config/autostart
  • CrĂ©er le fichier ~/.config/autostart/apps.desktop :
[Desktop Entry] Name=AutostartScript GenericName=Gnome Auto Start Script Comment=Script wich launch applications at startup Exec=/home/newuser/.config/autostart.sh Terminal=false Type=Application X-GNOME-Autostart-enabled=true
  • CrĂ©er le fichier ~/.config/autostart.sh :
#Open terminal gnome-terminal& #Open Firefox firefox & #Open Explorer nautilus&
  • Donner les droits en exĂ©cution executions :
[newuser@stdesktop ~]$ chmod +x ~/.config/autostart.sh

Crontab

J'utilise hbaituellement cron comme planificateur de taches. Il existe des implémentations de cron dans ArchLinux mais aucune d'entre elle n'est préinstallée. Par défaut le système utilise les systemd/Timers. Nous allons voir ici comment créer une tache de type systemd/Timers.

  • CrĂ©er un fichier /etc/systemd/system/mytask.service qui dĂ©finiera le programme Ă  exĂ©cuter (ici on copie le fichier /home/newuser/a_file dans /backup en utilisant la substitution de la commande date) :
[Unit] Description=Copy a file Wants=mytask.timer [Service] Type=oneshot User=newuser #Normalement $(/usr/bin/date +%Y%m%d) mais les caractères $ et % doivent être échapés ExecStart=/bin/bash -c '/usr/bin/cp /home/newuser/a_file /backup/a_file.$$(/usr/bin/date +%%Y%%m%%d)' [Install] WantedBy=multi-user.target
  • CrĂ©er le fichier /etc/systemd/system/mytask.timer associĂ© dans lequel on dĂ©finiera Ă  quel moment la tache sera exĂ©cutĂ©e :
[Unit] Description=Copy a file trigger Requires=mytask.service [Timer] Unit=mytask.service #It will run each day at 19h00 OnCalendar=*-*-* 19:00:00 [Install] WantedBy=timers.target
  • Activer et recharger les règles :
[root@stdesktop ~]# systemctl enable mytask.timer && systemctl daemon-reload
  • VĂ©rifier la prise en compte :
[root@stdesktop ~]# systemctl status mytask.timer â—Ź mytask.timer - Copy a file Loaded: loaded (/etc/systemd/system/mytask.timer; enabled; preset: disabled) Active: active (waiting) since Sun 2022-09-25 16:28:31 CEST; 26min ago Until: Sun 2022-09-25 16:28:31 CEST; 26min ago Trigger: Sun 2022-09-25 19:00:00 CEST; 2h 4min left Triggers: â—Ź mytask.service sept. 25 16:28:31 stddesktop.local systemd[1]: Started Copy a file.

Références

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

contact mail address