[Français] English

Installation d'Alpine Linux avec disque chiffré (sauf boot), Btrfs, rEFInd

Suivez ce guide à vos risques et périls. Cet article a été écrit initialement le 28 novembre 2024 et a été mis à jour en janvier 2025.

Image d’installation

L’installation de l’image se fait ici depuis un système Linux.

La récupérez sur le site officiel. Dans la plupart des cas, l’image qui vous convient est celle intitulée “standard” x86_64. Téléchargez-la. Prenez aussi la signature sha256 juste à côté du bouton vert, ainsi que la signature GPG. Enfin, téléchargez la clé GPG en haut de la page en cliquant sur la suite de symboles hexadécimaux. Vous devriez avoir ceci (le numéro de la version peut être différent):

Fichier Rôle
alpine-standard-3.20.3-x86_64.iso Image d’installation
alpine-standard-3.20.3-x86_64.iso.asc Signature GPG
alpine-standard-3.20.3-x86_64.iso.sha256 Signature sha256
ncopa.asc Clé publique GPG d’un des développeurs de Alpine Linux

Vérifiez les différents éléments 1 :

gpg --import ncopa.asc
gpg --fingerprint ncopa@alpinelinux.org  # Vérifiez que le fingerprint est identique à celui sur le site d'Alpine Linux

# Vérification de la signature GPG de l'image
gpg --verify alpine-standard-3.20.3-x86_64.iso.asc alpine-standard-3.20.3-x86_64.iso

# Vérification de la signature sha256
sha256sum -c alpine-standard-3.20.3-x86_64.iso.sha256

Exemple de vérification correcte pour GPG (certaines lignes ont été enlevées) :

gpg: Good signature from "Natanael Copa <ncopa@alpinelinux.org>" [unknown]

Pour sha256sum :

alpine-standard-3.20.3-x86_64.iso: OK

Flashez l’image dans une clé USB. Tout ce qui est sur la clé va être effacé.

lsblk  # Identifiez la clé USB
umount /dev/sdX  # Devrait afficher : umount: /dev/sdX: not mounted

cat alpine-standard-3.20.3-x86_64.iso > /dev/sdX
sync

Installation de Alpine Linux

Bootez la clé USB. Identifiez vous avec root (il n’y a pas de mot de passe).

Configuration du système

setup-keymap  # Pour les claviers français, choisissez `fr` puis `fr-latin9`. Tapez `)` pour avoir `-` et `ç` pour `9`
setup-hostname
setup-interfaces  # Configurez la connexion internet
rc-service networking start

Si vous avez configurez statiquement votre connexion internet (interface sans DHCP par exemple), indiquez un serveur DNS avec setup-dns 2.

Si vous utilisez le Wi-Fi, exécutez rc-update add wpa_supplicant boot.

Continuez la configuration :

passwd  # Mot de passe `root`
setup-timezone
rc-update add networking boot
rc-update add seedrng boot
rc-update add acpid default
rc-service acpid start

Éditez le fichier /etc/hosts avec vi. Si votre système fait parti d’un domaine, remplacez <domain> par votre TLD. Si ce n’est pas le cas ou que vous ne savez pas, mettez localdomain à la place.

127.0.0.1       <hostname> <hostname>.<domain> localhost localhost.localdomain
::1             <hostname> <hostname>.<domain> localhost localhost.localdomain

Si vous ne savez pas utiliser vi, tapez i, écrivez le texte puis tapez echap, ZZ.

Ensuite :

setup-ntp  # `chrony` est un bon choix
setup-apkrepos

Modifiez le fichier /etc/apk/repositories avec vi, changez le http en https dans la ligne http://dl-cdn.alpinelinux.org/alpine/v3.20/main (le nom de domaine dépend de celui que vous avez choisi avec setup-apkrepos) puis ajoutez les deux lignes 3 4 :

https://dl-cdn.alpinelinux.org/alpine/v3.20/community
@testing https://dl-cdn.alpinelinux.org/alpine/edge/testing

Terminez la configuration avec :

apk update  # Assurez-vous que tout fonctionne. Sinon, rééditer `/etc/apk/repositories`
setup-sshd  # Pas nécessaire si vous ne voulez pas que l'on puisse se connecter via SSH sur votre système
apk add cryptsetup btrfs-progs dosfstools parted mkinitfs refind@testing
modprobe btrfs

Partitionnement

Remplacez ci-dessous /dev/sdX avec le disque où vous souhaitez installer Alpine Linux. Pour identifier le disque, installez avec apk l’outil lsblk.

parted -a optimal /dev/sdX
(parted) mklabel gpt
(parted) mkpart primary fat32 0% 1G
(parted) name 1 boot
(parted) set 1 boot on
(parted) mkpart primary btrfs 1G 100%
(parted) name 2 crypto-luks
(parted) quit

Système de fichier et chiffrement

mkfs.vfat -F32 /dev/sdX1
cryptsetup luksFormat /dev/sdX2  # Choisissez un mot de passe
cryptsetup open /dev/sdX2 cryptroot
mkfs.btrfs /dev/mapper/cryptroot

mount /dev/mapper/cryptroot /mnt
btrfs subvol create /mnt/@
btrfs subvol create /mnt/@home
btrfs subvol create /mnt/@snapshots
btrfs subvol create /mnt/@var_log
btrfs subvol create /mnt/@swap
umount /mnt

