2716 parole
14 minuti
Fedora 44: Guida Completa di Setup e Post-Installazione

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
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]):

Terminal window
sudo grubby --update-kernel=ALL \
--args="i915.force_probe=!7d55 xe.force_probe=7d55"
sudo dracut --force

Riavvia e riverifica con lspci -k. Per tornare indietro: sudo grubby --update-kernel=ALL --remove-args="i915.force_probe xe.force_probe".


1. Pre-Installazione & Topografia Btrfs#

Obiettivo: creare un layout che permetta rollback atomici del sistema senza distruggere i dati utente, con crittografia full-disk.

BIOS/UEFI Prep#

  • Mantieni Secure Boot abilitato — il driver NVIDIA funziona tramite MOK enrollment.
  • Abilita VT-d — necessario per il passthrough PCI alle VM.
  • Imposta SATA/NVMe Operation su AHCI/NVMe, non RAID/RST — Intel VMD nasconde il disco all’installer.

Secure Boot#

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.

Per la configurazione completa e aggiornata, segui la guida ufficiale RPM Fusion su Secure Boot.

TIP

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:

PartizioneDimensioneFilesystem
/boot/efi600MBFAT32
/boot2.15GBExt4
vuoto (mounts nei subvolumes)RimanenteLUKS2 → 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
SubvolumeMount PointScopo
root/Il sistema operativo
home/homeI dati utente
log/var/logPersistenza log durante i rollback
cache/var/cacheCache rigenerabile — tiene gli snapshot leggeri
tmp/var/tmpFile temporanei persistenti
libvirt/var/lib/libvirtImmagini VM
podman/var/lib/containersContainer Podman rootful (servizi di sistema)
docker/var/lib/dockerContainer Docker
containers_user~/.local/share/containersContainer 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
sudo btrfs subvolume create ~/.local/share/containers
sudo chown $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*).

1. Trova la partizione LUKS:

Terminal window
lsblk -f | grep crypto
# oppure
sudo cryptsetup status $(ls /dev/mapper/ | grep luks)

Prendi nota del device, es. /dev/nvme0n1p3.

2. Enroll la chiave nel TPM2:

Terminal window
sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/nvme0n1p3
  • 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
sudo dracut --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.

Terminal window
# Prima di un aggiornamento BIOS:
sudo systemd-cryptenroll --wipe-slot=tpm2 /dev/nvme0n1p3
# Dopo il riavvio post-BIOS, ri-enrolla:
sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/nvme0n1p3

NoCoW sulle directory write-heavy#

Da fare prima che qualsiasi servizio scriva dati:

Terminal window
sudo chattr +C /var/lib/libvirt/images
NOTE

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
sudo chattr +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
sudo btrfs subvolume create /docker_cont
# aggiungi in fstab: subvol=docker_cont /var/lib/docker

2. Btrfs Snapshot & GUI Management#

Obiettivo: abilitare il “recupero istantaneo” da aggiornamenti rotti tramite interfaccia grafica.

Ottimizzare /etc/fstab#

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.

# Prima (default Fedora):
UUID=xxxx / btrfs subvol=root,compress=zstd:1 0 0
UUID=xxxx /home btrfs subvol=home,compress=zstd:1 0 0
# Dopo:
UUID=xxxx / btrfs subvol=root,noatime,compress=zstd:3,discard=async 0 0
UUID=xxxx /home btrfs subvol=home,noatime,compress=zstd:3,discard=async 0 0

Applica le stesse opzioni a tutte le altre voci Btrfs (var_log, var_cache, ecc.).

Installare i tool Btrfs#

Terminal window
sudo dnf install snapper libdnf5-plugin-actions btrfs-assistant inotify-tools git make

Integrazione con DNF5 (Autosnapper on dnf install)#

Creiamo una action in modo da agganciarci alle transazioni di dnf5 e quindi poter fare snapshot prima e dopo l’installazione di programmi

