Cet article dĂ©crit ma procĂ©dure d’installation (ou rĂ©installation) semi-automatisĂ©e de mon environnement Archlinux, que j’ai redocumentĂ© lors de l’achat d’un nouvel ordinateur portable et le souhait de changer de Desktop Environement (de GNOME vers i3). Elle est probablement loin d’ĂŞtre parfaite, mais me convient pour le moment. Par ailleurs, elle deviendra sans doute obsolète très rapidement avec l’Ă©volution des composants.
Certaines Ă©tapes doivent rester manuelles, notamment au tout dĂ©but. La suite est partiellement automatisĂ©e via des scripts. Cependant ce sont des scripts simples adaptĂ©es Ă mon besoin. Il n’y a donc pas de variables Ă proprement parler (mĂŞme s’il est tout Ă fait possible de changer des Ă©lĂ©ments) ou de capture des erreurs/exceptions.
Il sera nécessaire de rendre les scripts exécutables (chmod +x) après les avoir téléchargés (via git ou directement).
Contexte :
- Machine : Framework Laptop 13
- UEFI
- Arch Linux
- LVM dans LUKS (donc LVM dans une partition chiffrée)
- Usage de i3
- Sauvegarde avec restic (voir articles précédents)
PrĂ©paration du mĂ©dia d’installation
RĂ©cupĂ©ration de l’image d’installation ici : https://archlinux.org/download/
Il peut Ă©galement ĂŞtre intĂ©ressant de vĂ©rifier l’intĂ©gritĂ© de l’image tĂ©lĂ©chargĂ©e. Pour cela, il tĂ©lĂ©charger lĂ clĂ© publique PGP de signature des ISO ici : https://archlinux.org/download/#checksums
Et lancer la commande suivante :
$ gpg --keyserver-options auto-key-retrieve --verify archlinux-version-x86_64.iso.sig
Si tout est OK, il faudra copier l’image sur une clĂ© USB :
$ dd bs=4M if=path/to/archlinux-version-x86_64.iso of=/dev/disk/by-id/usb-My_flash_drive conv=fsync oflag=direct status=progress
Préinstallation
Après avoir branché la clé USB et démarré dessus :
-
Chargement du clavier français (azerty)
loadkeys fr -
Se connecter au WiFi avec
iwctl$ iwctl [iwd]# station wlan0 scan [iwd]# station wlan0 get-networks [iwd]# station wlan0 connect SSID -
Rafraichissement des dépôts
pacman -Syy -
Identifier le disque cible et le partitionner.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 465,8G 0 disk–>
/dev/nvme0n1(adapter dans la suite des commandes en fonction de votre contexte).Le partitionner en 2 partitions avec
cgdisk:cgdisk /dev/nvme0n1Point de montage Partition Type de partition Taille suggérée /boot /dev/nvme0n1p1 EFI system partition (ef00) 512M /dev/nvme0n1p2 Linux LVM (8e00) Reste du disque (elle sera découpée via LVM ci-dessous) -
Activer le chiffrement de la partition de donnĂ©es et l’ouvrir.
cryptsetup luksFormat /dev/nvme0n1p2 cryptsetup open --type luks /dev/nvme0n1p2 lvm -
Création des volumes logiques (penser à adapter les tailles).
pvcreate /dev/mapper/lvm vgcreate main /dev/mapper/lvm lvcreate -L 38G main -n swap lvcreate -L 80G main -n root lvcreate -l 100%FREE main -n home -
Formater les partitions.
mkfs.ext4 /dev/mapper/main-root mkfs.ext4 /dev/mapper/main-home mkswap /dev/mapper/main-swap mkfs.fat -F 32 /dev/nvme0n1p1 -
Monter les partitions et activer le swap.
mount /dev/mapper/main-root /mnt mount --mkdir /dev/mapper/main-home /mnt/home swapon /dev/mapper/main-swap mount --mkdir /dev/nvme0n1p1 /mnt/boot -
Installer les paquets de base sur
/mnt.pacstrap -K /mnt base linux linux-firmware git vim intel-ucode -
Générer le fichier
fstab.genfstab -U /mnt >> /mnt/etc/fstab -
Enfin
chrootdans le nouvel environnement pour continuer l’installation.arch-chroot /mnt
Installation de base
Une fois dans le chroot de la nouvelle installation, nous allons rĂ©cupĂ©rer les scripts pour lancer la configuration de base et l’installation des paquets standard (gestionnaire de dĂ©marrage, rĂ©seau, audio, etc.)
-
Télécharger le dépôt git
git clone https://gitea.h.gued.in/brice/arch cd arch -
Installer
Penser à ajuster le script au besoin (mots de passe, UUID des disques, etc.), rendre le script exécutable et le lancer.
chmod +x base.sh ./base.sh -
Penser Ă vĂ©rifier que tout s’est bien passĂ©.
-
Comme indiquer à la fin du script, il est désormais possible de sortir du chroot, de démonter les disques et de redémarrer la machine.
exit umount -a reboot
Installation de l’environnement utilisateur
Vous devriez avoir redémarré et être authentifié avec votre utilisateur créé à la fin du script précédent.
-
Se connecter au WiFi avec network manager
$ nmcli device wifi connect SSID_or_BSSID password password $ nmcli --ask device wifi connect SSID_or_BSSID -
Il faut ainsi récupérer le clone du dépôt git (qui se situe actuellement dans le répertoire de
root)$ sudo cp -r /root/arch ~/ $ sudo chown -R $USER:$USER arch $ cd arch -
De même il sera surement nécessaire de mettre à jour le script d’environnement utilisateur (
i3.shdans notre cas) pour adapter les éléments à votre contexte. -
Rendre le script exécutable et le lancer.
$ chmod +x i3.sh $ ./i3.sh
Restauration de sauvegarde
Si vous réinstallez votre machine, il sera surement interessant de réccupérer la dernière sauvegarde
Comme nous utilisons un dépôt distant en sftp avec authentification par clé (voir ici et ici), le plus simple est de recréer une configuration locale ssh avec une entité pour le serveur distant et réccupérer la clé privée adéquate également.
Il faudra penser Ă bien modifier les valeurs entre chevrons <> pour les adapter au contexte.
-
Créer le répertoire et le fichier de configuration local de ssh
$ mkdir .ssh $ vim .ssh/configHost <alias du serveur de sauvegarde> HostName <nom de domaine ou IP du serveur de sauvegarde> User restic Port <port SSH> IdentityFile /home/<votre utilisateur>/.ssh/restic_id_rsa -
Récupérer la clé et la positionner au bon endroit (penser à supprimer de manière sécurisée la clé du média amovible utilisé pour le transfert).
-
Ajuster les permissions
$ chmod 700 .ssh/config $ chmod 600 <chemin de la clé ssh> -
Créer un répertoire temporaire pour stocker la restauration (le
/tmpsystème risque fortement d’ĂŞtre beaucoup trop petit)$ mkdir ~/tmp -
Enfin lancer la commande de restauration
$ restic -r sftp:<alias du serveur de sauvegarde>:restic/<nom du dépôt> restore latest --target /home/<votre utilisateur>/tmp/<nom du dépôt>-restore
Configurations post-installation
dotfiles
-
Télécharger le dépôt git
$ git clone https://gitea.h.gued.in/brice/dotfiles $ cd dotfiles -
ExĂ©cuter le script d’installation
$ chmod +x install.sh $ ./install.sh -
Vérifier que tout s’est bien passé
-
Si la machine est diffĂ©rente que celle ou les configurations ont Ă©tĂ© initialisĂ©e, il sera sans doute nĂ©cessaire d’ajuster certains points, comme
- Les keybinding dans la configuration i3,
- Les id adaptateur secteur & batterie dans la configuration polybar.
DĂ©verrouiller automatiquement Gnome/Keyring Ă l’ouverture de session
Il est possible de dĂ©verrouiller automatiquement gnome/keyring Ă l’ouverture de session, si le mot de passe du keyring principal est le mĂŞme que celui de la session.
Pour cela, il faut éditer le fichier /etc/pam.d/login, et ajouter les lignes contenant pam_gnome_keyring ci-dessous.
#%PAM-1.0
auth required pam_securetty.so
auth requisite pam_nologin.so
auth include system-local-login
auth optional pam_gnome_keyring.so
account include system-local-login
session include system-local-login
session optional pam_gnome_keyring.so auto_start
Thème
Penser à récupérer les thèmes, fenêtres & icônes et configurer via lxappearance.
VPN
Penser à récupérer et réinstaller les configurations vpn.
Montage automatique des partages du NAS
-
Recréer les points de montage
$ sudo mkdir -p /mnt/<nas>/{<share1>,<share2>} -
VĂ©rifier la prĂ©sence du fichier d’authentification ou recrĂ©er le (
~/.<nas>-creds.username= password=Et vérifier les permissions
$ chmod 600 ~/.<nas>-creds -
Éditer le fichier de configuration
/etc/fstab# Mount NAS shares //<adresse IP du NAS>/<share1> /mnt/<nas>/<share1> cifs credentials=/home/<nom d'utilisateur>/.<nas>-creds,uid=1000,gid=100,vers=3.0 0 0 //<adresse IP du NAS>/<share2> /mnt/<nas>/<share2> cifs credentials=/home/<nom d'utilisateur>/.<nas>-creds,uid=1000,gid=100,vers=3.0 0 0
Remettre en place la sauvegarde
VĂ©rifier la configuration de restic et remettre en place la sauvegarde (possible de rester sur le mĂŞme dĂ©pĂ´t afin d’optimiser la dĂ©duplication) en se basant sur les articles prĂ©cĂ©dents (voir ici et ici)
Applications
System
- i3wm: Tiling window manager
- polybar: Customizable taskbar
- rofi: Application launcher
- urxvt with urxvt-perls, urxvt-tabbedex & urxvt-resize-font-git
- ly: display manager
- picom: compositor
Tools
Development
- Hugo : générateur de site statique
Productivity
-
Libreoffice : suite bureautique
-
zathura: lecteur de pdf léger (contrôle à la VIM)
-
Sublime-text : éditeur de texte
-
Pandoc : couteau suisse de la conversion de document texte
Finance
- Paperwork : gestionaire de documents administratifs
- Ledger : système de gestion de compte à double entrée (avec ledger2beancount & fava pour le reporting)
Personal
- Nextcloud client : synchronisation de fichier avec un serveur Nextcloud
- thunderbird : client e-mail, contacts & calendrier, synchronisé avec Nextcloud
Media
Video
- youtube-dl : télécharge des vidéos & audio depuis YT & co
- VLC : lecteur vidéo & multimédia
- mkvtoolnix : pour manipuler des fichiers videos Matroska
- handbrake : couteau suisse de la conversion video
Audio
- spotify : service de streaming audio
- rubyripper : convertisseur de CD haute qualité
- soundconverter : convertisseur audio
- playerctl: contrôleur CLI de lecteur multimédia
Images
- gimp : manipulation d’images
- inkscape : manipulation d’images vectorielles
- darktable : chambre noire numérique
- scrot : utilitaire de capture d’Ă©cran en CLI
Books
- mcomix : lecteur de bds & mangas
Utility
System
- ranger: gestionaire de fichiers en console inspiré de Vim
- Nautilus : gestionaire de fichiers graphique
- rofi-power-menu: Power menu pour
rofi - powertop: Monitor system power
- restic : outil de sauvegarde
- dunst : démon de notification
- redshift avec polybar-redshift: ajustement de la tempĂ©rature de l’Ă©cran pour rĂ©duire la fatigue visuelle
Web
- firefox : nagivateur web principal
- ungoogled-chromium : navigateur web secondaire (Google Chromium, sans integration Google)
Network
- openvpn : solution de VPN
- filezilla : client FTP
- mqtt-explorer : client MQTT
- transmission : client Bittorrent
Administation
- ansible : pour orchestrer l’administration de serveurs
- virtualbox & virtualbox-host-modules-arch : virtualisation
Security
- keepassxc : gestionaire de mot de passe
- gnome-keyring : trousseau d’accès pour les applications
- xss-lock : pour verrouiller la session
- betterlockscreen : écran de verrouillage
- xidlehook: verrouille la session automatiquement après un temps d’inactivitĂ© (sauf si plein Ă©cran ou audio en cours)
Theming
- lxappearance: GUI pour sélectionner et voir les thèmes GTK
- hsetroot : configurateur d’arrière-plan (couleur)
- nitrogen: configurateur d’arrière-plan (image)
- Nord: palette de couleur Nord
- Nordic gtk theme: thème Nord pour GTK disponible sur gnome-look
- Nordic firefox theme
- Nordic rofi theme: inspiré par ce thème, et modifié par moi.
Sources & inspirations
- Scripts largement inspirés de : https://gitlab.com/eflinux/
- Guide d’installation Archlinux : https://wiki.archlinux.org/title/Installation_guide
- Chiffrement : https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS
- Customisation i3 :
- Nord https://www.nordtheme.com/
- https://www.reddit.com/r/unixporn/comments/zcazoa/i3gaps_polybar_nord_theme/
- https://www.reddit.com/r/unixporn/comments/87ms1i/i3_nord/
- https://www.reddit.com/r/unixporn/comments/honhqq/i3gaps_nordic_dawn/
- https://github.com/danielronalds/Nord-Theme-Install/
- https://github.com/sohamb117/nordRice
- https://github.com/TheDistroHopper/i3wm-nord
- https://github.com/mina-atef-00/i3-nord
- dots : https://github.com/GideonWolfe/dots & https://github.com/ericmurphyxyz/dotfiles