- Per ripristinare un sistema Linux danneggiato è fondamentale comprendere le directory critiche, GRUB, UEFI e systemd.
- Backup completi e snapshot con strumenti come TimeShift semplificano notevolmente il ripristino.
- Le modalità di salvataggio ed emergenza consentono di riparare gli errori di avvio senza reinstallare il sistema.
- Il recupero dei dati dipende dal file system: ext2/3/4 è il più comune in Linux.
Quando un sistema Linux non si avvia o si blocca dopo un aggiornamento, è normale farsi prendere dal panico. Tuttavia, con strumenti di ripristino adeguati e una buona strategia di backupÈ assolutamente possibile riportare in vita la macchina senza doverla reinstallare da zero.
Nel mondo Windows, ci sono molti percorsi ben battuti: la modalità provvisoria, il ripristino del sistema, gli strumenti di riparazione e, come ultima risorsa, la reinstallazione. Anche Linux offre un set di strumenti molto potente. Metodi per ripristinare il sistema, riparare il processo di avvio, utilizzare modalità di emergenza e recuperare i datiLa chiave è conoscerli in anticipo, in modo da non dover improvvisare quando si verifica un disastro.
Concetti di base del ripristino in Linux
Prima di entrare nei comandi, è importante chiarire cosa intendiamo con Ripristino del sistema LinuxNon parliamo sempre della stessa cosa: a volte si tratta semplicemente di riparare GRUB, altre volte di ripristinare un backup completo e in altri casi di recuperare dati da un disco danneggiato.
In generale, possiamo raggruppare gli scenari in tre blocchi principali: ripristino del sistema allo stato precedente utilizzando un backup completo, Riparare i problemi di avvio o del kernel da GRUB o UEFIe infine, il recupero dei dati quando il file system è danneggiato.
È importante anche distinguere tra strumenti che agiscono all'interno del sistema stesso (quando si avvia ancora in qualche modalità) e altri che utilizziamo da un ambiente esterno, come un Live CD/USB o una shell UEFI. Quanto più è scadente la macchina, tanto più dipendiamo da questi ambienti esterni.
Ecco perché è così consigliabile avere sempre un supporto di avvio di una distribuzione simile a quella che utilizziamo (ad esempio, una versione Live di Debian, Ubuntu, Linux Mint, ecc.), poiché rende le cose molto più semplici formattare, montare partizioni, ripristinare file e reinstallare il bootloader.
Ripristinare un sistema Linux completo da un backup
Uno dei metodi più affidabili per il ripristino da una "catastrofe" è quello di aver precedentemente creato un backup completo del sistema. Con quel backup, possiamo ripristinare il sistema allo stato precedente, con i suoi programmi, impostazioni e personalizzazionisenza doverlo reinstallare da zero.
Il processo per ripristinare un sistema da un backup basato su file (ad esempio, un archivio di sistema tar.bz2) può essere riassunto in pochi passaggi chiari: preparare la partizione, montarla, estrarre il backup, ricreare alcune directory escluse e rifare l'avvio con GRUB.
L'ideale sarebbe avviare il sistema da un Live CD/USB di una distribuzione simile all'originale (se il sistema era Debian, usa Debian Live, Linux Mint, Xubuntu, ecc.). Queste distribuzioni leggere sono perfette per sperimentare senza rallentamenti del sistema e consentono di lavorare comodamente con gli strumenti del disco.
Formattare e preparare la partizione di destinazione
Avviato il sistema dall'ambiente Live, il primo passo è pulire la partizione su cui ripristineremo il sistema. GParted è molto utile per questo scopo: è uno strumento grafico solitamente disponibile o installabile con un semplice comando. sudo apt installa gparted su Debian, Ubuntu o Linux Mint se abbiamo una connessione internet.
Da GParted possiamo eliminare la vecchia partizione, crearne una nuova e formattarla con il file system appropriato, solitamente ext4 per la partizione rootL'idea è che la destinazione del restauro sia completamente pulita e senza resti di installazioni precedenti.
Una volta formattata, è una buona idea prendere nota dell'identificatore della partizione (ad esempio /dev/sda1, /dev/sdb2ecc.), poiché ci servirà per l'assemblaggio e in seguito per installare GRUB sul disco corretto.
Se non vogliamo usare GParted, possiamo sempre ricorrere a strumenti da console come fdisk, parted o mkfs.ext4, ma per molti utenti l'interfaccia grafica rende questa soluzione più comoda. delicato lavoro di partizionamento e formattazione.
Montare la partizione in cui ripristineremo il sistema
Una volta formattata la partizione, il passo successivo è montarla in una directory del sistema Live in modo da potervi accedere. Il modo più semplice è montarla direttamente nella directory Live. / mntTuttavia, potremmo creare una sottodirectory specifica se vogliamo che sia più organizzata.
Ad esempio, potremmo fare qualcosa del genere:
sudo mkdir /mnt/sistema
Successivamente, controlliamo il nome della partizione di destinazione con:
sudo fdisk-l
E infine montiamo (supponendo che sia /dev/sda1):
sudo mount /dev/sda1 /mnt
Da questo momento in poi, tutto ciò che copiamo, creiamo o cancelliamo all'interno / mnt Verrà effettivamente applicato a quella partizione del disco, che sarà la futura radice del sistema una volta completato il ripristino.
Estrarre il backup nella nuova partizione
Il backup completo viene solitamente archiviato su un supporto esterno: una chiavetta USB, un disco rigido USB, un NAS, ecc. Supponiamo di avere una copia compressa su una chiavetta USB denominata USB32GB, all'interno della directory System_backup_06oct14, con un file Backup_di_sistema_06oct14.tar.bz2.
In questo scenario, sarebbe sufficiente eseguire un comando simile a:
sudo tar -xvpjf /media/USB32GB/System_backup_06oct14/System_backup_06oct14.tar.bz2 -C /mnt
Con quel comando, diciamo a tar di estrarre il file, mantenendo permessi, proprietari e struttura delle directory, lasciando il contenuto esattamente com'era quando abbiamo fatto la copia, ma ora si trova sulla partizione che abbiamo montato in / mnt.
A seconda delle dimensioni del backup e della velocità dell'hardware, questo processo può richiedere parecchio tempo. È normale dover essere pazienti. attendere il completamento del ripristino di tutti i file prima di procedere con i passaggi rimanenti.
Crea le directory di sistema che sono state escluse
Quando si creano backup completi del sistema, è prassi comune escludere alcune directory volatili o quelle di cui non ha senso eseguire il backup, come /proc, /tmp, /mnt, /media o alcuni log. Ciò significa che, una volta decompresso il backup, è consigliabile ricreare manualmente quelle directory vuote.
Un tipico esempio di comando per generarli potrebbe essere:
sudo mkdir /mnt/proc /mnt/mnt /mnt/media /mnt/tmp /mnt/var/log
Ogni utente dovrebbe adattare questo elenco a ciò che ha effettivamente omesso dalla copia originale. L'importante è che questi elementi siano presenti all'avvio del sistema. tutti i percorsi critici di cui il sistema operativo ha bisogno per funzionare correttamente.
Entrare in modalità chroot per operare come se fossimo all'interno del sistema
Uno dei grandi vantaggi di Linux è la possibilità di utilizzare chroot per "imprigionare" l'ambiente e far sì che il sistema consideri una directory come nuova radiceIn questo caso, vogliamo che /mnt diventi / dal punto di vista dei comandi che eseguiamo.
Prima di entrare in modalità chroot, è necessario montare alcuni pseudo-filesystem dal sistema live all'interno di /mnt, in modo che il sistema chrooted abbia accesso a /proc, /sys, /dev e altri dispositivi necessari:
sudo mount -t proc proc /mnt/proc/
sudo mount -t sysfs sys /mnt/sys/
sudo mount -o bind /dev /mnt/dev/
sudo mount -t devpts pts /mnt/dev/pts
Una volta impostato tutto questo, possiamo entrare nell'ambiente in gabbia:
sudo chroot /mnt /bin/bash
Da quel momento in poi, tutto su quel terminale funzionerà come se fossimo all'interno del sistema ripristinato. I percorsi vengono interpretati prendendo /mnt come vera radiceQuesto ci consente di lavorare comodamente: aggiornando GRUB, modificando le impostazioni, installando pacchetti, ecc.
Per comodità, possiamo anche modificare il prompt per chiarire che ci troviamo in chroot, ad esempio:
esporta PS1="(chroot) $PS1"
Installa e configura GRUB sul disco
A questo punto, il sistema è già stato ripristinato su disco, ma non si avvia ancora perché manca un bootloader funzionante. Dal chroot, la procedura normale è aggiornare il menu GRUB e quindi installarlo nell'MBR o nell'unità corrispondente.
Per prima cosa, aggiorniamo il menu di GRUB per rilevare i sistemi presenti sul disco e generare il relativo file di configurazione, solitamente con:
sudo update-grub
Successivamente installiamo GRUB sul disco appropriato (non sulla partizione, ma sul dispositivo disco, ad esempio) / dev / sda (per il primo album):
sudo grub-install /dev/sda
In questo modo, quando riavviamo e il sistema utilizza quel disco come dispositivo di avvio, GRUB dovrebbe caricare correttamente il suo menu e consentire l'avvio del sistema ripristinato. Si consiglia di controllare il BIOS/UEFI. È configurato per l'avvio dal disco in cui abbiamo installato GRUB.
Se riscontriamo problemi di autorizzazione in cartelle come /tmp che impediscono l'avvio dell'ambiente grafico, possiamo risolverli da una console di testo (Ctrl+Alt+F1) effettuando l'accesso con il nostro account utente e applicando qualcosa del tipo:
sudo chmod 777 /tmp
Questi dettagli dipendono molto da come è stato creato il backup, ma in genere sono facili da correggere una volta riavviato il sistema. Da quel momento in poi, possiamo riutilizzarlo normalmente e, se vogliamo, automatizzare nuovi backup periodici.
Strumenti di recupero specifici nelle distribuzioni Linux
Oltre all'approccio "manuale" di ripristino del tar, esistono strumenti e pacchetti progettati specificamente per Semplifica i backup e il ripristino dei sistemi LinuxUno dei più noti in ambito aziendale è Relax-and-Recover (ReaR), che consente di creare immagini di sistema personalizzate e supporti di ripristino.
Sui sistemi basati su Red Hat, ad esempio, potremmo installare ReaR insieme alle utilità necessarie per generare immagini ISO e boot loader utilizzando un comando come questo:
yum install rear genisoimage syslinux
ReaR è responsabile della preparazione di un ambiente di salvataggio in grado di ripristinare il server in caso di disastro, combinando script, configurazione del sistema e Strumenti di premasterizzazione come genisoimage, oltre al pacchetto syslinux che fornisce diversi bootloader.
Al di fuori del mondo aziendale, gli strumenti "macchina del tempo" sono molto diffusi anche sui desktop e sui personal computer, consentendo agli utenti di creare snapshot di sistema in base a una pianificazione e di ripristinarli con un paio di clic o comandi.
Directory e componenti critici per l'avvio
Per gestire senza problemi il ripristino del sistema, è essenziale sapere dove risiede ogni componente chiave del processo di avvio. In particolare, la directory /boot contiene gli elementi più importanti: immagini del kernel, initramfs, file GRUB, ecc.
All'interno di /boot troviamo spesso sottodirectory come /boot/grub/, dove sono archiviati i moduli del boot manager e i relativi file di configurazione, nonché le voci che determinano quale kernel verrà caricato dal sistema.
Sono presenti anche le immagini initrd o initramfs (/boot/initrd.img o initramfs con suffissi di versione diversi). Queste immagini contengono un piccolo file system nella RAM che viene utilizzato nelle prime fasi dell'avvio per caricare i moduli, rilevare i dischi e montare la radice reale.
Nei sistemi che utilizzano UEFI, il partizione EFI Normalmente è montato su / boot / efi e può essere condiviso tra diversi sistemi operativi. Memorizza i binari .efi che fungono da boot loader per Linux, Windows o altri sistemi.
Infine, nei sistemi classici con sysvinit c'era il file /etc/inittabdove sono stati definiti i runlevel e i comportamenti di avvio. Sebbene molte distribuzioni siano passate a systemd e utilizzino altri meccanismi, la comprensione di questi concetti (modalità monoutente, multiutente, ecc.) rimane molto utile per comprendere modalità di salvataggio ed emergenza.
Modalità di salvataggio ed emergenza con systemd e GRUB
Nei sistemi moderni basati su systemd, oltre al normale avvio, abbiamo obiettivi speciali progettati per il ripristino, come rescue.target e emergency.targetQueste modalità avviano il sistema con servizi minimi, consentendo riparazioni senza interferenze.
Quando il sistema visualizza ancora il menu di GRUB, possiamo usarlo per scegliere opzioni avanzate. Molte distribuzioni, come Ubuntu, offrono voci dirette per Opzioni avanzate con varianti “(modalità di ripristino)” per ogni kernel installato.
Da questo sottomenu è possibile caricare utility molto utili per la diagnosi e la riparazione: controllare le partizioni con fsck, provare a riparare pacchetti danneggiati con dpkg, aggiornare GRUB, attivare la rete o avviare una shell con privilegi di root.
Un'altra opzione è quella di utilizzare l'editor GRUB (premere E su una voce) per aggiungere parametri speciali alla fine della riga Linux, come systemd.unit=emergency.target o systemd.unit=rescue.targetIn questo modo, anche se non abbiamo una voce esplicita nel menu, possiamo forzare un avvio diretto in quelle modalità di emergenza.
Emergency.target avvia un ambiente molto elementare con solo una shell root e file system di sola lettura, ideale per Esaminare i registri, rimontare il sistema, correggere fstab o annullare le modifiche alla configurazione che hanno interrotto il normale avvio.
Utilizzo pratico della modalità di ripristino in distribuzioni come Ubuntu
Selezionando "Opzioni avanzate" da GRUB e poi una voce denominata "Modalità di ripristino", molte distribuzioni visualizzeranno un menu aggiuntivo con diverse utilità di ripristino. In Ubuntu, ad esempio, spesso si troveranno opzioni come:
- curriculum vitae: prova ad avviare di nuovo normalmente da quel kernel.
- cavedano: apre una shell con le istruzioni per spazio libero se lo spazio sul disco è esaurito.
- dpkg: ripara o rimuove i pacchetti danneggiati che potrebbero impedire il processo di avvio, prelevandoli dai repository se la rete è abilitata.
- fsck: esegue controlli del file system e delle partizioni per rilevare e correggere gli errori.
- larva: analizza e aggiorna il boot manager stesso.
- network: Abilita la rete, utile per installare o scaricare pacchetti di riparazione.
- radice: apre una shell come superutente dalla quale possiamo apportare modifiche approfondite alla configurazione.
- riepilogo del sistema: visualizza un riepilogo del sistema, della versione del kernel, dei dischi, ecc.
Questi strumenti, uniti ad una conoscenza di base di comandi come mount, fsck, systemctl, journalctl o nano/viConsentono di risolvere un gran numero di problemi senza dover reinstallare l'intero sistema da zero.
Utilizzo della shell GRUB e delle convenzioni di denominazione dei dischi
Nei guasti più gravi, il sistema potrebbe non avviarsi normalmente e potremmo essere in grado di interagire solo con un prompt GRUB, larva> (guscio normale) o salvataggio di grub> (modalità di recupero più limitata). Anche in questa situazione, abbiamo ancora margine di manovra.
Dal menu di GRUB, possiamo accedere alla sua riga di comando premendo il tasto C. Questo apre un ambiente in cui possiamo eseguire comandi specifici del bootloader, elencare i dischi, cercare i kernel, caricare i moduli e preparare un avvio manuale del sistema.
È importante notare che GRUB non assegna i nomi ai dischi e alle partizioni allo stesso modo di Linux. Mentre Linux usa /dev/sda, /dev/sdb, ecc. per i dischi e /dev/sda1, /dev/sda2… per le partizioni, GRUB usa una sintassi come (hd0,0), (hd0,1), (hd1,0), ecc.
In parole povere, possiamo associare /dev/sda a hd0, /dev/sdb a hd1 e così via. Quindi, per le partizioni, GRUB utilizza indici tra parentesi, con il disco e la partizione separati da virgole, il che è molto importante da tenere a mente quando si cerca di individuare il disco. /boot o la root dalla shell GRUB.
Con i comandi opportuni (ls, set, linux, initrd, boot, ecc.), una volta individuata la partizione dove si trovano il kernel e l'initramfs, è possibile effettuare l'avvio manuale e poi dal sistema ripristinare la normale configurazione di GRUB con i soliti strumenti.
Ripristino avanzato da UEFI Shell
Sulle macchine moderne con UEFI, a volte il problema non è Linux in sé, ma il perdita o danneggiamento della voce di avvio che punta al file .efi dal caricabatterie. In questi casi, potremmo vedere solo un prompt Shell> di tipo UEFI all'accensione del dispositivo.
Questa shell UEFI ha un suo modo di fare riferimento ai dispositivi. Non ci sono /dev/sda o hd0: all'avvio, di solito visualizza una "tabella di mappatura" in cui vediamo le unità contrassegnate come FS0, FS1, FS2…, che corrispondono a /dev/sda, /dev/sdb, ecc.
Per navigare in questi file system, vengono utilizzati percorsi con barre rovesciate (\) al posto di / e la tastiera è considerata in layout inglese, quindi La posizione di caratteri come due punti, barre, ecc. cambia rispetto alla tastiera spagnola..
Da questo ambiente, è possibile elencare i dispositivi, cambiare unità, accedere alla partizione EFI e individuare i file binari .efi del bootloader. Sono disponibili strumenti e comandi (e persino un editor chiamato edit) che consentono di modificare la configurazione di avvio, aggiungere o modificare voci e Riorientare il firmware al caricabatterie corretto.
Tuttavia, modificare il processo di avvio UEFI senza sapere esattamente cosa si sta facendo può lasciare il computer in condizioni peggiori di prima, quindi è meglio procedere con cautela e seguire la documentazione specifica (come il manuale ufficiale UEFI Shell) se non si ha esperienza precedente.
“Macchina del tempo” in Linux: snapshot con TimeShift
Chi proviene da Windows spesso non ha a disposizione qualcosa di simile a Ripristino configurazione di sistema o Time Machine di macOS. Linux offre soluzioni che svolgono una funzione molto simile e una delle più diffuse sui desktop basati su Debian/Ubuntu è TimeShift.
TimeShift consente di definire una posizione in cui vengono salvati gli snapshot (istantanee) del sistema e pianificare automaticamente la frequenza con cui verranno creati: ad esempio, ogni due settimane, conservando solo le ultime due per non riempire il disco.
Durante la configurazione iniziale, possiamo scegliere quali directory escludere dagli snapshot, in modo che il sistema si concentri sui file di sistema e di configurazione, senza duplicare i dati personali che stiamo già salvando con un altro strumento.
Una volta configurato, creare un "punto di ripristino" è semplice come aprire l'applicazione e premere il pulsante. creareIl programma si occuperà di generare lo snapshot e, una volta terminato, potremo vederlo elencato insieme al resto degli snapshot disponibili.
Anche il ripristino del sistema da uno di questi punti è molto semplice: selezioniamo lo snapshot e premiamo Ripristinare nell'interfaccia, oppure lavoriamo dal terminale eseguendo comandi come timeshift – elenco per visualizzare gli snapshot disponibili e timeshift –ripristina per riportare il sistema a uno stato precedente specifico.
Recupero dati nei sistemi Linux
A volte il problema principale non è il mancato avvio del sistema, ma piuttosto la perdita di file importanti a causa di cancellazioni accidentali o errori del file system. In questi casi, ci riferiamo correttamente a questo problema come... recupero dati su sistemi Linux, piuttosto che il ripristino del sistema operativo.
Linux può utilizzare diversi tipi di file system, anche se in pratica, negli ambienti desktop e server generici, predominano le seguenti famiglie: ext2, ext3 ed ext4Storicamente, diverse distribuzioni hanno optato per l'una o per l'altra opzione di default.
Ad esempio, Debian GNU/Linux e Slackware hanno fatto affidamento su ext2, mentre Red Hat, Fedora, Ubuntu e CentOS hanno utilizzato ext3 in molte versioni, e anche le versioni più recenti di distribuzioni come Arch, Ubuntu 9, Fedora 11, CentOS 6 e Debian 7 utilizzano ext3. Hanno adottato ext4 come file system di riferimento.
A seconda del file system e del modo in cui i dati sono andati persi (eliminazione logica, partizione danneggiata, disco con settori danneggiati, ecc.), utilizzeremo strumenti diversi: da fsck per riparare le strutture di base, a utilità di analisi forense e ripristino più avanzate, dando sempre priorità alla non scrittura sul disco interessato. massimizzare le possibilità di successo.
In scenari particolarmente critici che coinvolgono dati di alto valore, di solito è più prudente utilizzare servizi di recupero professionali che abbiano esperienza con i sistemi Linux e conoscano le specifiche di ciascuna distribuzione e file system.
Considerando l'intero insieme di tecniche e strumenti, è chiaro che Linux offre una gamma molto ampia di possibilità per evitare reinstallazioni traumatiche: dal ripristino di backup completi con tar o ReaR, all'utilizzo di comodi snapshot con TimeShift, all'affidamento alle modalità di salvataggio ed emergenza di systemd e GRUB, fino all'approfondimento in GRUB o UEFI Shell quando le cose si complicano, senza dimenticare che c'è sempre la possibilità di recuperare i dati nei file system ext2/3/4 quando il sistema non è più riparabile ma vogliamo comunque salvare informazioni importanti.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.