linux-troubleshooting flowchart
🗺️ Diagramma Troubleshooting Linux
Ogni diagramma copre un'area specifica. Parti dal sintomo principale che stai osservando, segui i rami Sì/No e arriva alla soluzione o al comando diagnostico successivo. I nodi in verde sono soluzioni, quelli in rosso sono errori critici, quelli in giallo richiedono ulteriori indagini.
Indice dei diagrammi
- #Diagramma 1 — Triage iniziale (da dove parto?)
- Diagramma 2 — Il sistema non si avvia (2A, 2B, 2C)
- Diagramma 3 — Problema di rete (3A, 3B, 3C)
- #Diagramma 4 — Servizio systemd che non parte
- #Diagramma 5 — Disco pieno o problemi filesystem
- #Diagramma 6 — Sistema lento
- Diagramma 7 — Permission denied (7A, 7B)
- #Diagramma 8 — Applicazione che crasha
- #Diagramma 9 — SSH non funziona
- Diagramma 10 — Problemi GPU e grafica (10A, 10B, 10C, 10D)
- #Diagramma 11 — Pacchetti e dipendenze rotte
- #Diagramma 12 — Dispositivo USB/hardware non rilevato
Diagramma 1 — Triage iniziale (da dove parto?)
flowchart TD
START([🔴 Problema su Linux\nCosa stai osservando?])
START --> Q1{Il sistema\nsi avvia?}
Q1 -- No --> D2[📋 Vai a:\nDiagramma 2\nBoot e avvio]
Q1 -- Sì --> Q2{Puoi\nfare login?}
Q2 -- No --> Q2A{Schermata\ndi login\nappare?}
Q2A -- No --> D10[📋 Vai a:\nDiagramma 10\nGPU e grafica]
Q2A -- Sì --> Q2B{Credenziali\ncorrette?}
Q2B -- No --> FIX_LOGIN[Resetta password:\nboot in recovery →\npasswd nomeutente]
Q2B -- Sì --> Q2C{Errore\nnell'account?}
Q2C -- Sì --> FIX_ACC[Controlla:\njournalctl -u sshd\n/var/log/auth.log]
Q2C -- No --> FIX_PAM[Controlla PAM:\n/etc/pam.d/\n/etc/security/]
Q2 -- Sì --> Q3{Qual è\nil sintomo\nprincipale?}
Q3 -- Rete non funziona --> D3[📋 Vai a:\nDiagramma 3\nRete e DNS]
Q3 -- Servizio non parte --> D4[📋 Vai a:\nDiagramma 4\nServizi systemd]
Q3 -- Disco pieno/errori --> D5[📋 Vai a:\nDiagramma 5\nDisco e filesystem]
Q3 -- Sistema lento --> D6[📋 Vai a:\nDiagramma 6\nPerformance]
Q3 -- Permission denied --> D7[📋 Vai a:\nDiagramma 7\nPermessi]
Q3 -- App che crasha --> D8[📋 Vai a:\nDiagramma 8\nCrash applicazione]
Q3 -- SSH non funziona --> D9[📋 Vai a:\nDiagramma 9\nSSH]
Q3 -- Schermo/grafica --> D10B[📋 Vai a:\nDiagramma 10\nGPU e grafica]
Q3 -- Pacchetti rotti --> D11[📋 Vai a:\nDiagramma 11\nPacchetti]
Q3 -- Hardware non visto --> D12[📋 Vai a:\nDiagramma 12\nUSB e driver]
style START fill:#c0392b,color:#fff
style FIX_LOGIN fill:#27ae60,color:#fff
style FIX_ACC fill:#f39c12,color:#fff
style FIX_PAM fill:#f39c12,color:#fff
style D2 fill:#2980b9,color:#fff
style D3 fill:#2980b9,color:#fff
style D4 fill:#2980b9,color:#fff
style D5 fill:#2980b9,color:#fff
style D6 fill:#2980b9,color:#fff
style D7 fill:#2980b9,color:#fff
style D8 fill:#2980b9,color:#fff
style D9 fill:#2980b9,color:#fff
style D10 fill:#2980b9,color:#fff
style D10B fill:#2980b9,color:#fff
style D11 fill:#2980b9,color:#fff
style D12 fill:#2980b9,color:#fffDiagramma 2 — Il sistema non si avvia
Segui in sequenza: 2A (GRUB e schermo), 2B (kernel non si carica), 2C (kernel ok ma non arriva al login).
Diagramma 2A — Il menu GRUB non appare
flowchart TD
START([🔴 Il sistema\nnon si avvia])
START --> Q1{Il menu GRUB\nappare?}
Q1 -- No --> Q1A{Schermo\ncompletamente\nnero?}
Q1A -- Si --> Q1B{Senti bip\no LED attivi?}
Q1B -- Si --> FIX_HW[Problema hardware\nRAM, scheda video\no connessioni interne]
Q1B -- No --> FIX_PWR[Controlla alimentazione\ncavo, presa, PSU]
Q1A -- No --> Q1C{Messaggio\ndi errore visibile?}
Q1C -- No boot device --> FIX_BOOT["BIOS: controlla\nordine di boot\nVerifica disco: lsblk"]
Q1C -- GRUB rescue --> FIX_GRUB_RESCUE["Da GRUB rescue:\nls\nset root=hd0,1\nset prefix=hd0,1/boot/grub\ninsmod normal\nnormal"]
Q1C -- Missing OS --> FIX_MBR[MBR o EFI corrotto\nboot da live USB\ne reinstalla GRUB]
Q1 -- Si --> Q2{Riesci a\nselezionare\nla voce?}
Q2 -- No --> FIX_GRUB_KB[Problema tastiera al boot\nprova altra porta USB o PS2]
Q2 -- Si --> NEXT2B([Continua su\nDiagramma 2B])
style START fill:#c0392b,color:#fff
style NEXT2B fill:#2980b9,color:#fff
style FIX_HW fill:#e74c3c,color:#fff
style FIX_PWR fill:#e74c3c,color:#fff
style FIX_BOOT fill:#f39c12,color:#fff
style FIX_GRUB_RESCUE fill:#f39c12,color:#fff
style FIX_MBR fill:#f39c12,color:#fff
style FIX_GRUB_KB fill:#f39c12,color:#fffDiagramma 2B — Il kernel non si carica
flowchart TD
START([Continua da\nDiagramma 2A])
START --> Q3{Il kernel\nsi carica?}
Q3 -- No --> Q3A{Tipo di\nmessaggio?}
Q3A -- kernel panic --> Q3B{Aggiornamento\nrecente?}
Q3B -- Si --> FIX_OLD_KERNEL[Avvia con kernel precedente\nda menu GRUB Advanced options]
Q3B -- No --> FIX_PANIC["journalctl -b -1\ndmesg | grep panic\nControlla RAM con memtest86"]
Q3A -- initramfs error --> FIX_INITRAMFS["Da live USB in chroot:\nupdate-initramfs -u -k all\nDebian/Ubuntu\noppure\ndracut --force\nRed Hat/Fedora"]
Q3A -- Nessun errore --> FIX_QUIET["Rimuovi quiet e splash\ndai parametri kernel\nper vedere l'output completo"]
Q3 -- Si --> NEXT2C([Continua su\nDiagramma 2C])
style START fill:#2980b9,color:#fff
style NEXT2C fill:#2980b9,color:#fff
style FIX_OLD_KERNEL fill:#27ae60,color:#fff
style FIX_PANIC fill:#e74c3c,color:#fff
style FIX_INITRAMFS fill:#f39c12,color:#fff
style FIX_QUIET fill:#27ae60,color:#fffDiagramma 2C — Il sistema non raggiunge il login
flowchart TD
START([Continua da\nDiagramma 2B])
START --> Q4{Il sistema\nraggiunge il login?}
Q4 -- No --> Q4A{A quale punto\nsi blocca?}
Q4A -- A job is running --> Q4B["Servizio bloccato:\nCtrl+Alt+F2 per TTY\njournalctl -b -p err\nsystemctl list-jobs"]
Q4A -- Schermo nero post-GRUB --> D10C["Problema grafico:\naggiungi nomodeset\nai parametri kernel in GRUB"]
Q4A -- Filesystem check --> Q4C{fsck\ncompletato?}
Q4C -- Si --> Q4D["Attendi oppure forza skip:\nCtrl+D\noppure digita root password"]
Q4C -- Blocca --> FIX_FSCK["Boot in emergency target:\nsystemd.unit=emergency.target\nfsck -fy /dev/sdXY"]
Q4 -- Si --> SOL_OK(["✅ Sistema avviato\ncontrolla i log:\njournalctl -b -p err"])
style START fill:#2980b9,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style Q4B fill:#f39c12,color:#fff
style D10C fill:#27ae60,color:#fff
style Q4D fill:#f39c12,color:#fff
style FIX_FSCK fill:#f39c12,color:#fffe)
nomodeset→ disabilita il KMS grafico, utile per schermo nero post-GRUBsystemd.unit=emergency.target→ shell minimale prima di qualsiasi serviziosystemd.unit=rescue.target→ shell di root con filesystem montatoinit=/bin/bash→ shell bash direttamente come PID 1 (estrema ratio)
Diagramma 3 — Problema di rete
Segui in sequenza: 3A (interfaccia e IP), 3B (gateway e internet), 3C (DNS).
Diagramma 3A — Interfaccia e indirizzo IP
flowchart TD
START([🔴 Rete\nnon funziona])
START --> Q1{Interfaccia di rete\nvisibile?}
Q1 -- Controlla --> CMD1["ip link show\nip addr show"]
Q1 -- No --> Q1A{Il driver\ne caricato?}
Q1A -- Controlla --> CMD1A["lspci -k\nlsmod | grep -i net\ndmesg | grep -i eth"]
Q1A -- No --> FIX_DRV["Installa driver:\napt install firmware-linux\nmodprobe nome-modulo"]
Q1A -- Si --> FIX_HW2[Hardware difettoso\no slot PCI o USB guasto]
Q1 -- Si --> Q2{Interfaccia\nha un IP?}
Q2 -- Controlla --> CMD2["ip addr show eth0"]
Q2 -- No --> Q2A{DHCP\no IP statico?}
Q2A -- DHCP --> Q2B["Richiedi IP:\ndhclient eth0\nnmcli device reapply eth0"]
Q2A -- Statico --> Q2C["Assegna manualmente:\nip addr add 192.168.1.10/24 dev eth0\nip link set eth0 up"]
Q2 -- Si --> NEXT3B([Continua su\nDiagramma 3B])
style START fill:#c0392b,color:#fff
style NEXT3B fill:#2980b9,color:#fff
style FIX_DRV fill:#f39c12,color:#fff
style FIX_HW2 fill:#e74c3c,color:#fff
style Q2B fill:#27ae60,color:#fff
style Q2C fill:#27ae60,color:#fffDiagramma 3B — Gateway e connettività internet
flowchart TD
START([Continua da\nDiagramma 3A])
START --> Q3{Riesci a\npingare il gateway?}
Q3 -- Controlla --> CMD3["ip route show\nping -c 4 gateway"]
Q3 -- No --> Q3A{Gateway nella\nroute table?}
Q3A -- No --> FIX_ROUTE["Aggiungi route:\nip route add default via 192.168.1.1"]
Q3A -- Si --> Q3B{Cavo o WiFi ok?}
Q3B -- No --> FIX_CABLE["Controlla cavo e switch\nip link set eth0 up"]
Q3B -- Si --> FIX_L2["Problema L2 o switch:\nethtool eth0\nip -s link show eth0"]
Q3 -- Si --> Q4{Riesci a\npingare 8.8.8.8?}
Q4 -- No --> Q4A{Firewall\nlocale attivo?}
Q4A -- Controlla --> CMD4A["iptables -L -n\nufw status\nfirewall-cmd --list-all"]
Q4A -- Si blocca --> FIX_FW["Aggiungi regola:\nufw allow out to any\niptables -A OUTPUT -j ACCEPT"]
Q4A -- No --> Q4B{Routing\ncorretto?}
Q4B -- Controlla --> CMD4B["ip route show\ntraceroute 8.8.8.8"]
Q4B -- No --> FIX_ROUTE2["Ripristina route default:\nip route add default via GATEWAY"]
Q4B -- Si --> FIX_ISP["Problema ISP o router:\nriavvia il router\ncontatta ISP"]
Q4 -- Si --> NEXT3C([Continua su\nDiagramma 3C])
style START fill:#2980b9,color:#fff
style NEXT3C fill:#2980b9,color:#fff
style FIX_ROUTE fill:#27ae60,color:#fff
style FIX_CABLE fill:#f39c12,color:#fff
style FIX_L2 fill:#f39c12,color:#fff
style FIX_FW fill:#27ae60,color:#fff
style FIX_ROUTE2 fill:#27ae60,color:#fff
style FIX_ISP fill:#e74c3c,color:#fffDiagramma 3C — Risoluzione DNS
flowchart TD
START([Continua da\nDiagramma 3B])
START --> Q5{Il DNS\nfunziona?}
Q5 -- Controlla --> CMD5["ping google.com\ndig google.com\ndig @8.8.8.8 google.com"]
Q5 -- No --> Q5A{Query fallisce\nanche con 8.8.8.8?}
Q5A -- Controlla --> CMD5A["dig @8.8.8.8 google.com"]
Q5A -- Si --> FIX_DNSBLOCK["DNS UDP bloccato:\nprova DNS su TCP:\ndig +tcp @8.8.8.8 google.com\no usa DNS over HTTPS"]
Q5A -- No --> Q5B{resolv.conf\ne corretto?}
Q5B -- Controlla --> CMD5B["cat /etc/resolv.conf\nresolvectl status"]
Q5B -- No --> FIX_RESOLV["Correggi resolv.conf:\nnameserver 8.8.8.8\nnameserver 1.1.1.1\no riconfigura NetworkManager"]
Q5B -- Si --> FIX_CACHE["Flush cache DNS:\nresolvectl flush-caches\nsystemctl restart systemd-resolved"]
Q5 -- Si --> SOL_OK(["✅ Rete funzionante\nProblema risolto"])
style START fill:#2980b9,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_DNSBLOCK fill:#f39c12,color:#fff
style FIX_RESOLV fill:#27ae60,color:#fff
style FIX_CACHE fill:#27ae60,color:#fffDiagramma 4 — Servizio systemd che non parte
flowchart TD
START([🔴 Servizio systemd\nnon si avvia])
START --> CMD0["Prima cosa:\nsystemctl status nome.service\njournalctl -u nome.service -n 50"]
CMD0 --> Q1{Qual è\nlo stato\nriportato?}
Q1 -- "failed" --> Q2{Codice\ndi uscita?}
Q1 -- "inactive/dead" --> Q1A{È abilitato\nall'avvio?}
Q1A -- Controlla --> CMD1A["systemctl is-enabled nome.service"]
Q1A -- No --> FIX_ENABLE["systemctl enable --now nome.service"]
Q1A -- Sì --> Q1B{Il servizio\nè stato\nfermato manualmente?}
Q1B -- Sì --> FIX_START["systemctl start nome.service"]
Q1B -- No --> Q2
Q2 -- "exit-code" --> Q2A{L'errore\nè nel log?}
Q2A -- Controlla --> CMD2A["journalctl -u nome.service --no-pager | tail -30"]
Q2A -- "No such file or directory" --> Q2B{Il binario\nesiste?}
Q2B -- Controlla --> CMD2B["which nome-comando\nls -la /percorso/binario"]
Q2B -- No --> FIX_INSTALL[Reinstalla il pacchetto:\napt install --reinstall nome\no ripristina il binario]
Q2B -- Sì --> Q2C{I permessi\nsul binario\nsono corretti?}
Q2C -- Controlla --> CMD2C["ls -la /percorso/binario\nstat /percorso/binario"]
Q2C -- No --> FIX_PERM["chmod +x /percorso/binario\nchown root:root /percorso/binario"]
Q2C -- Sì --> Q2D{Il percorso\nnel .service\nè assoluto?}
Q2D -- No --> FIX_PATH["Usa percorso assoluto\nnel file .service:\nExecStart=/usr/bin/nome-comando\nnon ExecStart=nome-comando"]
Q2D -- Sì --> Q3
Q2 -- "timeout" --> Q2E{Il servizio\nsi blocca\ndurante l'avvio?}
Q2E -- Sì --> Q2F{Dipende da\nuna risorsa\nnon disponibile?}
Q2F -- Rete --> FIX_NET_DEP["Aggiungi al [Unit]:\nAfter=network-online.target\nWants=network-online.target"]
Q2F -- Database --> FIX_DB_DEP["Aggiungi al [Unit]:\nAfter=mysql.service\nRequires=mysql.service"]
Q2F -- Filesystem --> FIX_FS_DEP["Aggiungi al [Unit]:\nRequiresMountsFor=/percorso"]
Q2 -- "signal=KILLED" --> Q2G{OOM Killer\nha terminato\nil processo?}
Q2G -- Controlla --> CMD2G["dmesg | grep -i oom\njournalctl | grep 'Out of memory'"]
Q2G -- Sì --> FIX_OOM[Aumenta RAM/swap\no limita memoria\ncon MemoryMax= nel .service]
Q2G -- No --> FIX_ULIMIT["Controlla i limiti:\njournalctl -u nome.service | grep limit\nAggiungi LimitNOFILE= al .service"]
Q3{Problemi\ndi configurazione\ndel servizio?}
Q3 -- Controlla --> CMD3["systemctl cat nome.service\nsystemd-analyze verify nome.service"]
Q3 -- Sì --> Q3A{Il file .service\nha errori\ndi sintassi?}
Q3A -- Sì --> FIX_SYNTAX["systemctl edit nome.service\no\nnano /etc/systemd/system/nome.service\nPoi: systemctl daemon-reload"]
Q3A -- No --> Q4
Q4{SELinux o\nAppArmor\nblocca?}
Q4 -- Controlla --> CMD4["ausearch -m avc -ts recent\njournalctl | grep -i 'apparmor\\|selinux'\ngetenforce"]
Q4 -- Sì, SELinux --> FIX_SEL["setenforce 0 (test temporaneo)\naudit2allow -a -M fix-servizio\nsemodule -i fix-servizio.pp"]
Q4 -- Sì, AppArmor --> FIX_AA["aa-complain /etc/apparmor.d/...\naa-logprof ← genera suggerimenti"]
Q4 -- No --> SOL_ADVINV["Indagine avanzata:\nstrace -p PID del servizio\nlsof -p PID\njournalctl -u nome.service -o verbose"]
SOL_OK([✅ Servizio avviato\ncon successo])
FIX_ENABLE --> SOL_OK
FIX_START --> SOL_OK
FIX_INSTALL --> SOL_OK
FIX_PERM --> SOL_OK
FIX_PATH --> SOL_OK
FIX_NET_DEP --> SOL_OK
FIX_DB_DEP --> SOL_OK
FIX_FS_DEP --> SOL_OK
FIX_SYNTAX --> SOL_OK
FIX_SEL --> SOL_OK
FIX_AA --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_ENABLE fill:#27ae60,color:#fff
style FIX_START fill:#27ae60,color:#fff
style FIX_INSTALL fill:#f39c12,color:#fff
style FIX_PERM fill:#27ae60,color:#fff
style FIX_PATH fill:#27ae60,color:#fff
style FIX_NET_DEP fill:#27ae60,color:#fff
style FIX_DB_DEP fill:#27ae60,color:#fff
style FIX_FS_DEP fill:#27ae60,color:#fff
style FIX_OOM fill:#e74c3c,color:#fff
style FIX_ULIMIT fill:#f39c12,color:#fff
style FIX_SYNTAX fill:#27ae60,color:#fff
style FIX_SEL fill:#f39c12,color:#fff
style FIX_AA fill:#f39c12,color:#fff
style SOL_ADVINV fill:#8e44ad,color:#fffDiagramma 5 — Disco pieno o problemi filesystem
flowchart TD
START([🔴 Errori disco\no spazio esaurito])
START --> Q1{Qual è\nil sintomo?}
Q1 -- "No space left on device" --> Q2{df -h mostra\nspazio esaurito?}
Q2 -- Controlla --> CMD2["df -h\ndf -i"]
Q2 -- Sì, spazio 0% --> Q3{Quale\npartizione\nè piena?}
Q3 -- "/" root --> Q3A["Trova cosa occupa spazio:\ndu -h --max-depth=1 / | sort -rh | head -20\nncdu /"]
Q3A --> Q3B{Cosa occupa\npiù spazio?}
Q3B -- Log enormi --> FIX_LOGS["journalctl --vacuum-size=200M\njournalctl --vacuum-time=7d\nfind /var/log -name '*.log' -size +100M"]
Q3B -- File temporanei --> FIX_TMP["find /tmp -mtime +3 -delete\napt clean / dnf clean all\npip cache purge"]
Q3B -- Core dump --> FIX_CORE["find / -name 'core.*' -size +10M -delete\ncoredumpctl clean"]
Q3B -- Container/immagini --> FIX_DOCKER["docker system prune -a\ndocker volume prune"]
Q3B -- File di dati --> Q3C[Identifica e comprimi\no sposta su altra\npartizione/disco]
Q2 -- No, spazio ok --> Q4{df -i mostra\ninode esauriti?}
Q4 -- Controlla --> CMD4["df -i\nfind / -xdev -printf '%h\\n' 2>/dev/null | sort | uniq -c | sort -rn | head -10"]
Q4 -- Sì, inode 100% --> FIX_INODE["Trova directory con molti file:\nfind /tmp -maxdepth 1 -type d | while read d; do echo $(ls $d | wc -l) $d; done | sort -rn\nEliminali manualmente"]
Q4 -- No --> Q5
Q5{Il filesystem\nè in sola\nlettura?}
Q5 -- Controlla --> CMD5["mount | grep 'ro,\\|ro)'\ndmesg | grep -i 'remount\\|readonly'"]
Q5 -- Sì --> Q5A{Errori\nnel kernel log?}
Q5A -- Controlla --> CMD5A["dmesg | grep -i 'error\\|fail\\|i/o error'"]
Q5A -- I/O errors --> FIX_HDD["smartctl -a /dev/sda\nIl disco potrebbe essere guasto!\nFAI UN BACKUP SUBITO"]
Q5A -- No errors --> FIX_RO["Rimonta in lettura-scrittura:\nmount -o remount,rw /\nSe riaccade: fsck alla prossima ripartenza"]
Q5 -- No --> Q6{Errori\nfsck o\ncorruzione?}
Q6 -- Controlla --> CMD6["dmesg | grep -i 'ext4\\|btrfs\\|xfs\\|filesystem'\njournalctl -b | grep -i 'error\\|corrupt'"]
Q6 -- Sì --> Q6A{Il filesystem\nè montato\nin R/W?}
Q6A -- Sì --> FIX_UNMOUNT["Smonta prima di fsck!\numount /dev/sdXY\nSe è root: boot da live USB"]
Q6A -- No o live USB --> FIX_FSCK["fsck -fy /dev/sdXY\nPer btrfs: btrfs check --repair /dev/sdXY\nPer xfs: xfs_repair /dev/sdXY"]
Q6 -- No --> Q7{Partizione\nmancante o\nnon montata?}
Q7 -- Controlla --> CMD7["lsblk\nblkid\ncat /etc/fstab"]
Q7 -- Sì --> Q7A{UUID in\nfstab corretto?}
Q7A -- Controlla --> CMD7A["blkid /dev/sdXY\ngrep UUID /etc/fstab"]
Q7A -- No --> FIX_FSTAB["Aggiorna /etc/fstab con UUID corretto\nblkid /dev/sdXY\nnano /etc/fstab"]
Q7A -- Sì --> FIX_MOUNT["mount -a\no mount /dev/sdXY /mountpoint"]
SOL_OK([✅ Problema disco risolto])
FIX_LOGS --> SOL_OK
FIX_TMP --> SOL_OK
FIX_CORE --> SOL_OK
FIX_DOCKER --> SOL_OK
FIX_INODE --> SOL_OK
FIX_RO --> SOL_OK
FIX_FSCK --> SOL_OK
FIX_FSTAB --> SOL_OK
FIX_MOUNT --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_HDD fill:#e74c3c,color:#fff
style FIX_LOGS fill:#27ae60,color:#fff
style FIX_TMP fill:#27ae60,color:#fff
style FIX_CORE fill:#27ae60,color:#fff
style FIX_DOCKER fill:#27ae60,color:#fff
style FIX_INODE fill:#f39c12,color:#fff
style FIX_RO fill:#f39c12,color:#fff
style FIX_UNMOUNT fill:#f39c12,color:#fff
style FIX_FSCK fill:#f39c12,color:#fff
style FIX_FSTAB fill:#27ae60,color:#fff
style FIX_MOUNT fill:#27ae60,color:#fff
Se dmesg mostra I/O error su un disco, fai immediatamente un backup. Il disco sta per cedere. Non perdere tempo a ripararlo: copia i dati prima che sia troppo tardi.
Diagramma 6 — Sistema lento
flowchart TD
START([🔴 Sistema lento\no non risponde])
START --> CMD0["Panoramica rapida:\nuptime && free -h && iostat -x 1 3"]
CMD0 --> Q1{Load average\n> numero di core?}
Q1 -- Controlla --> CMD1["uptime\nnproc"]
Q1 -- Sì --> Q2{CPU in uso\nal 100%?}
Q2 -- Controlla --> CMD2["top oppure htop\nps aux --sort=-%cpu | head -10"]
Q2 -- Sì --> Q2A{Un singolo\nprocesso usa\ntutta la CPU?}
Q2A -- Sì --> Q2B{Il processo\nè legittimo?}
Q2B -- No, sconosciuto --> FIX_MALWARE["Possibile malware:\nps auxf\nlsof -p PID\nkill -9 PID\nAudit: rkhunter --check"]
Q2B -- Sì --> Q2C{È bloccato\nin loop?}
Q2C -- Sì --> FIX_LOOP["kill -9 PID\nO abbassa priorità:\nrenice -n 19 -p PID\nPoi analizza con: strace -p PID"]
Q2C -- No --> FIX_CPU_OK[Carico legittimo:\nAttendi il completamento\no aggiungi CPU/ottimizza app]
Q2A -- No, molti processi --> Q2D{Sono processi\ndello stesso\nservizio?}
Q2D -- Sì --> FIX_FORKBOMB["Possibile fork bomb:\nsystemctl stop servizio\no riavvia il sistema"]
Q2D -- No --> FIX_SCHED["Troppi processi paralleli:\nSystemd: aggiungi CPUQuota=50%\nnel file .service"]
Q2 -- No, CPU ok --> Q3{RAM quasi\nesaurita\no swap in uso?}
Q3 -- Controlla --> CMD3["free -h\ncat /proc/meminfo | grep -i 'memavail\\|swaptotal\\|swapfree'"]
Q3 -- Sì --> Q3A{Swap in\nuso > 0?}
Q3A -- Molto swap --> Q3B{Processo con\nmemory leak?}
Q3B -- Controlla --> CMD3B["ps aux --sort=-%mem | head -10\nwatch -n 5 'ps aux --sort=-%mem | head -5'"]
Q3B -- Sì --> FIX_LEAK["Riavvia il processo\no il servizio:\nsystemctl restart nome\nSegnala il bug al maintainer"]
Q3B -- No --> FIX_SWAP["RAM insufficiente:\nAggiungi swap temporaneo:\nfallocate -l 4G /swapfile\nchmod 600 /swapfile\nmkswap /swapfile && swapon /swapfile"]
Q3 -- No, RAM ok --> Q4{I/O su disco\nè il collo\ndi bottiglia?}
Q4 -- Controlla --> CMD4["iostat -x 1 5\niotop -o"]
Q4 -- Sì, %util alto --> Q4A{Quale processo\nscrive/legge\ndi più?}
Q4A -- Controlla --> CMD4A["iotop -o\npidstat -d 1"]
Q4A --> Q4B{Il disco\nè un HDD\nvecchio?}
Q4B -- Sì --> FIX_IO_HDD["Cambia scheduler:\necho mq-deadline > /sys/block/sda/queue/scheduler\nO sostituisci con SSD"]
Q4B -- No, SSD/NVMe --> Q4C{SMART\nok?}
Q4C -- Controlla --> CMD4C["smartctl -a /dev/sda\nhddtemp /dev/sda"]
Q4C -- Errori SMART --> FIX_SMART["Disco guasto!\nBACKUP IMMEDIATO\nSostituisci il disco"]
Q4C -- OK --> FIX_IO_APP["Problema di I/O nell'app:\nAggiungi caching\nO usa noatime nel mount"]
Q4 -- No, I/O ok --> Q5{Problema\ndi rete\nlento?}
Q5 -- Controlla --> CMD5["nethogs\niftop\nping 8.8.8.8"]
Q5 -- Sì --> Q5A{Saturazione\nbanda?}
Q5A -- Sì --> FIX_BW["Identifica processo:\nnethogs eth0\nLimita banda: tc qdisc"]
Q5A -- No --> FIX_LAT["Alta latenza:\nmtr 8.8.8.8\nProblema ISP o routing"]
Q5 -- No --> Q6{Throttling\ntermico?}
Q6 -- Controlla --> CMD6["sensors\ndmesg | grep -i throttl\ncat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq"]
Q6 -- Sì --> FIX_TEMP["CPU si surriscalda:\nPulisci il dissipatore\nRiapplica pasta termica\nControlla ventole: sensors | grep fan"]
Q6 -- No --> SOL_ADVINV["Indagine avanzata:\nperf top\nsystemd-analyze blame\nlatencytop"]
style START fill:#c0392b,color:#fff
style FIX_MALWARE fill:#e74c3c,color:#fff
style FIX_LOOP fill:#f39c12,color:#fff
style FIX_CPU_OK fill:#27ae60,color:#fff
style FIX_FORKBOMB fill:#e74c3c,color:#fff
style FIX_SCHED fill:#f39c12,color:#fff
style FIX_LEAK fill:#f39c12,color:#fff
style FIX_SWAP fill:#f39c12,color:#fff
style FIX_IO_HDD fill:#f39c12,color:#fff
style FIX_SMART fill:#e74c3c,color:#fff
style FIX_IO_APP fill:#f39c12,color:#fff
style FIX_BW fill:#f39c12,color:#fff
style FIX_LAT fill:#f39c12,color:#fff
style FIX_TEMP fill:#e74c3c,color:#fff
style SOL_ADVINV fill:#8e44ad,color:#fffDiagramma 7 — Permission denied
Segui in sequenza: 7A (permessi base e proprietario), 7B (MAC, mount, attributi e ACL).
Diagramma 7A — Esistenza file e permessi Unix base
flowchart TD
START([🔴 Permission denied\no accesso negato])
START --> CMD0["Leggi l'errore completo:\nls -la /percorso/file\nstat /percorso/file\nid"]
CMD0 --> Q1{Il file o directory\nesiste?}
Q1 -- No --> FIX_404["Il file non esiste:\ncontrolla il percorso\nreadlink -f /percorso"]
Q1 -- Si --> Q2{Sei il\nproprietario\no hai i permessi?}
Q2 -- Controlla --> CMD3["ls -la /percorso\nid\ngroups"]
Q2 -- No permessi --> Q4{Sei root\no hai sudo?}
Q4 -- Si --> FIX_CHOWN["Cambia proprietario:\nchown tuoutente:tuogruppo /percorso\nO correggi permessi:\nchmod 644 /file\nchmod 755 /directory"]
Q4 -- No --> FIX_ASK["Chiedi all'amministratore\no usa sudo se disponibile"]
Q2 -- Si ho permessi --> Q5{Nonostante i permessi\nUnix e ancora negato?}
Q5 -- Si --> NEXT7B([Continua su\nDiagramma 7B])
SOL_OK(["✅ Accesso concesso"])
FIX_CHOWN --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style NEXT7B fill:#2980b9,color:#fff
style FIX_404 fill:#e74c3c,color:#fff
style FIX_CHOWN fill:#27ae60,color:#fff
style FIX_ASK fill:#f39c12,color:#fffDiagramma 7B — SELinux, AppArmor, mount, attributi e ACL
flowchart TD
START([Continua da\nDiagramma 7A])
START --> Q6{SELinux attivo?}
Q6 -- Controlla --> CMD6["getenforce\nls -Z /percorso/file\nausearch -m avc -ts recent"]
Q6 -- Si e nega --> FIX_SEL["SELinux blocca:\naudit2allow -a -M fix\nsemodule -i fix.pp\nO correggi il contesto:\nrestorecon -Rv /percorso"]
Q6 -- No --> Q7{AppArmor attivo?}
Q7 -- Controlla --> CMD7["aa-status\njournalctl | grep apparmor\ngrep DENIED /var/log/syslog"]
Q7 -- Si e nega --> FIX_AA["AppArmor blocca:\naa-complain /etc/apparmor.d/profilo\naa-logprof\naa-enforce /etc/apparmor.d/profilo"]
Q7 -- No --> Q8{Filesystem montato\ncon noexec o nowrite?}
Q8 -- Controlla --> CMD8["mount | grep /percorso\ncat /proc/mounts"]
Q8 -- Si --> FIX_MOUNT["Rimonta senza restrizioni:\nmount -o remount,exec /percorso\nO modifica /etc/fstab"]
Q8 -- No --> Q9{Il file ha\nattributi speciali?}
Q9 -- Controlla --> CMD9["lsattr /percorso/file"]
Q9 -- Flag i immutable --> FIX_IMMUTABLE["Rimuovi immutable come root:\nchattr -i /percorso/file"]
Q9 -- Flag a append-only --> FIX_APPEND["Rimuovi append-only come root:\nchattr -a /percorso/file"]
Q9 -- No attributi speciali --> Q10{Problema di ACL?}
Q10 -- Controlla --> CMD10["getfacl /percorso/file"]
Q10 -- ACL nega --> FIX_ACL["Modifica o rimuovi ACL:\nsetfacl -m u:tuoutente:rw /percorso\nsetfacl -b /percorso"]
Q10 -- No ACL --> FIX_NAMESPACE["Caso raro: namespace o container\ncontrolla con:\ncat /proc/1/cgroup"]
SOL_OK(["✅ Accesso concesso"])
FIX_SEL --> SOL_OK
FIX_AA --> SOL_OK
FIX_MOUNT --> SOL_OK
FIX_IMMUTABLE --> SOL_OK
FIX_APPEND --> SOL_OK
FIX_ACL --> SOL_OK
style START fill:#2980b9,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_SEL fill:#f39c12,color:#fff
style FIX_AA fill:#f39c12,color:#fff
style FIX_MOUNT fill:#27ae60,color:#fff
style FIX_IMMUTABLE fill:#27ae60,color:#fff
style FIX_APPEND fill:#27ae60,color:#fff
style FIX_ACL fill:#27ae60,color:#fff
style FIX_NAMESPACE fill:#8e44ad,color:#fffDiagramma 8 — Applicazione che crasha
flowchart TD
START([🔴 Applicazione\ncrasha o non si avvia])
START --> Q1{L'app\nproduce\nun messaggio?}
Q1 -- Controlla --> CMD1["Avvia da terminale:\nnome-applicazione 2>&1\njournalctl _EXE=/percorso/app -n 50"]
Q1 -- No output --> Q2{L'app\nsi avvia\nalmeno?}
Q2 -- No --> Q2A{Il binario\nesiste ed\nè eseguibile?}
Q2A -- Controlla --> CMD2A["which nome-app\nls -la /percorso/app\nfile /percorso/app"]
Q2A -- No --> FIX_NOTFOUND["Reinstalla:\napt install --reinstall nome-app"]
Q2A -- Sì --> Q2B{Le librerie\ndipendenti\nsono presenti?}
Q2B -- Controlla --> CMD2B["ldd /percorso/app\nldd /percorso/app | grep 'not found'"]
Q2B -- Mancano .so --> FIX_LIB["Installa le librerie mancanti:\napt search libname\napt install libname-dev\nO: ldconfig -v per ricaricare la cache"]
Q2B -- Ok --> Q2C{Errore\narchitettura?}
Q2C -- Controlla --> CMD2C["file /percorso/app\nuname -m"]
Q2C -- 32bit su 64bit --> FIX_ARCH["Abilita multiarch:\ndpkg --add-architecture i386\napt update\napt install libc6:i386"]
Q1 -- Sì, ha output --> Q3{Tipo di errore?}
Q3 -- "Segmentation fault" --> Q4{Core dump\ndisponibile?}
Q4 -- Controlla --> CMD4["coredumpctl list\nulimit -c"]
Q4 -- Sì --> FIX_GDB["Analizza con gdb:\ncoredumpctl debug PID\n(dentro gdb): bt\n(dentro gdb): bt full"]
Q4 -- No --> FIX_STRACE["Traccia con strace:\nstrace nome-app 2>&1 | tail -20\nCercare l'ultima syscall prima del crash"]
Q3 -- "Permission denied" --> D7[Vai a:\nDiagramma 7\nPermessi]
Q3 -- "Cannot connect to display" --> Q5{Server\ngrafico\nattivo?}
Q5 -- Controlla --> CMD5["echo $DISPLAY\necho $WAYLAND_DISPLAY\nxdpyinfo 2>&1"]
Q5 -- No display --> FIX_DISPLAY["Esporta variabile:\nexport DISPLAY=:0\nO avvia come utente grafico:\nxhost +local:\nsu -c 'nome-app' utente-gui"]
Q5 -- Sì --> FIX_XAUTH["Problema xauth:\nxauth list\nxauth add\nO: sudo -E nome-app (mantieni env)"]
Q3 -- "Out of memory" --> FIX_OOM2["OOM: sistema ha poco RAM\nfree -h\nAggiungi swap o chiudi altre app"]
Q3 -- "File not found" --> Q6{Quale file\nè mancante?}
Q6 -- Config file --> FIX_CONFIG["Crea/copia il config:\ncp /etc/app/app.conf.default /etc/app/app.conf\nO reinstalla: apt install --reinstall app"]
Q6 -- Socket/pipe --> FIX_SOCKET["Il servizio dipendente\nnon è avviato:\nsystemctl start servizio-dipendente"]
Q6 -- File dati --> FIX_DATA["Il file dati è mancante:\ncontrolla permessi e mount point"]
Q3 -- Errore Python/Node/etc --> Q7{Errore\nnell'interprete?}
Q7 -- ModuleNotFound --> FIX_MOD["Installa il modulo:\npip install nome-modulo\nnpm install nome-modulo\nO usa virtualenv/nvm"]
Q7 -- Version mismatch --> FIX_VER["Versione interprete errata:\npython3 --version\nnode --version\nUsa pyenv/nvm per gestire versioni"]
Q3 -- Crash silenzioso --> Q8["Abilita debug logging:\nDEBUG=* nome-app\nVERBOSE=1 nome-app\nO: LIBGL_DEBUG=verbose nome-app"]
SOL_OK([✅ Problema identificato\ne risolto])
FIX_NOTFOUND --> SOL_OK
FIX_LIB --> SOL_OK
FIX_ARCH --> SOL_OK
FIX_GDB --> SOL_OK
FIX_DISPLAY --> SOL_OK
FIX_CONFIG --> SOL_OK
FIX_MOD --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_NOTFOUND fill:#f39c12,color:#fff
style FIX_LIB fill:#f39c12,color:#fff
style FIX_ARCH fill:#f39c12,color:#fff
style FIX_GDB fill:#8e44ad,color:#fff
style FIX_STRACE fill:#8e44ad,color:#fff
style FIX_DISPLAY fill:#27ae60,color:#fff
style FIX_XAUTH fill:#f39c12,color:#fff
style FIX_OOM2 fill:#e74c3c,color:#fff
style FIX_CONFIG fill:#27ae60,color:#fff
style FIX_SOCKET fill:#27ae60,color:#fff
style FIX_DATA fill:#f39c12,color:#fff
style FIX_MOD fill:#27ae60,color:#fff
style FIX_VER fill:#f39c12,color:#fff
style D7 fill:#2980b9,color:#fffDiagramma 9 — SSH non funziona
flowchart TD
START([🔴 SSH non funziona])
START --> Q1{Sei il client\nche non riesce\na connettersi?}
Q1 -- Sì, client --> Q2{Messaggio\ndi errore?}
Q2 -- "Connection refused" --> Q3{Il server\nSSH è attivo\nsull'host remoto?}
Q3 -- Controlla --> CMD3["ss -tulpn | grep :22\nsystemctl status sshd"]
Q3 -- No --> FIX_START["Avvia sshd:\nsystemctl start sshd\nsystemctl enable sshd"]
Q3 -- Sì --> Q3B{Porta\ncorretta?}
Q3B -- Controlla --> CMD3B["grep Port /etc/ssh/sshd_config"]
Q3B -- Porta diversa --> FIX_PORT["Usa la porta corretta:\nssh -p 2222 utente@host"]
Q3B -- Ok --> FIX_FW3["Firewall blocca:\nufw allow ssh\nfirewall-cmd --add-service=ssh"]
Q2 -- "Permission denied\n(publickey)" --> Q4{Stai usando\nla chiave\ncorretta?}
Q4 -- Controlla --> CMD4["ssh -vvv utente@host 2>&1 | grep 'Trying key'\nls -la ~/.ssh/"]
Q4 -- Chiave sbagliata --> FIX_KEY["Specifica la chiave:\nssh -i ~/.ssh/chiave utente@host\nO aggiungi a ~/.ssh/config"]
Q4 -- Chiave ok --> Q4A{I permessi\ndei file SSH\nsono corretti?}
Q4A -- Controlla --> CMD4A["ls -la ~/.ssh/\nls -la ~/.ssh/authorized_keys"]
Q4A -- No --> FIX_SSHPERM["Correggi permessi:\nchmod 700 ~/.ssh\nchmod 600 ~/.ssh/authorized_keys\nchmod 600 ~/.ssh/id_*\nchmod 644 ~/.ssh/*.pub"]
Q4A -- Sì --> Q4B{La chiave\npubblica è in\nauthorized_keys?}
Q4B -- No --> FIX_AUTHKEYS["Aggiungi la chiave:\nssh-copy-id -i ~/.ssh/chiave.pub utente@host\nO manualmente:\ncat ~/.ssh/chiave.pub | ssh utente@host 'cat >> ~/.ssh/authorized_keys'"]
Q4B -- Sì --> Q4C{Il server\naccetta\npublic key?}
Q4C -- Controlla --> CMD4C["grep PubkeyAuthentication /etc/ssh/sshd_config\ngrep AuthorizedKeysFile /etc/ssh/sshd_config"]
Q4C -- Disabilitato --> FIX_PUBKEY["Abilita nel server:\nPubkeyAuthentication yes\nAuthorizedKeysFile .ssh/authorized_keys\nsystemctl reload sshd"]
Q2 -- "Host key verification\nfailed" --> FIX_HOSTKEY["Rimuovi la vecchia chiave:\nssh-keygen -R hostname\nO rimuovi la riga dal known_hosts"]
Q2 -- "Network unreachable"\no timeout --> D3B[Problema di rete:\nGo to Diagramma 3]
Q2 -- "Too many auth failures" --> FIX_TOOMANY["Troppi tentativi con chiavi:\nssh -o IdentitiesOnly=yes -i ~/.ssh/chiave utente@host"]
Q2 -- Connessione lenta\nall'avvio --> Q5{DNS reverse\nlento?}
Q5 -- Controlla --> CMD5["ssh -v utente@host 2>&1 | grep 'Authentications'"]
Q5 -- Sì --> FIX_NODNS["Nel server /etc/ssh/sshd_config:\nUseDNS no\nGSSAPIAuthentication no\nsystemctl reload sshd"]
Q2 -- Connessione che\ncade dopo X minuti --> FIX_KEEPALIVE["In ~/.ssh/config:\nServerAliveInterval 60\nServerAliveCountMax 3\nO nel server sshd_config:\nClientAliveInterval 60\nClientAliveCountMax 3"]
Q1 -- No, problema sul server --> Q6{Il daemon\nsshd ha\nerrori?}
Q6 -- Controlla --> CMD6["journalctl -u sshd -n 50\ngrep -i error /var/log/auth.log"]
Q6 -- Sì --> Q6A{Tipo di errore?}
Q6A -- "Failed to start" --> FIX_SSHD_START["Controlla config:\nsshd -t\nE correggi /etc/ssh/sshd_config"]
Q6A -- "Could not load host key" --> FIX_HOSTKEY2["Rigenera le host key:\nssh-keygen -A\no: dpkg-reconfigure openssh-server"]
Q6A -- "Address already in use" --> FIX_PORTUSED["Porta 22 già occupata:\nss -tulpn | grep :22\nfuser 22/tcp\nkill PID-occupante"]
SOL_OK([✅ SSH funzionante])
FIX_START --> SOL_OK
FIX_PORT --> SOL_OK
FIX_FW3 --> SOL_OK
FIX_KEY --> SOL_OK
FIX_SSHPERM --> SOL_OK
FIX_AUTHKEYS --> SOL_OK
FIX_PUBKEY --> SOL_OK
FIX_HOSTKEY --> SOL_OK
FIX_NODNS --> SOL_OK
FIX_KEEPALIVE --> SOL_OK
FIX_SSHD_START --> SOL_OK
FIX_HOSTKEY2 --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_START fill:#27ae60,color:#fff
style FIX_PORT fill:#27ae60,color:#fff
style FIX_FW3 fill:#27ae60,color:#fff
style FIX_KEY fill:#27ae60,color:#fff
style FIX_SSHPERM fill:#27ae60,color:#fff
style FIX_AUTHKEYS fill:#27ae60,color:#fff
style FIX_PUBKEY fill:#27ae60,color:#fff
style FIX_HOSTKEY fill:#27ae60,color:#fff
style FIX_TOOMANY fill:#f39c12,color:#fff
style FIX_NODNS fill:#27ae60,color:#fff
style FIX_KEEPALIVE fill:#27ae60,color:#fff
style FIX_SSHD_START fill:#f39c12,color:#fff
style FIX_HOSTKEY2 fill:#f39c12,color:#fff
style FIX_PORTUSED fill:#f39c12,color:#fff
style D3B fill:#2980b9,color:#fffDiagramma 10 — Problemi GPU e grafica
Parti da 10A per identificare il sintomo, poi vai alla sezione specifica: 10B (driver NVIDIA), 10C (driver AMD/Intel) o 10D (temperatura, artefatti, Wayland/X11).
Diagramma 10A — Triage iniziale
flowchart TD
START([🔴 Problemi GPU\no schermo])
START --> Q1{Qual e\nil sintomo?}
Q1 -- Schermo nero al boot --> Q2{GRUB appare\ncorrettamente?}
Q2 -- Si --> Q2A{Problema inizia\ncon il kernel?}
Q2A -- Si --> FIX_NOMODESET["Aggiungi nomodeset ai\nparametri del kernel in GRUB\ntasto e sul menu"]
Q2A -- No --> Q2B{Display Manager\nfallisce?}
Q2B -- Controlla --> CMD2B["systemctl status gdm\nsystemctl status sddm\njournalctl -u gdm -n 30"]
Q2B -- Si --> Q2C["Entra su TTY con Ctrl+Alt+F2\nRiavvia DM:\nsystemctl restart gdm"]
Q2 -- No --> D2B[Vai a:\nDiagramma 2\nBoot]
Q1 -- Driver non funziona, NVIDIA --> NEXT10B([Vai a\nDiagramma 10B])
Q1 -- Driver non funziona, AMD o Intel --> NEXT10C([Vai a\nDiagramma 10C])
Q1 -- Artefatti, temperatura\no Wayland/X11 --> NEXT10D([Vai a\nDiagramma 10D])
SOL_OK(["✅ Grafica funzionante"])
FIX_NOMODESET --> SOL_OK
Q2C --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style NEXT10B fill:#2980b9,color:#fff
style NEXT10C fill:#2980b9,color:#fff
style NEXT10D fill:#2980b9,color:#fff
style FIX_NOMODESET fill:#27ae60,color:#fff
style D2B fill:#2980b9,color:#fffDiagramma 10B — Driver NVIDIA
flowchart TD
START([Da Diagramma 10A:\nGPU NVIDIA])
START --> Q3A{Driver NVIDIA\ninstallato?}
Q3A -- Controlla --> CMD3A["nvidia-smi\nlsmod | grep nvidia\ndmesg | grep -i nvidia"]
Q3A -- No --> FIX_NV_INST["Ubuntu:\nubuntu-drivers autoinstall\nFedora:\ndnf install akmod-nvidia\nArch:\npacman -S nvidia"]
Q3A -- Installato ma non carica --> Q3B{Secure Boot\nattivo?}
Q3B -- Controlla --> CMD3B["mokutil --sb-state"]
Q3B -- Si --> FIX_SECBOOT["Firma il modulo o\ndisabilita Secure Boot\nnel BIOS o UEFI"]
Q3B -- No --> Q3C{Conflitto\ncon nouveau?}
Q3C -- Controlla --> CMD3C["lsmod | grep nouveau"]
Q3C -- Si --> FIX_NOUVEAU["Blacklist nouveau:\necho blacklist nouveau >> /etc/modprobe.d/blacklist.conf\nupdate-initramfs -u\nreboot"]
SOL_OK(["✅ Grafica funzionante"])
FIX_NV_INST --> SOL_OK
FIX_SECBOOT --> SOL_OK
FIX_NOUVEAU --> SOL_OK
style START fill:#2980b9,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_NV_INST fill:#f39c12,color:#fff
style FIX_SECBOOT fill:#f39c12,color:#fff
style FIX_NOUVEAU fill:#f39c12,color:#fffDiagramma 10C — Driver AMD e Intel
flowchart TD
START([Da Diagramma 10A:\nGPU AMD o Intel])
START --> Q3{Quale GPU?}
Q3 -- AMD --> Q3D{Driver amdgpu\no radeon?}
Q3D -- Controlla --> CMD3D["lsmod | grep amdgpu\nlsmod | grep radeon\ndmesg | grep -i amd"]
Q3D -- radeon su GPU nuova --> FIX_AMDGPU["Forza amdgpu aggiungendo\nal kernel:\namdgpu.si_support=1\namdgpu.cik_support=1"]
Q3D -- nessuno --> FIX_AMD_FW["Installa firmware AMD:\napt install firmware-amd-graphics\ndnf install linux-firmware"]
Q3 -- Intel --> Q3E{Driver i915\ncaricato?}
Q3E -- Controlla --> CMD3E["lsmod | grep i915\ndmesg | grep i915"]
Q3E -- No --> FIX_I915["Installa:\napt install xserver-xorg-video-intel\napt install intel-microcode"]
SOL_OK(["✅ Grafica funzionante"])
FIX_AMDGPU --> SOL_OK
FIX_AMD_FW --> SOL_OK
FIX_I915 --> SOL_OK
style START fill:#2980b9,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_AMDGPU fill:#27ae60,color:#fff
style FIX_AMD_FW fill:#f39c12,color:#fff
style FIX_I915 fill:#f39c12,color:#fffDiagramma 10D — Temperatura, artefatti e Wayland/X11
flowchart TD
START([Da Diagramma 10A:\nartefatti, temperatura\no Wayland/X11])
START --> Q4{Problema\ndi temperatura?}
Q4 -- Controlla --> CMD4["sensors\nnvidia-smi -q | grep Temp\ncat /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input"]
Q4 -- Si surriscaldamento --> FIX_TEMP["Pulisci il dissipatore GPU\nControlla pasta termica\nAbbassa overclock"]
Q4 -- No --> Q4A{Driver aggiornato\ndi recente?}
Q4A -- Si --> FIX_DRV_BACK["Torna al driver precedente:\napt install nvidia-driver-525\no rimuovi e reinstalla"]
Q4A -- No --> FIX_VRAM["Possibile VRAM difettosa\no GPU guasta:\nstressa con glmark2 o furmark"]
Q4 -- Non e temperatura --> Q5{Errore nei log\ndi Wayland o X11?}
Q5 -- Controlla --> CMD5["journalctl -b | grep -i error\ncat /var/log/Xorg.0.log | grep EE"]
Q5 -- No screens found --> FIX_SCREENS["Nessun monitor rilevato:\ncontrolla cavo e connettore\nxrandr --auto"]
Q5 -- Failed to load module --> FIX_XMODULE["Modulo X mancante:\napt install xserver-xorg-video-nome"]
Q5 -- Wayland crash --> FIX_WAYLAND["Passa a X11 temporaneamente:\nmodifica /etc/gdm3/custom.conf\nWaylandEnable=false"]
SOL_OK(["✅ Grafica funzionante"])
FIX_TEMP --> SOL_OK
FIX_DRV_BACK --> SOL_OK
FIX_SCREENS --> SOL_OK
FIX_XMODULE --> SOL_OK
FIX_WAYLAND --> SOL_OK
style START fill:#2980b9,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_TEMP fill:#e74c3c,color:#fff
style FIX_DRV_BACK fill:#f39c12,color:#fff
style FIX_VRAM fill:#e74c3c,color:#fff
style FIX_SCREENS fill:#f39c12,color:#fff
style FIX_XMODULE fill:#f39c12,color:#fff
style FIX_WAYLAND fill:#27ae60,color:#fffDiagramma 11 — Pacchetti e dipendenze rotte
flowchart TD
START([🔴 Pacchetti rotti\no dipendenze mancanti])
START --> Q1{Quale\ngestore pacchetti\nusi?}
Q1 -- APT / Debian / Ubuntu --> Q2{Tipo\ndi errore?}
Q2 -- "dpkg: error processing" --> FIX_DPKG["Forza configurazione:\ndpkg --configure -a\napt --fix-broken install\napt -f install"]
Q2 -- "Unmet dependencies" --> Q2A{Il pacchetto\nè nella\ncorretta repo?}
Q2A -- Controlla --> CMD2A["apt-cache policy nome-pacchetto\ncat /etc/apt/sources.list"]
Q2A -- Repo mancante --> FIX_REPO["Aggiungi la repo:\nadd-apt-repository ppa:...\napt update"]
Q2A -- Ok --> FIX_DEP["Installa dipendenze manualmente:\napt install dipendenza1 dipendenza2\napt --fix-broken install"]
Q2 -- "Package ... is not available" --> Q2B{La lista\npacchetti è\naggiornata?}
Q2B -- No --> FIX_UPDATE["apt update\napt upgrade"]
Q2B -- Sì --> FIX_NOTFOUND2["Pacchetto non trovato:\napt-cache search parola-chiave\nO il nome è cambiato"]
Q2 -- "Hash Sum mismatch" --> FIX_HASH["Cache corrotta:\napt clean\napt update --fix-missing\nO cambia mirror in sources.list"]
Q2 -- "Could not get lock\n/var/lib/dpkg/lock" --> FIX_LOCK["Processo apt in esecuzione:\nps aux | grep apt\nKillalo o attendi\nSe nessuno: rm /var/lib/dpkg/lock*\ndpkg --configure -a"]
Q2 -- "Sub-process\npost-installation" --> Q2C{Script\npost-install\nfallisce?}
Q2C -- Sì --> FIX_POSTINST["Forza riconfigurazione:\ndpkg --configure -a\nO rimuovi e reinstalla:\napt purge nome\napt install nome"]
Q1 -- DNF / Fedora / RHEL --> Q3{Tipo\ndi errore?}
Q3 -- "Error: nothing\nprovides..." --> FIX_DNF_DEP["Installa da repo aggiuntiva:\ndnf install epel-release\ndnf install rpmfusion-free-release\ndnf install pacchetto"]
Q3 -- "Transaction check error" --> FIX_DNF_TRANS["Risolvi conflitti:\ndnf distro-sync\ndnf clean all\ndnf update"]
Q3 -- "Failed to synchronize\ncache" --> FIX_DNF_CACHE["Cache e rete:\ndnf clean metadata\ndnf makecache\nControlla la rete"]
Q3 -- RPM database corrotto --> FIX_RPM_DB["Ripara DB:\nrpm --rebuilddb\nO:\nrm -rf /var/lib/rpm/__db.*\nrpm --rebuilddb"]
Q1 -- Pacman / Arch --> Q4{Tipo\ndi errore?}
Q4 -- "conflicting files" --> FIX_PACMAN_CONF["Forza installazione:\npacman -S --overwrite='*' nome\nO rimuovi il pacchetto conflitto prima"]
Q4 -- "invalid or corrupted\npackage" --> FIX_PACMAN_CORR["Cache corrotta:\npacman -Sc\npacman -Syu --noconfirm"]
Q4 -- "error while loading\nshared libraries" --> Q4A{La libreria\nesiste sul\nsistema?}
Q4A -- Controlla --> CMD4A["ldconfig -p | grep libnome\nfind /usr/lib -name 'libnome*'"]
Q4A -- No --> FIX_LD["Installa il pacchetto\nche contiene la libreria:\npacman -Ss libnome\napt search libnome"]
Q4A -- Sì ma non trovata --> FIX_LDCONFIG["Ricarica cache ldconfig:\nldconfig\nO aggiungi percorso:\necho '/usr/local/lib' >> /etc/ld.so.conf\nldconfig"]
SOL_OK([✅ Pacchetti funzionanti])
FIX_DPKG --> SOL_OK
FIX_DEP --> SOL_OK
FIX_UPDATE --> SOL_OK
FIX_HASH --> SOL_OK
FIX_LOCK --> SOL_OK
FIX_POSTINST --> SOL_OK
FIX_DNF_DEP --> SOL_OK
FIX_DNF_TRANS --> SOL_OK
FIX_RPM_DB --> SOL_OK
FIX_PACMAN_CONF --> SOL_OK
FIX_LD --> SOL_OK
FIX_LDCONFIG --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_DPKG fill:#27ae60,color:#fff
style FIX_REPO fill:#f39c12,color:#fff
style FIX_DEP fill:#27ae60,color:#fff
style FIX_UPDATE fill:#27ae60,color:#fff
style FIX_HASH fill:#f39c12,color:#fff
style FIX_LOCK fill:#f39c12,color:#fff
style FIX_POSTINST fill:#f39c12,color:#fff
style FIX_DNF_DEP fill:#f39c12,color:#fff
style FIX_DNF_TRANS fill:#f39c12,color:#fff
style FIX_DNF_CACHE fill:#f39c12,color:#fff
style FIX_RPM_DB fill:#f39c12,color:#fff
style FIX_PACMAN_CONF fill:#27ae60,color:#fff
style FIX_PACMAN_CORR fill:#f39c12,color:#fff
style FIX_LD fill:#27ae60,color:#fff
style FIX_LDCONFIG fill:#27ae60,color:#fffDiagramma 12 — Dispositivo USB/hardware non rilevato
flowchart TD
START([🔴 Dispositivo USB\no hardware non rilevato])
START --> CMD0["Inserisci il dispositivo e controlla:\ndmesg | tail -20\nlsusb\nlspci"]
CMD0 --> Q1{Il dispositivo\nappare in\nlsusb o lspci?}
Q1 -- No --> Q2{Il LED del\ndispositivo\nsi accende?}
Q2 -- No --> FIX_PHY["Problema fisico:\nProva un'altra porta USB\nProva un altro cavo\nProva il dispositivo su altro PC"]
Q2 -- Sì --> Q3{Porta USB\nalimentata\ncorrettamente?}
Q3 -- Controlla --> CMD3["dmesg | grep -i 'over-current\\|power'\ncat /sys/bus/usb/devices/*/power/level"]
Q3 -- Over-current --> FIX_PWR_USB["Porta USB in over-current:\nScollega tutti i dispositivi\nRiavvia il controller USB:\necho -n '0000:00:14.0' > /sys/bus/pci/drivers/xhci_hcd/unbind\necho -n '0000:00:14.0' > /sys/bus/pci/drivers/xhci_hcd/bind"]
Q3 -- Ok --> FIX_ENUMERATE["Il dispositivo non si enumera:\ndmesg | grep 'device not accepting'\nProva con hub alimentato esterno"]
Q1 -- Sì --> Q4{Il kernel\nha riconosciuto\nil tipo di dispositivo?}
Q4 -- Controlla --> CMD4["dmesg | grep -i 'new.*device\\|vendor\\|product'\nudevadm info -a -n /dev/bus/usb/..."]
Q4 -- Sì --> Q5{Il driver\ncorretto è\ncaricato?}
Q5 -- Controlla --> CMD5["lsusb -v -d VendorID:ProductID | grep bInterfaceClass\nlsmod | grep -E 'usb|hid|cdc|acm'\ndmesg | grep driver"]
Q5 -- No driver --> Q5A{Il driver esiste\nnel kernel ma\nnon è caricato?}
Q5A -- Controlla --> CMD5A["modinfo nome-driver\nfind /lib/modules/$(uname -r) -name '*.ko' | grep nome"]
Q5A -- Esiste --> FIX_MODPROBE["Carica il modulo:\nmodprobe nome-driver\nPer renderlo permanente:\necho 'nome-driver' >> /etc/modules"]
Q5A -- Non esiste --> Q5B{C'è firmware\nnecessario?}
Q5B -- Controlla --> CMD5B["dmesg | grep -i 'firmware\\|failed to load'"]
Q5B -- Manca firmware --> FIX_FW["Installa firmware:\napt install linux-firmware\nO cerca il .fw specifico:\napt search firmware-nome"]
Q5B -- Ok --> FIX_NATIVESUP["Dispositivo non supportato\ndal kernel corrente:\nAggiorna il kernel:\napt install linux-image-generic\nO cerca driver out-of-tree"]
Q5 -- Driver caricato --> Q6{Il device node\nè stato creato\nin /dev ?}
Q6 -- Controlla --> CMD6["ls /dev/ | grep -E 'sd|tty|video|input|hidraw'\nudevadm monitor --udev"]
Q6 -- No --> FIX_UDEV["Regola udev mancante:\nudevadm test $(udevadm info -q path -n /dev/...)\nCrea regola in /etc/udev/rules.d/\nudevadm control --reload"]
Q6 -- Sì --> Q7{Il dispositivo\nè accessibile\ndall'utente?}
Q7 -- Controlla --> CMD7["ls -la /dev/nome-dispositivo\ngroups $(whoami)"]
Q7 -- No permessi --> FIX_GROUP["Aggiungi l'utente al gruppo:\nusermod -aG dialout $USER (seriale)\nusermod -aG plugdev $USER (USB)\nusermod -aG video $USER (webcam)\nnewgrp dialout (attiva subito)"]
Q7 -- Sì --> Q8{L'applicazione\nriesce ad\naprirlo?}
Q8 -- No --> FIX_APP["Problema nell'app:\nstrace -e trace=open,openat app 2>&1 | grep dispositivo\nO controlla i log dell'app"]
Q8 -- Sì --> SOL_OK
Q4 -- No --> FIX_QUIRKS["Dispositivo con quirks USB:\nAggiungi parametro al modulo:\necho 'options usbcore quirks=VID:PID:quirk' >> /etc/modprobe.d/usb.conf\nupdated-modules\nO aggiorna il kernel"]
SOL_OK([✅ Dispositivo funzionante])
FIX_MODPROBE --> SOL_OK
FIX_FW --> SOL_OK
FIX_UDEV --> SOL_OK
FIX_GROUP --> SOL_OK
style START fill:#c0392b,color:#fff
style SOL_OK fill:#27ae60,color:#fff
style FIX_PHY fill:#e74c3c,color:#fff
style FIX_PWR_USB fill:#e74c3c,color:#fff
style FIX_ENUMERATE fill:#f39c12,color:#fff
style FIX_MODPROBE fill:#27ae60,color:#fff
style FIX_FW fill:#f39c12,color:#fff
style FIX_NATIVESUP fill:#e74c3c,color:#fff
style FIX_UDEV fill:#f39c12,color:#fff
style FIX_GROUP fill:#27ae60,color:#fff
style FIX_APP fill:#f39c12,color:#fff
style FIX_QUIRKS fill:#8e44ad,color:#fffLegenda colori
| Colore | Significato |
|---|---|
| 🔴 Rosso scuro | Punto di partenza — il problema |
| 🟠 Arancione | Azione diagnostica o soluzione intermedia |
| 🟢 Verde | Soluzione definitiva o stato OK |
| 🔴 Rosso chiaro | Errore critico — richiede attenzione urgente |
| 🔵 Blu | Rimando a un altro diagramma |
| 🟣 Viola | Indagine avanzata o caso raro |
I comandi nei nodi sono volutamente compatti per la leggibilità del diagramma. Per la versione estesa di ogni comando con spiegazioni, consulta la guida principale al troubleshooting Linux.