Terminal window
sudo bash -c "cat > /etc/dnf/libdnf5-plugins/actions.d/snapper.actions" <<'EOF'
# Get snapshot description
pre_transaction::::/usr/bin/sh -c echo\ "tmp.cmd=$(ps\ -o\ command\ --no-headers\ -p\ '${pid}')"
# Creates pre snapshot before the transaction and stores the snapshot number in the "tmp.snapper_pre_number" variable.
pre_transaction::::/usr/bin/sh -c echo\ "tmp.snapper_pre_number=$(snapper\ create\ -t\ pre\ -c\ number\ -p\ -d\ '${tmp.cmd}')"
# If the variable "tmp.snapper_pre_number" exists, it creates post snapshot after the transaction and removes the variable "tmp.snapper_pre_number".
post_transaction::::/usr/bin/sh -c [\ -n\ "${tmp.snapper_pre_number}"\ ]\ &&\ snapper\ create\ -t\ post\ --pre-number\ "${tmp.snapper_pre_number}"\ -c\ number\ -d\ "${tmp.cmd}"\ ;\ echo\ tmp.snapper_pre_number\ ;\ echo\ tmp.cmd
EOF

Integrazione bootloader#

GRUB:

Terminal window
git clone https://github.com/Antynea/grub-btrfs.git
cd grub-btrfs
config like https://youtu.be/xNokTKdkqqc?si=c2dfDG7jmqsdv-4k&t=2960
sudo make install
sudo systemctl enable --now grub-btrfsd.service

grub-btrfsd monitora /.snapshots e rigenera automaticamente il menu GRUB ad ogni nuovo snapshot.

WARNING

Nota bene: i rollback fatti da grub sono READ-ONLY. Quello che si deve fare e’ entrare in btrfs assistant e fare il vero rollback.

Inizializzare Snapper (via GUI)#

  1. Apri Btrfs Assistant dal menu applicazioni GNOME.
  2. Naviga al tab Snapper Settings.
  3. Clicca New, chiama la configurazione root, imposta il path su /. Salva.
  4. Crea una seconda configurazione chiamata home con path /home.

Configurare la retention#

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#

Snapshot clean install subito su root e home#

Andare su Btrfs Assistant e fare snapshot Clean install in modo da avere un fallback pulito

Hostname#

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.

Terminal window
hostnamectl set-hostname YOUR_HOSTNAME

Aggiornare il Firmware (LVFS)#

Aggiorna BIOS e componenti hardware in modo sicuro. Riavvia se vengono applicati aggiornamenti BIOS/UEFI prima di continuare.

Terminal window
sudo fwupdmgr refresh --force
sudo fwupdmgr update

Aggiornamento di sistema#

Terminal window
sudo dnf -y upgrade

Riavvia al termine.

Snapshot post update su root e home#

Andare su Btrfs Assistant e fare snapshot Post big update in modo da avere un fallback a questo punto

Abilitare RPM Fusion & Terra#

Sblocca software non-free, driver proprietari e pacchetti community:

Terminal window
sudo dnf install \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf update @core
sudo dnf install rpmfusion-\*-appstream-data
# Opzionale: Terra (repo community Fyra Labs — pacchetti non presenti in RPM Fusion)
sudo dnf install --nogpgcheck \
--repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' \
terra-release
NOTE

rpmfusion-\*-appstream-data è necessario su DNF5 (Fedora 41+) — senza di esso i pacchetti RPM Fusion non appaiono in GNOME Software.


4. Ecosistema di Gestione Software#

Utility di Archivio#

Terminal window
sudo dnf install unzip p7zip p7zip-plugins unrar -y
NOTE

unrar e p7zip-plugins richiedono RPM Fusion Nonfree abilitato nel passo precedente.


5. Multimedia & Codec Avanzati#

Obiettivo: sostituire le librerie multimediali troncate di Fedora con versioni complete con accelerazione hardware.

FFmpeg completo#

