Questa guida copre un’installazione avanzata e production-ready di Fedora 44, ottimizzata per workstation enterprise (Dell Precision con Intel Core Ultra) con supporto team per GPU NVIDIA e AMD. L’obiettivo è un sistema con rollback atomici, crittografia completa del disco, snapshot automatici e accelerazione hardware configurata correttamente.
TIP
Driver xe per Intel Core Ultra e successivi: il nuovo driver KMS Intel xe sostituisce i915 per le GPU integrate/discrete recenti (Meteor Lake, Lunar Lake, Arrow Lake, Panther Lake, Arc, Battlemage). Su Lunar Lake/Battlemage è già il default. Su Meteor Lake (Core Ultra Serie 1)i915 è ancora il driver di fabbrica ma puoi forzare xe per avere stack grafico più moderno, Vulkan migliore e compute Xe più maturo.
Verifica il driver attivo:
Terminal window
1
lspci-k|grep-EA3'VGA|3D'# cerca "Kernel driver in use: i915" o "xe"
Forzare xe via kernel parameter (trova il PCI-ID con lspci -nn | grep -i vga, es. [8086:7d55]):
Fedora supporta nativamente il Secure Boot — tienilo sempre abilitato. Per i driver proprietari (NVIDIA), l’enrollment dei MOK keys avviene automaticamente al primo riavvio dopo l’installazione del driver.
Solo Dell — Consenti i certificati di terze parti (Fondamentale):
Nel BIOS del tuo Dell, cerca un’opzione chiamata “Microsoft UEFI CA” o “3rd Party UEFI CA” (di solito si trova sotto le impostazioni del Secure Boot o della sezione sicurezza). Assicurati che sia abilitata.
Questa opzione dice al BIOS di accettare le firme Linux approvate (MOK), non solo quelle di Windows. Senza di essa, i driver firmati come akmod-nvidia non verranno caricati anche se il MOK enrollment va a buon fine.
Partizionamento (Anaconda Web UI → Cockpit Storage)#
Usa il Cockpit Storage editor (menu a tre punti nella pagina storage) per il partizionamento custom.
Partizioni standard:
Partizione
Dimensione
Filesystem
/boot/efi
600MB
FAT32
/boot
2.15GB
Ext4
vuoto (mounts nei subvolumes)
Rimanente
LUKS2 → Btrfs
LUKS2: seleziona lo spazio libero, crea una partizione cifrata (LUKS2) e imposta la passphrase.
Subvolumi Btrfs (dentro LUKS) — da creare durante l’install:
root montato su / — il sistema operativo
home montato su /home — i dati utente
Subvolume
Mount Point
Scopo
root
/
Il sistema operativo
home
/home
I dati utente
log
/var/log
Persistenza log durante i rollback
cache
/var/cache
Cache rigenerabile — tiene gli snapshot leggeri
tmp
/var/tmp
File temporanei persistenti
libvirt
/var/lib/libvirt
Immagini VM
podman
/var/lib/containers
Container Podman rootful (servizi di sistema)
docker
/var/lib/docker
Container Docker
containers_user
~/.local/share/containers
Container Podman rootless (nested sotto home, esclusi dagli snapshot di /home)
NOTE
containers_user è una subvolume nested — va creata post-install, dopo che l’utente esiste, con:
Terminal window
1
sudobtrfssubvolumecreate~/.local/share/containers
2
sudochown $USER:$USER ~/.local/share/containers
Essendo un subvolume figlio di home, viene automaticamente esclusa dagli snapshot Snapper di /home (Btrfs non snapshotta ricorsivamente le subvolume annidate) — perfetto per i layer dei container che non vuoi rollbackare insieme ai dotfile.
Auto-Unlock con TPM2 (nessuna passphrase al boot)#
Dopo l’installazione puoi enrollare la chiave LUKS2 nel chip TPM2 della macchina: il disco si sblocca automaticamente finché il sistema è integro (stessa CPU, stesso firmware, nessuna manomissione). La passphrase manuale rimane come fallback.
Prerequisiti: Secure Boot abilitato e TPM2 presente (verificabile con ls /dev/tpm*).
PCR 0 — misura il firmware UEFI (rileva modifiche al BIOS)
PCR 7 — misura lo stato del Secure Boot (rileva se viene disabilitato)
Ti verrà chiesta la passphrase LUKS esistente per autorizzare l’enrollment.
4. Rigenera l’initramfs:
Terminal window
1
sudodracut--force
Riavvia: il sistema si sbloccherà automaticamente senza chiedere la passphrase. Se il TPM rileva una modifica al firmware o al Secure Boot, tornerà a chiedere la passphrase manuale.
WARNING
Dopo ogni aggiornamento BIOS: le misurazioni PCR cambiano. Esegui di nuovo systemd-cryptenroll con --wipe-slot=tpm2 prima di aggiornare, oppure il sistema si bloccherà al riavvio successivo.
NOCOW sui container storage (Podman/Docker): con il driver overlay2, le scritture pesanti non avvengono nella directory del container storage — i layer immagine sono per lo più read-only dopo il pull. Il beneficio di chattr +C su /var/lib/containers, /var/lib/docker o ~/.local/share/containers (Podman rootless) è quindi minimo. Non è necessario applicarlo di default.
WARNING
Database voluminosi in container: se esegui PostgreSQL, MySQL, MongoDB o simili con volumi di dati significativi, applica NOCOW sulla directory del volume prima di avviare il container per la prima volta — le scritture random continue causano frammentazione severa su Btrfs senza di esso:
Terminal window
1
sudochattr+C/percorso/del/volume/db
TIP
Docker: crea docker_cont solo se hai specificamente bisogno di Docker-CE. Fedora usa Podman nativamente e rootless di default — la maggior parte dei workflow container non richiede Docker.
Terminal window
1
sudobtrfssubvolumecreate/docker_cont
2
# aggiungi in fstab: subvol=docker_cont /var/lib/docker
Aggiungi noatime,compress=zstd:3 a tutte le voci Btrfs. Mantieni ogni opzione subvol= — grub-btrfs gestisce il boot degli snapshot tramite voci di boot separate, non cambiando il subvolume di default.
Nel tab Snapper Settings, imposta i limiti di retention per evitare che il disco si riempia (es. 5 Timeline, 3 Boot, 10 Number). Verifica che i timer snapper-timeline e snapper-cleanup siano Attivi.
3. Primo Avvio: Firmware, Repository & Aggiornamenti#
Usa un nome che identifichi la macchina fisica, non l’OS (es. precision-7680, tower-5090) — l’hostname dovrebbe restare valido anche dopo un reinstall o cambio distro.
Secure Boot rimane abilitato — i MOK keys vengono enrolled automaticamente al primo riavvio. Attendi 5 minuti prima di riavviare per la compilazione del modulo akmods.
Al riavvio apparirà automaticamente la schermata di MOK enrollment. Seleziona Enroll MOK, conferma e riavvia di nuovo.
Google Chrome con accelerazione hardware (VA-API)#
Su Fedora, Google Chrome non sfrutta l’accelerazione hardware per la decodifica e codifica video per impostazione predefinita. Con la VA-API e il driver Intel (iHD) puoi abilitare il decoding/encoding su GPU, riducendo drasticamente il consumo CPU durante la riproduzione video.
Verifica che VA-API funzioni correttamente:
Terminal window
1
LIBVA_DRIVER_NAME=iHDvainfo
Dovresti vedere i profili VAProfileH264, VAProfileHEVC, VAProfileVP9, VAProfileAV1 elencati come disponibili.
Dopo aver avviato Chrome con il nuovo .desktop, naviga su chrome://gpu e controlla che Video Decode, Video Encode e Rasterization mostrino Hardware accelerated. Per un controllo in tempo reale durante la riproduzione video, apri chrome://media-internals e verifica che il decoder mostri VDAVideoDecoder o VaapiVideoDecoder.
NOTE
Se chrome://gpu mostra ancora “Software only”, assicurati che vainfo funzioni correttamente e che intel-media-driver sia installato. Su alcuni sistemi può essere necessario aggiungere il proprio utente al gruppo video: sudo usermod -aG video $USER (richiede logout).
RAM Optimization: il comando seguente impedisce a GNOME Software di consumare memoria in background, ma disabilita il controllo automatico degli aggiornamenti.
Setup di Podman compatibile con docker CLI e docker compose.
WARNING
Se in futuro installi Docker CE (moby-engine o docker-ce): si scontra con podman-docker su /usr/bin/docker — disinstalla uno dei due. Ricorda anche di fare unset DOCKER_HOST (o gestirlo per-progetto con direnv) quando vuoi parlare col daemon Docker invece che col socket Podman.
Installazione pacchetti.podman è preinstallato; podman-docker fornisce /usr/bin/docker come wrapper; docker-compose è la v2 upstream che parla con il socket Podman.
Terminal window
1
sudodnfinstallpodmanpodman-dockerdocker-compose
Abilita il socket Podman e configura DOCKER_HOST — rootless, user-level. È ciò che permette a docker compose di parlare con Podman.
Terminal window
1
# Abilita e avvia il socket
2
systemctl--userenable--nowpodman.socket
3
systemctl--userstatuspodman.socket# verifica
4
5
# Esporta DOCKER_HOST in shell config (~/.zshrc, o ~/.bashrc se usi bash)
Avvio automatico al boot (lingering). In modalità rootless, i servizi utente vengono terminati al logout e non vengono avviati al boot se nessuno ha effettuato login. Per permettere a podman.socket e ai container con --restart=always (o restart: always in Compose) di partire automaticamente all’accensione del PC, abilita il lingering sul tuo utente:
Senza enable-linger il socket Podman non è raggiungibile finché non fai login, e i container con restart policy non ripartono al boot.
NOTE
Quadlet (opzionale): per servizi di sistema con dipendenze complesse, considera Quadlet (~/.config/containers/systemd/*.container) — definisce i container come unit systemd native, più pulito di podman generate systemd (deprecato).
Test multi-container con Compose. Crea un file di prova con due servizi (nginx + redis):
Abilita poi l’impronta da Impostazioni → Utenti → Impronta digitale.
NOTE
Il COPR supporta sia gli ID 5842-5845 (installa libfprint-2-tod1-broadcom) sia i più nuovi 5864-5867 con -cv3plus (sperimentale). Verifica il tuo chip con lsusb | grep -i broadcom.
A questo punto hai un sistema Fedora 44 stabile, sicuro e pronto per lo sviluppo. I passi successivi dipendono dal tuo ruolo/uso, ma tipicamente coprono: