Questa guida definitiva per rtux.net copre un’installazione di Arch Linux senza compromessi. Implementeremo crittografia LUKS2 con parametri avanzati, un layout Btrfs granulare per snapshot e performance, e ottimizzazioni per hardware moderno.

1. Preparazione e Boot

Verifica il boot UEFI e sincronizza l’orologio.

ls /sys/firmware/efi/efivars
timedatectl set-ntp true

2. Ottimizzazione Storage (4Kn)

Per SSD NVMe moderni, utilizziamo i settori nativi a 4096 byte.

# Formattazione distruttiva LBA 4096
nvme format --lbaf=1 /dev/nvme0n1

Partizionamento GPT

Utilizziamo 2GB per la partizione EFI per supportare futuri Kernel UKI e strumenti di recovery.

  1. EFI: 2048MB (EF00)
  2. LUKS: Resto del disco (8309)

3. Crittografia Hardened (LUKS2)

Utilizziamo parametri espliciti per garantire la massima cifratura e resistenza.

cryptsetup luksFormat --type luks2 \
    --cipher aes-xts-plain64 \
    --key-size 512 \
    --iter-time 5000 \
    --sector-size 4096 \
    --pbkdf argon2id \
    /dev/nvme0n1p2

cryptsetup open /dev/nvme0n1p2 cryptroot

4. Filesystem e Layout Subvolumi Avanzato

Creiamo subvolumi separati per escludere dati temporanei dagli snapshot e ottimizzare le prestazioni di VM e container.

mkfs.btrfs -L ArchLinux -s 4096 /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt

# Layout 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
btrfs subvolume create /mnt/@var_tmp
btrfs subvolume create /mnt/@var_lib_machines

# Disabilitazione CoW per macchine virtuali e database
chattr +C /mnt/@var_lib_machines

umount /mnt

5. Montaggio e Formattazione Boot

Formattiamo correttamente la partizione EFI e montiamo la struttura.

mkfs.fat -F 32 /dev/nvme0n1p1

BTRFS_OPTS="noatime,compress=zstd:1,space_cache=v2,ssd,discard=async"

mount -o $BTRFS_OPTS,subvol=@ /dev/mapper/cryptroot /mnt
mkdir -p /mnt/{boot,home,.snapshots,var/log,var/cache/pacman/pkg,var/tmp,var/lib/machines}

mount /dev/nvme0n1p1 /mnt/boot
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
mount -o $BTRFS_OPTS,subvol=@var_tmp /dev/mapper/cryptroot /mnt/var/tmp
mount -o $BTRFS_OPTS,subvol=@var_lib_machines /dev/mapper/cryptroot /mnt/var/lib/machines

6. Installazione Sistema

Includiamo entrambi i microcode per massima compatibilità hardware (CPU Intel + GPU AMD o viceversa).

pacstrap -K /mnt base linux linux-lts linux-firmware btrfs-progs cryptsetup intel-ucode amd-ucode nvim fish
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt

7. Initramfs (Systemd-based)

Modifichiamo /etc/mkinitcpio.conf includendo il supporto device-mapper.

HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)

mkinitcpio -P

8. Bootloader GRUB

Configuriamo GRUB con i parametri di log standard per un avvio pulito.

In /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX="rd.luks.name=UUID_QUI=cryptroot root=/dev/mapper/cryptroot rootflags=subvol=@"
GRUB_ENABLE_CRYPTODISK=y
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

9. Snapper e Zram

# Configurazione Snapper
snapper -c root create-config /
systemctl enable snapper-timeline.timer snapper-cleanup.timer
systemctl enable grub-btrfsd

# Swap in RAM
pacman -S zram-generator
# In /etc/systemd/zram-generator.conf: [zram0] zram-size = min(ram, 8192)

10. Conclusione

exit
umount -R /mnt
cryptsetup close cryptroot
reboot