Terminal window
sudo dnf swap 'ffmpeg-free' 'ffmpeg' --allowerasing

GStreamer & gruppi multimediali#

Terminal window
sudo dnf update @multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin

OpenH264 per Firefox#

Terminal window
sudo dnf config-manager setopt fedora-cisco-openh264.enabled=1
sudo dnf install -y openh264 gstreamer1-plugin-openh264 mozilla-openh264

Abilita il plugin in Firefox → Add-ons.


6. Accelerazione Hardware & Pipeline di Compute#

Intel Core Ultra (Target Principale)#

Terminal window
sudo dnf install libva-utils intel-media-driver

Per il compute/AI (OpenCL, Level Zero):

Terminal window
sudo dnf install intel-compute-runtime oneapi-level-zero

AMD Graphics#

Swap ai driver Mesa freeworld per il full hardware encoding:

Terminal window
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld

NVIDIA Graphics#

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.

Terminal window
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda

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
LIBVA_DRIVER_NAME=iHD vainfo

Dovresti vedere i profili VAProfileH264, VAProfileHEVC, VAProfileVP9, VAProfileAV1 elencati come disponibili.

File .desktop ottimizzato#

Salva il seguente file in ~/.local/share/applications/google-chrome.desktop per sovrascrivere quello di sistema:

[Desktop Entry]
Version=1.0
Name=Google Chrome
GenericName=Web Browser
Comment=Access the Internet
Exec=env LIBVA_DRIVER_NAME=iHD /usr/bin/google-chrome-stable --ozone-platform-hint=auto --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL,CanvasOopRasterization --use-gl=angle --use-angle=gl --enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist %U
StartupNotify=true
Terminal=false
Icon=google-chrome
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rss+xml;application/xhtml+xml;application/xhtml_xml;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=Nuova finestra
Exec=env LIBVA_DRIVER_NAME=iHD /usr/bin/google-chrome-stable --ozone-platform-hint=auto --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL,CanvasOopRasterization --use-gl=angle --use-angle=gl --enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist
[Desktop Action new-private-window]
Name=Nuova finestra in incognito
Exec=env LIBVA_DRIVER_NAME=iHD /usr/bin/google-chrome-stable --ozone-platform-hint=auto --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL,CanvasOopRasterization --use-gl=angle --use-angle=gl --enable-gpu-rasterization --enable-zero-copy --ignore-gpu-blocklist --incognito

I flag principali e il loro scopo:

FlagScopo
LIBVA_DRIVER_NAME=iHDForza il driver VA-API Intel (intel-media-driver)
--ozone-platform-hint=autoWayland nativo se disponibile, X11 come fallback
VaapiVideoDecoderDecodifica video su GPU via VA-API
VaapiVideoEncoderCodifica video su GPU via VA-API
VaapiVideoDecodeLinuxGLAbilita VA-API anche con backend GL su Linux
CanvasOopRasterizationRasterizzazione canvas su GPU (out-of-process)
--use-gl=angle + --use-angle=glBackend ANGLE con GL nativo (stabile su Wayland)
--enable-gpu-rasterizationRendering 2D su GPU
--enable-zero-copyEvita copia CPU→GPU dei frame decodificati
--ignore-gpu-blocklistBypassa la blocklist di Chrome per GPU non certificate
Terminal window
# Sposta il file scaricato da ~/Downloads
cp ~/Downloads/google-chrome.desktop ~/.local/share/applications/
# Aggiorna il database delle applicazioni desktop
update-desktop-database ~/.local/share/applications/

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).


7. Performance, Termica & Ottimizzazioni Boot#

Boot più veloce#

Elimina 15-20 secondi dal tempo di boot disabilitando l’attesa di rete:

Terminal window
sudo systemctl disable NetworkManager-wait-online.service
WARNING

RAM Optimization: il comando seguente impedisce a GNOME Software di consumare memoria in background, ma disabilita il controllo automatico degli aggiornamenti.

