Arch Linux: Installazione Avanzata con LUKS2, Btrfs e Snapper
Table of content
- Panoramica dell’Architettura
- Fase 1: Preparazione e Boot
- Fase 2: Ottimizzazione Storage (4Kn)
- Fase 3: Partizionamento GPT
- Fase 4: Crittografia LUKS2
- Fase 5: Layout Subvolumi Btrfs
- Fase 6: Montaggio e Installazione Base
- Fase 7: Configurazione Initramfs
- Fase 8: Bootloader GRUB
- Fase 9: Gestione Snapshot con Snapper
- Fase 10: Ottimizzazioni (zram e Rete)
- Fase 11: Conclusione
Questa guida descrive una configurazione professionale per Arch Linux, focalizzata sulla sicurezza dei dati e sulla resilienza del sistema. Implementeremo una crittografia completa del disco, un layout di subvolume Btrfs ottimizzato per gli snapshot automatici e un sistema di ripristino istantaneo.
Panoramica dell’Architettura
-
Crittografia: LUKS2 con algoritmo Argon2id (Full Disk Encryption).
-
Filesystem: Btrfs con layout ottimizzato per Snapper.
-
Storage: Ottimizzazione per settori 4Kn (SSD NVMe moderni).
-
Bootloader: GRUB con integrazione
grub-btrfsper il boot dagli snapshot. -
Memoria: Swap dinamica compressa tramite
zram-generator.
Fase 1: Preparazione e Boot
Assicurarsi di aver effettuato il boot in modalità UEFI e di avere una connessione internet attiva.
# Verifica modalità UEFI
ls /sys/firmware/efi/efivars
# Sincronizzazione orario di sistema
timedatectl set-ntp trueFase 2: Ottimizzazione Storage (4Kn)
Molti SSD NVMe moderni supportano i settori nativi a 4096 byte (4Kn), che offrono performance e affidabilità superiori.
[!CAUTION] Il comando
nvme formatè estremamente distruttivo e cancella istantaneamente ogni dato sul drive.
# Identifica il disco con il seguente comando
lsblk
# Verifica supporto 4Kn
nvme id-ns /dev/nvme0n1 -H | grep "LBA Format"
# Se supportato (es. LBA Format 1 con Data Size 4096), formatta il drive:
nvme format --lbaf=1 /dev/nvme0n1Fase 3: Partizionamento GPT
Utilizziamo gdisk per creare uno schema pulito:
- EFI System Partition: 2048MB (Tipo
EF00). - LUKS Container: Resto del disco (Tipo
8309).
Fase 4: Crittografia LUKS2
Configuriamo il container con Argon2id per la massima protezione contro attacchi brute-force.
# Creazione container criptato
cryptsetup luksFormat --type luks2 \
--sector-size 4096 \
--pbkdf argon2id \
/dev/nvme0n1p2
# Apertura del volume
cryptsetup open /dev/nvme0n1p2 cryptrootFase 5: Layout Subvolumi Btrfs
Creiamo una struttura che separi il sistema operativo (@) dai dati utente (@home) e dai log, permettendo rollback atomici.
mkfs.btrfs -L ArchLinux -s 4096 /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
# Creazione subvolumi
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@snapshots
btrfs subvolume create /mnt/@var_log
btrfs subvolume create /mnt/@var_pkg
umount /mnt
Fase 6: Montaggio e Installazione Base
Montiamo i volumi con opzioni specifiche per SSD (discard=async) e compressione zstd.
BTRFS_OPTS="noatime,compress=zstd:1,space_cache=v2,ssd,discard=async"
# Mount della gerarchia
mount -o $BTRFS_OPTS,subvol=@ /dev/mapper/cryptroot /mnt
mkdir -p /mnt/{boot,home,.snapshots,var/log,var/cache/pacman/pkg}
mount -o $BTRFS_OPTS,subvol=@home /dev/mapper/cryptroot /mnt/home
mount -o $BTRFS_OPTS,subvol=@snapshots /dev/mapper/cryptroot /mnt/.snapshots
mount -o $BTRFS_OPTS,subvol=@var_log /dev/mapper/cryptroot /mnt/var/log
mount -o $BTRFS_OPTS,subvol=@var_pkg /dev/mapper/cryptroot /mnt/var/cache/pacman/pkg
# Formatta e monta la partizione EFI
mkfs.fat -F32 /dev/nvme0n1p1
mount /dev/nvme0n1p1 /mnt/boot
# Installazione (selezionare microcode corretto: intel-ucode o amd-ucode)
pacstrap -K /mnt base linux linux-firmware btrfs-progs cryptsetup device-mapper intel-ucode nvim fish
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mntFase 7: Configurazione Initramfs
Utilizziamo gli hook basati su systemd per la gestione di LUKS2.
Modifica /etc/mkinitcpio.conf:
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)
Esegui la rigenerazione:
mkinitcpio -PFase 8: Bootloader GRUB
Configuriamo GRUB per decriptare il disco all’avvio.
pacman -S grub efibootmgr grub-btrfs inotify-tools
Ottieni l’UUID di /dev/nvme0n1p2 con blkid.
LUKS_UUID=$(blkid -s UUID -o value /dev/nvme0n1p2)
echo "LUKS UUID: $LUKS_UUID"
Modifica /etc/default/grub:
GRUB_CMDLINE_LINUX="rd.luks.name=[UUID_DEL_DISCO]=cryptroot root=/dev/mapper/cryptroot rootflags=subvol=@"
GRUB_ENABLE_CRYPTODISK=ygrub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
systemctl enable grub-btrfsdFase 9: Gestione Snapshot con Snapper
umount /.snapshots
rm -r /.snapshots
snapper -c root create-config /
btrfs subvolume delete /.snapshots
mkdir /.snapshots
mount -a
chmod 750 /.snapshots
# Abilita i timer di manutenzione
systemctl enable snapper-timeline.timer snapper-cleanup.timerFase 10: Ottimizzazioni (zram e Rete)
Zram
pacman -S zram-generator
# Configura in /etc/systemd/zram-generator.conf:
# [zram0]
# zram-size = min(ram, 8192)
# compression-algorithm = zstdNetwork e Utente
pacman -S networkmanager
systemctl enable NetworkManager
useradd -m -G wheel -s /usr/bin/fish tuo_utente
passwd tuo_utente
# Configurazione Sudo
pacman -S sudo
EDITOR=nvim visudo # Decommenta la riga %wheel
Fase 11: Conclusione
exit
umount -R /mnt
cryptsetup close cryptroot
reboot