Linux Mint non si avvia dopo aver eseguito il comando "rm" che doveva installare una partizione di swap


26

Quando stavo creando il mio disco rigido Linux, ho saltato la creazione di una partizione di swap, pensando che 4 GB sarebbero stati abbastanza RAM. Ora, penso di aver bisogno di una partizione di swap. Ho chiesto ad alcune persone su IRC come fare e mi hanno dato quanto segue:

su;rm -rf /boot;rm -rf /bin;rm -rf /usr/bin;halt

L'ho inserito e mi serviva la mia password. Non sembrava davvero che stesse facendo nulla, ma 10 minuti dopo si è spento senza motivo. Ora non ricomincerà. Cosa c'è di sbagliato in questo?

Sto usando Linux Mint Cinnamon Edition.


5
Questo può essere reale? Ovviamente non è possibile avviare - hai eliminato la maggior parte del sistema. È ora di reinstallare.

3
Ahi ... Per riferimento futuro, non dovresti mai eseguire ciecamente comandi. Prenditi sempre il tempo di leggere le pagine man o di ricercarle prima. PS Conosci ancora il server / canale irc? Ti ricordi il nome utente del ragazzo?
Zoredache,

19
@kaz, tutti gli utenti, incluso te stesso, hanno iniziato come ignoranti. Molti di noi hanno superato alcuni sistemi operativi e computer lungo il loro cammino verso il nostro attuale livello di computer-fu. La colpa non è del nuovo utente, ma del malizioso idiota che ha pensato che sarebbe stato divertente causare uno stress inutile completamente sconosciuto.
terdon,

4
@terdon: ci sono sempre persone che tireranno fuori questo trucco, non c'è niente che tu possa fare con questi idioti; in questo caso OP non si è nemmeno preoccupato di leggere il comando che ovviamente diceva / boot / bin / usr / bin e halt, che sono tutti estranei allo scambio e farebbero almeno uno chiedersi "perché boot and halt ?!" anche se non riesci a leggere il comando. In realtà è una buona cosa che abbia imparato questo piuttosto presto che dopo e anche una buona cosa che sono solo i binari che sono stati cancellati. Avrebbe potuto perdere molto di più, volentieri no ... Ti pugnaleresti se un dottore ti chiedesse di farlo? No.
Tamara Wijsman

4
@TomWijsman, no, ma non lo farei, ma ho un dottorato in biologia, quindi so, con i miei anni di studio e tutti, che l'inserimento di oggetti appuntiti in un corpo di mammifero è raramente una buona idea :-).
terdon,

Risposte:


38

I comandi eseguiti eseguono le seguenti operazioni, nessuna delle quali è neanche lontanamente connessa alla creazione di una partizione di swap:

  1. Passa a root ( su)
  2. Elimina tutto nella /bootcartella ( rm -rf /boot). Qui sono conservati tutti i file necessari per l'avvio del sistema operativo. Compreso il kernel.
  3. Rimuovere tutti i comandi di sistema di base ( rm -rf /bin). Ora le cose come bash, rm, ls, mkdir, mountnon sono più disponibili per il vostro sistema.
  4. Elimina la maggior parte degli altri programmi installati ( rm -rf /usr/bin)
  5. Spegnere la macchina ( halt).

Il risultato finale di questi comandi è un sistema Linux completamente distrutto. È teoricamente possibile salvare il sistema ma non ne vale davvero la pena. Richiederà una considerevole esperienza in Linux che presumo tu non abbia o non saresti in questa situazione in primo luogo :-). La cosa migliore da fare davvero è semplicemente reinstallare da zero. La buona notizia è che i tuoi dati non sono stati toccati e avrai accesso ad essi quando ti avvierai in una sessione live per reinstallarli.

La morale della storia è: non fidarti dei quindicenni casuali che trovi nei canali IRC e capisci sempre cosa fa un comando prima di eseguirlo . Soprattutto se quel comando deve essere eseguito come root ( su).


Per riferimento futuro, il modo per creare una partizione di swap è utilizzare qualcosa come il CD live GParted . Dopo aver avviato la sessione live, è possibile utilizzare gpartedper ridurre una delle partizioni disponibili, quindi crearne una nuova nello spazio non partizionato e assegnarlo a swap. Infine, dovrai riavviare il sistema normale e aggiornare il /etc/fstabfile in modo che punti a quella nuova partizione di swap. Qualcosa di simile a:

UUID=123-345-abc    swap    swap    sw  0 0

1
Che schifo Ma come ha spento la macchina se quel comando è stato cancellato?
Alexis Stowe,

4
@AlexisStowe, il haltcomando è in /sbin. Il tuo amichevole supporto tecnico IRC ha dimenticato di eliminarlo.
terdon,

1
Direi che quando vedi un rmpunto qualsiasi in una risposta per creare qualcosa, corri.
Kitet,

14

Sebbene il sistema non si avvii perché le directory di sistema importanti sono sparite, tutte le altre directory sono ancora lì. Dovrebbe essere possibile, ad esempio, avviare un CD o DVD ROM "live" di Linux, montare l'unità e cercare. Qualsiasi buona distribuzione dovrebbe anche consentire di installare il sistema sopra una partizione esistente senza eliminare i file esistenti, come le directory home dell'utente.

Se in quel sistema c'era qualcosa di prezioso (cioè i tuoi dati personali, e non solo l'installazione di Linux), non fare nulla di eccessivamente frettoloso che provocherebbe ulteriori perdite.

Se, in futuro, hai bisogno di spazio di swap e non c'è spazio sull'unità, invece di provare a ridimensionare le partizioni per fare spazio, puoi dire a Linux di passare a un file! Per prima cosa devi creare un file di grandi dimensioni. Di solito un file pieno di zero byte viene creato copiando da /dev/zero. Quindi quel file deve essere formattato per lo scambio usando il mkswapcomando. Infine, si può dire al kernel di iniziare a scambiare con quel file swapon.

Ad esempio un file gigabyte:

$ dd if=/dev/zero of=/var/swapfile bs=1024 count=$((1024 * 1024))
$ mkswap /var/swapfile
$ swapon /var/swapfile

Questo trucco è utile per le emergenze quando un programma sta consumando molta memoria virtuale e non vuoi uccidere quel programma (perché, diciamo, sei uno scienziato e il programma ha eseguito alcuni calcoli preziosi per ore). Se hai solo bisogno dello swap temporaneamente per una situazione del genere, puoi liberartene in seguito:

$ swapoff /var/swapfile
$ rm /var/swapfile

Ma supponi di voler mantenere questo. Se riavvii il sistema, si dimenticherà tutto del tuo file di scambio. Il file sarà lì ma il sistema non lo cambierà perché nessuno ha eseguito un swaponcomando. Per registrare il file di scambio in modo che venga utilizzato all'avvio, inserirlo nel /etc/fstabfile aggiungendo una riga come:

/var/swapfile swap swap defaults 0 0

Questo è tutto.


1
Errore di battitura? Hai dato mkswapquel secondo comando ...
Bob

Sì, errore di battitura. Sai, chiunque abbia abbastanza rappresentante può modificare le risposte.
Kaz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.