[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 >