Linux Mint ne démarre pas après avoir exécuté la commande «rm» qui était censée configurer une partition de swap

26

Lorsque je créais mon disque dur Linux, j'ai sauté la création d'une partition de swap, pensant que 4 Go serait suffisant de RAM. Maintenant, je pense que j'ai besoin d'une partition de swap. J'ai demandé à certaines personnes sur IRC comment procéder, et elles m'ont donné ce qui suit:

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

Je l'ai entré et il avait besoin de mon mot de passe. Il ne semblait pas vraiment qu'il faisait quoi que ce soit, mais 10 minutes plus tard, il s'est simplement arrêté sans raison. Maintenant, ça ne recommencera pas. Quel est le problème avec ça?

J'utilise l'édition Linux Mint Cinnamon.

Alexis Stowe
la source
5
Cela peut-il être réel? Bien sûr, vous ne pouvez pas démarrer - vous avez supprimé la plupart du système. Il est temps de réinstaller.
3
Aïe ... Pour référence future, vous ne devriez jamais exécuter aveuglément des commandes. Prenez toujours le temps de lire les pages de manuel ou de les rechercher en premier. PS Connaissez-vous toujours le serveur / canal irc? Vous souvenez-vous du nom d'utilisateur du gars?
Zoredache
19
@kaz, tous les utilisateurs, y compris vous-même, ont commencé comme ignorants. La plupart d'entre nous ont fait fonctionner quelques systèmes d'exploitation et ordinateurs le long de leur chemin vers notre niveau actuel de fu informatique. Le blâme ne vient pas du nouvel utilisateur, mais de l'idiot malveillant qui a pensé qu'il serait amusant de causer un stress inutile à un parfait inconnu.
terdon
4
@terdon: Il y a toujours des gens qui réussiront cette astuce, il n'y a rien que vous puissiez faire contre ces idiots; dans ce cas, OP n'a même pas pris soin de lire la commande qui indiquait évidemment / boot / bin / usr / bin et halt, qui ne sont pas tous liés à l'échange et ferait au moins se demander "pourquoi boot et stop?!" même si vous ne pouvez pas lire la commande. C'est en fait une bonne chose qu'il ait appris cela plutôt tôt que tard et aussi une bonne chose que ce ne soient que des binaires qui ont été effacés. Il aurait pu perdre bien plus que ça, heureusement qu'il ne l'a pas fait ... Vous poignarderiez-vous si un médecin vous le demandait? Non.
Tamara Wijsman
4
@ TomWijsman, non, je ne le ferais pas, mais alors, j'ai un doctorat en biologie, donc je sais, avec mes années d'études et tout, qu'insérer des objets tranchants dans un corps de mammifère est rarement une bonne idée :-).
terdon

Réponses:

38

Les commandes que vous avez exécutées font les choses suivantes, dont aucune n'est même connectée à distance à la création d'une partition de swap:

  1. Passer à root ( su)
  2. Supprimez tout dans le /bootdossier ( rm -rf /boot). C'est là que tous les fichiers nécessaires au démarrage de votre système d'exploitation sont conservés. Y compris le noyau.
  3. Supprimez toutes les commandes système de base ( rm -rf /bin). Maintenant , les choses comme bash, rm, ls, mkdir, mountne sont plus disponibles à votre système.
  4. Supprimer la plupart des autres programmes installés ( rm -rf /usr/bin)
  5. Éteignez la machine ( halt).

Le résultat final de ces commandes est un système Linux complètement détruit. Il est théoriquement possible de sauver votre système, mais cela ne vaut vraiment pas la peine. Cela nécessitera une expertise Linux considérable que je suppose que vous n'avez pas ou que vous ne seriez pas dans cette situation en premier lieu :-). La meilleure chose à faire est de réinstaller simplement à partir de zéro. La bonne nouvelle est que vos données n'ont pas été touchées et que vous y aurez accès lorsque vous démarrerez une session en direct pour la réinstaller.

La morale de l'histoire est, ne vous fiez pas aux jeunes de 15 ans que vous trouvez au hasard dans les canaux IRC et comprenez toujours ce qu'une commande fait avant de l'exécuter . Surtout si cette commande doit être exécutée en tant que root ( su).


Pour référence future, la façon de créer une partition de swap est d'utiliser quelque chose comme un CD live GParted . Une fois que vous avez démarré dans la session en direct, vous pouvez utiliser gpartedpour réduire l'une de vos partitions disponibles, puis en créer une nouvelle dans l'espace non partitionné et l'attribuer à l'échange. Enfin, vous devrez redémarrer votre système normal et mettre à jour votre /etc/fstabfichier pour pointer vers cette nouvelle partition de swap. Quelque chose comme:

UUID=123-345-abc    swap    swap    sw  0 0
terdon
la source
1
Ça craint. Mais comment at-il arrêté la machine si cette commande était supprimée?
Alexis Stowe
4
@AlexisStowe, la haltcommande est entrée /sbin. Votre sympathique support technique IRC a oublié de supprimer celui-ci.
terdon
1
Je dirais que lorsque vous voyez rmn'importe où dans une réponse pour créer quelque chose - exécutez.
Kitet
14

Bien que votre système ne démarre pas car les répertoires système importants ont disparu, tous les autres répertoires sont toujours là. Il devrait être possible, par exemple, de démarrer un CD ou DVD ROM "live" Linux, de monter le lecteur et de fouiller. Toute bonne distribution devrait également vous permettre d'installer le système par-dessus une partition existante sans supprimer les fichiers existants, tels que les répertoires personnels des utilisateurs.

S'il y avait quoi que ce soit dans ce système qui soit précieux (c'est-à-dire vos données personnelles, et pas seulement l'installation Linux), ne faites rien de trop précipité qui entraînerait une perte supplémentaire.

Si, à l'avenir, vous avez besoin d'espace d'échange et qu'il n'y a pas d'espace sur le lecteur, au lieu d'essayer de redimensionner les partitions pour faire de la place, vous pouvez dire à Linux de passer à un fichier! Vous devez d'abord créer un gros fichier. Habituellement, un fichier plein de zéro octet est créé en copiant à partir de /dev/zero. Ensuite, ce fichier doit être formaté pour l'échange à l'aide de la mkswapcommande. Enfin, le noyau peut être invité à commencer à échanger vers ce fichier avec swapon.

Par exemple, un fichier gigaoctet:

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

Cette astuce est bonne pour les urgences lorsqu'un programme grignote beaucoup de mémoire virtuelle et que vous ne voulez pas tuer ce programme (parce que, disons, vous êtes un scientifique et le programme effectue des calculs précieux depuis des heures). Si vous avez juste besoin du swap temporairement pour une telle situation, vous pouvez ensuite vous en débarrasser par la suite:

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

Mais supposez que vous vouliez garder cela. Si vous redémarrez le système, il oubliera tout sur votre fichier d'échange. Le fichier sera là mais le système n'y échangera pas car personne n'a exécuté de swaponcommande. Pour enregistrer le fichier d'échange afin qu'il soit utilisé au démarrage, entrez-le dans le /etc/fstabfichier en ajoutant une ligne comme:

/var/swapfile swap swap defaults 0 0

C'est ça.

Kaz
la source
1
Faute de frappe? Vous mettez mkswapdans cette deuxième commande ...
Bob
Oui, faute de frappe. Vous savez, toute personne ayant suffisamment de représentants peut modifier les réponses.
Kaz