Raspberry pi 5 - installazione con LUKS

Post 1 by @roadstar — 2026-10-04T09:47:34Z

Metto qui la guida che ho seguito per creare il mio server raspberry pi5 con cifratura forte della partizione di sistema, e’ strutturata in modo che lo sblocco dopo un riavvio puo’ avvenire sia in locale tramite tastiera fisica che in remoto tramite ssh su porta dedicata.

Server Linux headless su Raspberry Pi 5

NVMe 1 TB con cifratura LUKS2 e sblocco all’avvio da tastiera locale o via SSH

1. Panoramica

Si usa Raspberry Pi OS Lite (64 bit) con root su LUKS2 e dropbear-initramfs per lo sblocco remoto. Il Pi 5 ha l’accelerazione AES hardware, quindi le prestazioni restano ottime.

Sostituisci nei comandi: = UUID della partizione FAT, = UUID della partizione LUKS, e gli indirizzi di rete con i tuoi.

2. Preparazione

2.1 EEPROM e ordine di boot

Avvia il Pi dalla microSD (abilita SSH e crea l’utente con Raspberry Pi Imager), poi:

sudo apt update && sudo apt full-upgrade -y
sudo rpi-eeprom-update -a
sudo raspi-config # Advanced Options > Boot Order > NVMe/USB Boot
sudo reboot

2.2 Pacchetti

sudo apt install cryptsetup cryptsetup-initramfs dropbear-initramfs busybox rsync

2.3 Partizionamento NVMe (/dev/nvme0n1)

Con sudo fdisk /dev/nvme0n1 crea tabella GPT, partizione 1 da 512 MB (tipo EFI/FAT) e partizione 2 con il resto del disco.

2.4 Cifratura LUKS2

sudo cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 \
--key-size 512 --pbkdf argon2id /dev/nvme0n1p2
sudo cryptsetup open /dev/nvme0n1p2 cryptroot
sudo mkfs.ext4 /dev/mapper/cryptroot

Scegli una passphrase lunga. Ti verra’ chiesta a ogni avvio.

3. Copia del sistema sull’NVMe

3.1 Formatta, monta e copia

sudo mkfs.vfat -F32 /dev/nvme0n1p1
sudo mkdir -p /mnt/newroot
sudo mount /dev/mapper/cryptroot /mnt/newroot
sudo mkdir -p /mnt/newroot/boot/firmware
sudo mount /dev/nvme0n1p1 /mnt/newroot/boot/firmware
sudo rsync -axHAX --info=progress2 / /mnt/newroot/
sudo rsync -rt /boot/firmware/ /mnt/newroot/boot/firmware/
sudo blkid /dev/nvme0n1p1 /dev/nvme0n1p2

Annota i due UUID: p1 (FAT) e p2 (LUKS).

3.2 Entra nel chroot

for d in dev dev/pts proc sys run; do sudo mount --bind /$d /mnt/newroot/$d; done

4. Configurazione (dentro il chroot)

4.1 /etc/crypttab

cryptroot UUID=<UUID-p2> none luks,initramfs

4.2 /etc/fstab (sostituisci le righe vecchie)

/dev/mapper/cryptroot / ext4 defaults,noatime 0 1
UUID=<UUID-p1> /boot/firmware vfat defaults 0 2

4.3 /boot/firmware/cmdline.txt

Il file deve contenere una sola riga. Rimuovi ogni root=PARTUUID=… e ogni riferimento a firstboot. Parte base:

console=tty1 root=/dev/mapper/cryptroot rootfstype=ext4 rootwait

In fondo alla stessa riga, aggiungi una delle due opzioni di rete (serve a dropbear):

DHCP: ip=:::::eth0:dhcp
IP fisso: ip=192.168.1.50::192.168.1.1:255.255.255.0:pi5:eth0:off

Per l’IP fisso il formato e’ ip=IP::GATEWAY:NETMASK:HOSTNAME:INTERFACCIA:off. Adatta i valori alla tua rete.

4.4 /boot/firmware/config.txt

Aggiungi sotto la sezione [all]:

auto_initramfs=1

Se l’NVMe non viene rilevato al boot, aggiungi anche dtparam=pciex1.

5. Sblocco via SSH con dropbear

5.1 Chiave SSH sul tuo PC

Se non ne hai una: ssh-keygen -t ed25519. Poi mostra la chiave pubblica con cat ~/.ssh/id_ed25519.pub.

5.2 Installa la chiave nel chroot

mkdir -p /etc/dropbear/initramfs
nano /etc/dropbear/initramfs/authorized_keys # incolla la chiave pubblica
chmod 600 /etc/dropbear/initramfs/authorized_keys

5.3 /etc/dropbear/initramfs/dropbear.conf

DROPBEAR_OPTIONS="-I 300 -j -k -p 2222 -s -c cryptroot-unlock"

Significato: timeout 300 s, nessun port forwarding (-j -k), porta 2222, solo chiave (-s), comando forzato di sblocco.

5.4 Genera l’initramfs e verifica

update-initramfs -u -k all
ls /boot/firmware | grep initramfs
lsinitramfs /boot/firmware/initramfs_2712 | grep -E "dropbear|cryptsetup"

Devi vedere il file initramfs_2712 e righe con dropbear e cryptsetup.

6. Chiusura e primo avvio

exit
sudo umount -R /mnt/newroot
sudo cryptsetup close cryptroot
sudo shutdown now

Togli la microSD e riaccendi. Verifica che l’ordine di boot dia priorita’ all’NVMe.

7. Sblocco all’avvio

Per evitare avvisi di host key diversa, nel tuo ~/.ssh/config aggiungi una voce separata:

Host pi5-unlock
HostName 192.168.1.50
Port 2222
User root
HostKeyAlias pi5-unlock

8. Sicurezza e manutenzione

9. Risoluzione problemi


RaspberryPi5Luks (last edited 2026-10-06 09:18:46 by asbesto)