mount -o defaults,subvol=@ /dev/mapper/cryptroot /mnt
mkdir -p /mnt/boot && mount -t vfat /dev/sdX1 /mnt/boot
mkdir -p /mnt/home && mount -o defaults,subvol=@home /dev/mapper/cryptroot /mnt/home
mkdir -p /mnt/.snapshots && mount -o defaults,subvol=@snapshots /dev/mapper/cryptroot /mnt/.snapshots
mkdir -p /mnt/var/log && mount -o defaults,subvol=@var_log /dev/mapper/cryptroot /mnt/var/log
mkdir -p /mnt/swap && mount -o defaults,subvol=@swap /dev/mapper/cryptroot /mnt/swap

Génération d’un fichier swap : si vous avez entre 8 et 64 Go de RAM, prenez 3/2 de la RAM pour l’hibernation 5. Exemple avec 8 Go de RAM 6 :

btrfs filesystem mkswapfile --size 12G --uuid clear /mnt/swap/swapfile
swapon /mnt/swap/swapfile
rc-update add swap

Installation du système de base

BOOTLOADER=none setup-disk -m sys /mnt/

Configuration post-installation

Fichier fstab

Vérifiez qu’il a été correctement généré :

cat /mnt/etc/fstab

Il y a probablement une ligne qui manque pour le fichier swap. Ajoutez la ligne avec 7:

echo "/swap/swapfile none swap defaults 0 0" >> /mnt/etc/fstab

Configuration mkinitfs

Ajoutez la ligne suivante 8 :

echo btrfs >> /mnt/etc/modules

Éditez le fichier /mnt/etc/mkinitfs/mkinitfs.conf et ajouter les modules suivants 7 :

features="... cryptsetup kms keymap resume"

Rajoutez éventuellement des modules spécifiques à vos besoins comme nvme. Puis reconstruisez le disque RAM initial :

mkinitfs -c /mnt/etc/mkinitfs/mkinitfs.conf -b /mnt/ $(ls /mnt/lib/modules/)

rEFInd

Installez rEFInd avec :

refind-install --root /mnt/
mkdir /mnt/boot/EFI/BOOT/  # Fallback
cp /mnt/boot/EFI/refind/refind_x64.efi /mnt/boot/EFI/BOOT/bootx64.efi

Puis changez la configuration de rEFInd :

CRYPT_UUID=$(blkid /dev/sdX2 | sed -n 's/.*UUID="\([^"]*\)".*/\1/p')
ROOT_UUID=$(blkid /dev/mapper/cryptroot | sed -n 's/.*UUID="\([^"]*\)".*/\1/p')
SWAP_OFFSET=$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)

echo "\"Boot with default options\" \"cryptroot=UUID=$CRYPT_UUID cryptdm=luks-$CRYPT_UUID root=UUID=$ROOT_UUID rootfstype=btrfs rootflags=subvol=@ resume=UUID=$ROOT_UUID resume_offset=$SWAP_OFFSET quiet\"" > /mnt/boot/refind_linux.conf
echo "\"Boot with verbose output\" \"cryptroot=UUID=$CRYPT_UUID cryptdm=luks-$CRYPT_UUID root=UUID=$ROOT_UUID rootfstype=btrfs rootflags=subvol=@ resume=UUID=$ROOT_UUID resume_offset=$SWAP_OFFSET\"" >> /mnt/boot/refind_linux.conf

Vérifiez que tout a été bien rempli :

cat /mnt/boot/refind_linux.conf

Pour terminer :

swapoff /mnt/swap/swapfile
umount /mnt/boot
umount /dev/mapper/cryptroot  # Répétez jusqu'à que vous ne pouvez plus
cryptsetup close /dev/mapper/cryptroot
reboot

Et voilà !

Vers un environnement Wayland

On ajoute un administrateur 9:

adduser pialwis
adduser pialwis wheel  # Ajoute `pialwis` au groupe `wheel`
apk add doas  # Alternative à `sudo`
vi /etc/doas.conf  # Enlevez le commentaire pour la ligne avec `wheel`

Vérifiez que le doas marche en vous déconnectant du compte root (avec exit ou C-D), en vous connectant avec le compte administrateur ci-dessus, et en exécutant par exemple doas whoami (devrait afficher root). Si et seulement si cela marche, vous pouvez verrouiller votre compte root avec passwd -l root.

Le répertoire home par défaut de l’utilisateur créé ci-dessus peut être lu par tout le monde. Changez cela avec chmod o-rx /home/pialwis.

Pour installer sway, il y a la commande setup-desktop qui est pratique pour 10. Pour un autre compositeur Wayland, utilisez :

setup-wayland-base util-linux-login
apk add river river-doc  # Exemple avec river
apk add foot font-noto  # Et d'autres selon vos besoins (firefox, libreoffice...)
# Puis d'autres configurations liées au compositeur choisi...

  1. https://wiki.alpinelinux.org/wiki/Installation#Verifying_downloaded_image ↩︎

  2. https://wiki.alpinelinux.org/wiki/LVM_on_LUKS#Preparing_the_Temporary_Installation_Environment ↩︎

  3. https://wiki.alpinelinux.org/wiki/Bootloaders#rEFInd ↩︎

  4. https://wiki.alpinelinux.org/wiki/Repositories#Using_testing_repository ↩︎

  5. https://docs.voidlinux.org/installation/live-images/partitions.html ↩︎

  6. https://wiki.alpinelinux.org/wiki/Filesystems#Swap_Partition ↩︎

  7. https://wiki.alpinelinux.org/wiki/LVM_on_LUKS#Installing_Alpine_Linux ↩︎ ↩︎

  8. https://wiki.alpinelinux.org/wiki/Btrfs#Install ↩︎

  9. https://wiki.alpinelinux.org/wiki/Setting_up_a_new_user ↩︎

  10. https://wiki.alpinelinux.org/wiki/Sway#Installation_using_setup-desktop ↩︎

* Suivant >