# Étapes pour installer Arch Linux

## Préambule

Je m'inspire ici de la démarche de
[EF - Linux Made Simple](https://www.youtube.com/c/EFLinuxMadeSimple/) qui au début de chaque
mois publie une vidéo intitulée ***Arch Linux Monthly Install***.
Généralement chaque installation mensuelle est différente, en particulier en ce qui a trait aux
partitions et à leur formatage (typiquement `ext4` et `btrfs`) et au bureau (*desktop*) ou
gestionnaire de fenêtres (*window manager*).
*Note :* sa dernière installation (avril 2022) est cependant un peu plus technique que les autres
car il y configure aussi l'encryption des partitions.

Dans la suite de ce document j'ai ajusté les étapes manuelles et les scripts Shell de EFLinux
pour une installation (sans encryption) avec **`ext4`** et un bureau **Cinnamon**.


## Démarrage

- Téléchargez un fichier image ISO de Arch Linux à
[https://archlinux.org/download/](https://archlinux.org/download/).

- Le cas échéant, créez une machine virtuelle (dans VirtualBox, KVM, VMware, etc.) et montez le
fichier ISO. Idéalement avec au moins 3Go de mémoire RAM et 30 Go de disque virtuel.

- Pour une installation sur une clé USB, carte [micro-]SD, disque dur interne ou externe,
il faut d'abord "graver" le fichier ISO sur un DVD ou une autre clé USB que celle où sera installé
Arch Linux. Puis démarrez l'ordinateur à partir de ce DVD ou de cette clé Arch Linux ISO.

- Dans la plupart des cas, le choix par défaut `Arch Linux install medium (x86_64, UEFI)` est le
bon.

## Premières étapes manuelles

- Facultatif : `setfont ter-228b` pour agrandir la taille de caractères.
- `fdisk -l` pour afficher la liste des "disques" (ou clés ou cartes [micro-]SD) disponibles.
Dans la suite je vais utiliser le disque **`/dev/vda`** typique d'une installation en machine
virtuelle.

- `gdisk /dev/vda` pour partitionner le disque
	+ `o` pour détruire toutes les partitions
	+ `n` puis `Enter` pour le numéro de partition, puis `Enter` pour le premier secteur,
	puis `+300M` pour le dernier secteur, puis `ef00` pour le type.
	La partition #1 sera la partition de démarrage (*boot*).
	+ `n` puis `Enter` pour le numéro de partition, puis `Enter` pour le premier secteur,
	puis  `+30G` pour le dernier secteur, puis `Enter` pour le type par défaut 8300.
	La partition #2 sera la partition racine du système (*root*).
	+ `n` puis `Enter` pour le numéro de partition, puis `Enter` pour le premier secteur,
	puis  `Enter` pour le dernier secteur, puis `Enter` pour le type par défaut 8300.
	La partition #3 (reste du disque) sera la partition des comptes utilisateurs (*/home*).
	+ `p` pour afficher et vérifier la liste des partitions, puis `w` pour enregistrer la
	nouvelle table de partitions (tapez `Y` pour confirmer).

- Formatage des partitions
	+ `mkfs.fat -F32 /dev/vda1`
	+ `mkfs.ext4 /dev/vda2`
	+ `mkfs.ext4 /dev/vda3`

- Montage des partitions
	+ `mkdir -p /mnt/boot/efi`
	+ `mount /dev/vda1 /mnt/boot/efi`
	+ `mount /dev/vda2 /mnt`
	+ `mkdir /mnt/home`
	+ `mount /dev/vda3 /mnt/home`
	+ Facultatif : `df -h` pour afficher la liste des partitions et leurs points de montage

## Installation du système de base
- `pacstrap /mnt base base-devel linux linux-firmware vim wget git intel-ucode amd-ucode`

- Génération du fichier de la table des partitions (*filesystem table*) :
	+ `genfstab -U /mnt >> /mnt/etc/fstab`
	+ `arch-chroot /mnt`
	+ `nano /etc/fstab` pour éditer le fichier `fstab`
	+ Changer `relatime` par `noatime,nodiratime` partout dans le fichier (attention : pas
	d'espaces). Enregistrez puis quittez.

- **Récupération du script Shell pour installer un système minimal Arch Linux**.
Il existe plusieurs façons.
	+ [Le site gitlab de EFLinux](https://gitlab.com/eflinux/arch-basic) :
	`git clone https://gitlab.com/eflinux/arch-basic.git`
	+ [abaque](https://abaque.ca/~eric/archlinux/base-uefi.sh) :
	`wget https://abaque.ca/archlinux/base-uefi.sh`
	+ Éditez le script (`nano base-uefi.sh`) et au besoin, changez :
		* La locale du système (par défaut `en_CA.UTF-8`).
		* Le nom d'hôte (*hostname*) (par défaut `arch`).
		* Le mot de passe de l'administrateur (*root*) (par défaut `password`).
		* Si vous installez Arch Linux sur un ordinateur ayant une carte vidéo NVidia,
		vous pouvez décommenter la ligne
		`pacman -S --noconfirm nvidia nvidia-utils nvidia-settings`
		* Si vous installez Arch Linux sur un ordinateur ayant une carte vidéo AMD,
		vous pouvez décommenter la ligne
		`pacman -S --noconfirm xf86-video-amdgpu`
		* **Note :** ceci n'est pas recommandé pour une installation sur une clé USB.
		* Le nom d'utilisateur et le mot de passe de l'utilisateur créé à la fin
		(par défaut `eric` et `password`).
	+ `chmod +x base-uefi.sh`
	+ `./base-uefi.sh`
	Essentiellement acceptez tous les choix par défaut lorsqu'une réponse vous est demandée.
	+ `exit` pour sortir du mode *chroot*
	+ `umount -R`
	+ `reboot` pour redémarrer.

	**Note :** dans certains cas il est préférable d'éteindre l'ordinateur avec `shutdown`,
	ôter la clé d'installation (celle qui contient le fichier ISO), et redémarrer l'ordinateur
	en sélectionnant le disque ou la clé où Arch Linux est installé (disque qui a été
	partitionné).

## Suite de l'installation après le premier redémarrage
Après le redémarrage, on est toujours en mode console.
Connectez-vous avec le compte utilisateur créé à l'étape précédente et non en tant que *root*.

De la même manière qu'on a téléchargé un script Shell distant pour l'installation du système de
base, il faut procéder de même cette fois pour récupérer un script Shell qui installe (entre autres)
un bureau.

- [Le site gitlab de EFLinux](https://gitlab.com/eflinux/arch-basic) :
`git clone https://gitlab.com/eflinux/arch-basic.git`
- [abaque](https://abaque.ca/~eric/archlinux/cinnamon.sh) :
`wget https://abaque.ca/archlinux/cinnamon.sh`

Le dossier `arch-basic` contient plusieurs scripts Shell pour différents bureaux.
Je continue ici avec le bureau Cinnamon.

Vous pouvez éditer le script `cinnamon.sh` si vous voulez y faire des changements.

- `chmod +x cinnamon.sh`
- `./cinnamon.sh`
Ici aussi acceptez tous les choix par défaut lorsqu'une réponse vous est demandée.
- Redémarrez et normalement il y aura un gestionnaire de login graphique (ici `sddm`).
