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...
-
https://wiki.alpinelinux.org/wiki/Installation#Verifying_downloaded_image ↩︎
-
https://wiki.alpinelinux.org/wiki/LVM_on_LUKS#Preparing_the_Temporary_Installation_Environment ↩︎
-
https://wiki.alpinelinux.org/wiki/Repositories#Using_testing_repository ↩︎
-
https://docs.voidlinux.org/installation/live-images/partitions.html ↩︎
-
https://wiki.alpinelinux.org/wiki/Filesystems#Swap_Partition ↩︎
-
https://wiki.alpinelinux.org/wiki/LVM_on_LUKS#Installing_Alpine_Linux ↩︎ ↩︎
-
https://wiki.alpinelinux.org/wiki/Sway#Installation_using_setup-desktop ↩︎