Terminal window
systemctl --user mask gnome-software-service
systemctl --user disable gnome-software-service

8. Rete & Quality of Life#

DNS personalizzato (Cloudflare over TLS)#

Terminal window
sudo mkdir -p /etc/systemd/resolved.conf.d
sudoedit /etc/systemd/resolved.conf.d/99-dns-over-tls.conf

Contenuto del file:

[Resolve]
DNS=1.1.1.2#security.cloudflare-dns.com 1.0.0.2#security.cloudflare-dns.com 2606:4700:4700::1112#security.cloudflare-dns.com 2606:4700:4700::1002#security.cloudflare-dns.com
DNSOverTLS=yes
Domains=~.

Riavvia il resolver:

Terminal window
sudo systemctl restart systemd-resolved

Rimuovere la pagina default Firefox di Red Hat#

Terminal window
sudo rm -f /usr/lib64/firefox/browser/defaults/preferences/firefox-redhat-default-prefs.js

9. File system e containerizzazione#

File system structure#

~/dev/
├── <company-name>/ # progetti aziendali (subvolume Btrfs)
├── infra/ # IaC condivisa (terraform, k8s, ansible)
├── personal/ # progetti personali
├── tools/ # cloni, esperimenti, utility
├── learning/ # corsi, esercizi, tutorial
├── forks/ # fork OSS con PR aperte
└── archive/ # progetti chiusi

Creazione:

Creazione struttura e creazione subvolume btrfs al fine di non fare rollback di progetti git quando torno indietro sulla home. (remoto ma possibile)

sudo btrfs subvolume create ~/dev
sudo chown $USER:$USER ~/dev
mkdir -p ~/dev/{optit,infra,personal,tools,learning,forks,archive}

Podman e Docker Compose configurazione#

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
sudo dnf install podman podman-docker docker-compose

Abilita il socket Podman e configura DOCKER_HOST — rootless, user-level. È ciò che permette a docker compose di parlare con Podman.

Terminal window
# Abilita e avvia il socket
systemctl --user enable --now podman.socket
systemctl --user status podman.socket # verifica
# Esporta DOCKER_HOST in shell config (~/.zshrc, o ~/.bashrc se usi bash)
echo 'export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock' >> ~/.zshrc
source ~/.zshrc

Test di funzionamento:

Terminal window
docker ps # lista vuota = ok
docker run --rm hello-world # pull + run
docker compose version # compose v2

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:

Terminal window
sudo loginctl enable-linger $USER
loginctl show-user $USER | grep Linger # verifica: Linger=yes

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):

/tmp/compose-test/compose.yml
services:
web:
image: nginx:alpine
ports:
- "8080:80"
cache:
image: redis:alpine
ports:
- "6379:6379"

Avvia e verifica:

Terminal window
cd /tmp/compose-test
docker compose up -d # avvia in background
curl -s localhost:8080 | head -5 # nginx risponde
docker compose exec cache redis-cli ping # redis risponde PONG
docker compose down # stop e pulizia
NOTE
  • Modalità rootless di default → no sudo per docker/podman
  • docker-compose vecchio (v1, Python) è deprecato: usa sempre docker compose (v2, built-in Go)

10. Gnome ed extensions#

Tweaks#

Terminal window
sudo dnf install gnome-tweaks

Extension manager#

Installare da Gnome Software visto che è Flatpak

Extensions#

  • Blur my Shellblur-my-shell@aunetx
  • Color Pickercolor-picker@tuberry
  • Dash to Dockdash-to-dock@micxgx.gmail.com
  • Hide Top Barhidetopbar@mathieu.bidon.ca
  • OBS Zoom To Mouse Remoteobs-zoom-to-mouse-remote@lucagiulianini.com
  • Tiling Shelltilingshell@ferrarodomenico.com
  • VitalsVitals@CoreCoding.com

Backup e Restore delle estensioni#

Backup:

