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 :

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 :

  1. Chargement du clavier français (azerty)

    loadkeys fr
    
  2. Se connecter au WiFi avec iwctl

    $ iwctl
    [iwd]# station wlan0 scan
    [iwd]# station wlan0 get-networks
    [iwd]# station wlan0 connect SSID
    
  3. Rafraichissement des dépôts

    pacman -Syy
    
  4. 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/nvme0n1
    
    Point 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)
  5. Activer le chiffrement de la partition de donnĂ©es et l’ouvrir.

    cryptsetup luksFormat /dev/nvme0n1p2
    cryptsetup open --type luks /dev/nvme0n1p2 lvm
    
  6. 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
    
  7. 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
    
  8. 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
    
  9. Installer les paquets de base sur /mnt.

    pacstrap -K /mnt base linux linux-firmware git vim intel-ucode
    
  10. Générer le fichier fstab.

    genfstab -U /mnt >> /mnt/etc/fstab
    
  11. Enfin chroot dans 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.)

  1. Télécharger le dépôt git

    git clone https://gitea.h.gued.in/brice/arch
    cd arch
    
  2. 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
    
  3. Penser Ă  vĂ©rifier que tout s’est bien passĂ©.

  4. 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.

  1. Se connecter au WiFi avec network manager

    $ nmcli device wifi connect SSID_or_BSSID password password
    $ nmcli --ask device wifi connect SSID_or_BSSID
    
  2. 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
    
  3. De même il sera surement nécessaire de mettre à jour le script d’environnement utilisateur (i3.sh dans notre cas) pour adapter les éléments à votre contexte.

  4. 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.

  1. Créer le répertoire et le fichier de configuration local de ssh

    $ mkdir .ssh
    $ vim .ssh/config
    
    Host <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
    
  2. 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).

  3. Ajuster les permissions

    $ chmod 700 .ssh/config
    $ chmod 600 <chemin de la clé ssh>
    
  4. CrĂ©er un rĂ©pertoire temporaire pour stocker la restauration (le /tmp système risque fortement d’ĂŞtre beaucoup trop petit)

    $ mkdir ~/tmp
    
  5. 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

  1. Télécharger le dépôt git

    $ git clone https://gitea.h.gued.in/brice/dotfiles
    $ cd dotfiles
    
  2. ExĂ©cuter le script d’installation

    $ chmod +x install.sh
    $ ./install.sh
    
  3. Vérifier que tout s’est bien passé

  4. 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

  1. Recréer les points de montage

    $ sudo mkdir -p /mnt/<nas>/{<share1>,<share2>}
    
  2. 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
    
  3. É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

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

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

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

Web

  • firefox : nagivateur web principal
  • ungoogled-chromium : navigateur web secondaire (Google Chromium, sans integration Google)

Network

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

Sources & inspirations