Skip to main content

Linux immutabile su Debian-based: guida tecnica con comandi estesi e screenshot

adebun
 

1. Introduzione

Questa guida è pensata per lettori tecnici e amministratori che vogliono sperimentare concetti di immutabilità su sistemi Debian/Ubuntu. Tutti i comandi sono testabili in VM; verifica i dispositivi di storage prima di applicare su hardware reale.

Esegui i comandi come root o con sudo. Testa in VM.

2. Che significa “immutabile” (in breve)

Immutabile = parte di sistema fornita come immagine read-only (OSTree, snaps, A/B partitions, subvolumes). Aggiornamenti atomici, rollback semplici e separazione tra sistema e applicazioni (Flatpak, snaps, container).

3. Panoramica delle opzioni su Debian-based

  • Ubuntu Core — immutabile per definizione (snap-only)
  • Btrfs + Snapper — snapshot & rollback su Debian tradizionale
  • OverlayFS — root in sola lettura con overlay temporaneo
  • Containerizzazione (Podman) — separare le applicazioni dal sistema
Quando scegliere quale
  • IoT/Kiosk → Ubuntu Core
  • Desktop sperimentale → Btrfs + Snapper
  • Kiosk temporaneo/lab → OverlayFS
  • Isolamento app → Podman / containers

4. Ubuntu Core — immutabilità totale (esempio)

Target: IoT, kiosk, dispositivi embedded.

Installazione (succinta)
  1. Scarica l'immagine da Ubuntu Core per la piattaforma desiderata.
  2. Flash su SD/EMMC con dd o balenaEtcher.
  3. Primo avvio: associa account Ubuntu One.
Comandi utili
# lista snap (include parti di sistema)
```

snap list

# installare un'app

sudo snap install hello-world

# aggiornare gli snap

sudo snap refresh

# ripristinare una versione precedente (se disponibile)

sudo snap revert hello-world

```

snap list output
Esempio: output di snap list.
Note operative

Ubuntu Core non usa apt per il sistema: kernel, gadget e base sono gestiti come snap. Controlla sempre il canale degli snap prima del deploy (stable/candidate).

5. Btrfs + Snapper su Debian 12 — snapshot e rollback

Questo approccio mantiene l'installazione Debian tradizionale ma aggiunge snapshot affidabili sul filesystem Btrfs.

Prerequisiti
  • Root su subvolume Btrfs (root @)
  • pacchetti: btrfs-progs, snapper
Installazione
sudo apt update
```

sudo apt install -y btrfs-progs snapper

# creare la config per root

sudo snapper -c root create-config /

# verificare config

sudo snapper -c root list-configs

```

Workflow tipico
# snapshot prima
```

sudo snapper -c root create --description "before-upgrade"

# aggiornamento sistema

sudo apt update && sudo apt full-upgrade -y

# snapshot dopo

sudo snapper -c root create --description "after-upgrade"

# elencare snapshot

sudo snapper -c root list

# rollback ad uno snapshot (esempio: ID 5)

sudo snapper -c root rollback 5

# riavviare

after rollback: sudo reboot

```

snapper list
Esempio: snapper -c root list.
Come funziona il rollback

Snapper crea snapshot Btrfs montabili; il comando rollback promuove uno snapshot come subvolume attivo. Testalo in VM prima di usarlo in produzione.

6. OverlayFS: root in sola lettura (kiosk / lab)

OverlayFS permette di montare la root come lowerdir e scrivere le modifiche in un upperdir che puoi resettare.

Esempio rapido
# creare directory per overlay
```

sudo mkdir -p /overlay/{upper,work}

# montare overlay (esempio minimale; test in VM)

sudo mount -t overlay overlay -o lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work /

# verificare che eventuali modifiche finiscano in /overlay/upper

ls -la /overlay/upper

```

Attenzione: questo è un esempio minimale. Alcuni componenti (es. systemd, bootloader) potrebbero comportarsi in modo imprevisto se la root è sovrimontata in modo improprio. Test approfonditi richiesti.
mount overlay
Output di mount che mostra l'overlay montato su /.

7. Container (Podman) per applicazioni immutabili

Usare container per isolare applicazioni è una via pratica per ottenere un sistema di base “pulito” e applicazioni aggiornabili separatamente.

Installazione Podman
sudo apt update
```

sudo apt install -y podman

```

Esempi
# eseguire nginx in container
```

podman run --name test-nginx -d -p 8080:80 docker.io/nginx:latest

# vedere container

podman ps

# fermare e rimuovere

podman stop test-nginx && podman rm test-nginx

```

podman ps
Esempio: podman ps.
Best practice
  • Usa volumi per dati persistenti.
  • Usa digest immutabili per le immagini in produzione (es. nginx@sha256:...).
  • Automatizza aggiornamenti immagine con pipeline CI/CD.

8. Workflow raccomandato (desktop & server)

Desktop (developer laptop)
  • Base: Debian 12 su Btrfs + Snapper.
  • App desktop: Flatpak.
  • Dev tools: Podman / containers.
  • Test rollback mensile in VM.
Server / Edge
  • Preferire immagini immutabili (Ubuntu Core / Flatcar) per fleet.
  • Se si resta su Debian: Snapper + Ansible per orchestrare rollback.
  • Pianificare rolling reboot per applicare aggiornamenti A/B.

9. Suggerimenti per screenshot e grafica

Lista rapida di screenshot utili da includere nell'articolo:

  • Terminale: snap list, snapper -c root list, btrfs subvolume list /, mount, podman ps.
  • Diagramma aggiornamento atomico (schema SVG).
  • Prima/Dopo: file in /etc che scompare dopo reboot con OverlayFS.

Consiglio UX: inserisci le immagini in una griglia responsive usando row / col-md-6 e img-fluid.

10. Conclusione e risorse

Immutabilità = maggiore affidabilità e sicurezza, a costo di minore flessibilità. Su Debian puoi ottenere buoni risultati con Btrfs+Snapper o OverlayFS; per immutabilità completa preferisci Ubuntu Core o soluzioni immutabili native.

Risorse utili
  • Documentazione Ubuntu Core (snapcraft)
  • Snapper / Btrfs: pagine ufficiali e wiki
  • Podman: guida ufficiale