Terminal window
# Estensioni installate
cp -r ~/.local/share/gnome-shell/extensions/ ~/backup-extensions/
# Configurazioni (dconf)
dconf dump /org/gnome/shell/extensions/ > ~/backup-extensions-settings.dconf

Restore:

Terminal window
# Ripristina estensioni
cp -r ~/backup-extensions/ ~/.local/share/gnome-shell/extensions/
# Ripristina configurazioni
dconf load /org/gnome/shell/extensions/ < ~/backup-extensions-settings.dconf

Dopo il restore, logout/login (Wayland).

Fix Dual Boot Desync (Windows)#

Linux usa UTC di default, che è corretto. Il fix è fare in modo che anche Windows usi UTC — esegui in un Command Prompt elevato:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

11. Sicurezza e autenticazione#

Firewall#

Fedora usa firewalld di default. Verifica zona e regole attive:

Terminal window
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --list-all

Zone utili: public (default), home (rete domestica trusted), work (LAN azienda).

SSH keys#

Chiave moderna ed25519 per GitHub/GitLab/server:

Terminal window
ssh-keygen -t ed25519 -C "your_email@example.com"
cat ~/.ssh/id_ed25519.pub # copia su GitHub/GitLab

GPG keys (firma commit, cifratura)#

Terminal window
gpg --full-generate-key # scegli ed25519 (o rsa4096)
gpg --list-secret-keys # ID e' seconda linea

Configura git per firmare i commit:

Terminal window
git config --global user.signingkey <KEY-ID>
git config --global commit.gpgsign true

Bitbucket e Github ```gpg —armor —export ID`

Fingerprint reader (Dell Broadcom)#

Per lettori Broadcom (ID 5842–5867) usa il COPR dedicato:

Terminal window
sudo dnf copr enable grahamwhiteuk/libfprint-tod
sudo dnf swap libfprint libfprint-tod
sudo dnf install libfprint-2-tod1-broadcom-cv3plus libfprint-tod-selinux

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.


12. Prossimi passi#

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:

Shell: zsh + Powerlevel10k#

Setup produttivo con zsh, Oh My Zsh, Powerlevel10k, plugin e Nerd Fonts.

📖 Guida dedicata: Il terminale definitivo: zsh + Oh My Zsh + Powerlevel10k

Dev environment#

  • Editor: VSCode, Neovim, JetBrains Toolbox
  • Version managers: mise o asdf per Node/Python/Go/Ruby
  • Git config globale (user, email, signing key, aliases)
  • Dotfiles management: chezmoi o stow

Backup#

  • Personale: Borg/Restic su disco esterno + cloud (rclone, Nextcloud, Syncthing)
  • Aziendale: spesso gestito centralmente, verifica policy

Power management#

  • power-profiles-daemon (default GNOME) o tuned per profili custom
  • Battery charge threshold su laptop Dell (via BIOS o tlp)

Virtualizzazione#

  • libvirt + virt-manager per VM KVM
  • GNOME Boxes come alternativa più semplice

Comunicazione e produttività#

  • Office: LibreOffice, OnlyOffice
  • Mail: Thunderbird, Evolution (Exchange su aziendale)
  • Chat: Slack/Teams/Discord (Flatpak)
  • Note: Obsidian, Logseq

Accesso remoto e VPN#

  • Tailscale/ZeroTier per mesh VPN personale
  • VPN corporate (OpenVPN/WireGuard) se aziendale
  • SSH server con config hardened se la macchina va raggiunta da fuori

Hardware specifico#

  • Stampante (CUPS, system-config-printer)
  • Scanner (SANE, simple-scan)
  • Tablet grafico (Wacom drivers)
Fedora 44: Guida Completa di Setup e Post-Installazione
https://lucagiulianini.com/posts/fedora-44-setup-guida-completa/
Autore
Luca Giulianini
Pubblicato il
2026-04-12
Licenza
CC BY-NC-SA 4.0