O Linux Mint não inicializa após executar o comando “rm” que deveria configurar uma partição de troca

26

Quando eu estava criando meu disco rígido Linux, pulei a criação de uma partição swap, pensando que 4 GB seriam RAM suficiente. Agora, acho que preciso de uma partição swap. Perguntei a algumas pessoas no IRC como fazer isso e elas me deram o seguinte:

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

Eu digitei isso e precisava da minha senha. Realmente não parecia estar fazendo nada, mas 10 minutos depois, simplesmente desligou sem motivo. Agora não começará novamente. O que há de errado nisso?

Estou usando a edição Linux Mint Cinnamon.

Alexis Stowe
fonte
5
Isso pode ser real? Claro que você não pode inicializar - você excluiu a maior parte do sistema. Hora de reinstalar.
3
Ouch ... Para referência futura, você nunca deve executar comandos às cegas. Sempre reserve um tempo para ler as páginas de manual ou pesquisá-las primeiro. PS Você ainda conhece o servidor / canal irc? Você se lembra do nome de usuário do cara?
Zoredache
19
@kaz, todos os usuários, incluindo você, começaram como ignorantes. A maioria de nós trabalhou com alguns sistemas operacionais e computadores ao longo do caminho para o nosso nível atual de computação. A culpa não é do novo usuário, mas do idiota malicioso que achou divertido causar um estresse desnecessário a um completo estranho.
terdon
4
@terdon: sempre há pessoas que fazem esse truque; não há nada que você possa fazer sobre esses idiotas; nesse caso, o OP nem se importou em ler o comando que obviamente dizia / boot / bin / usr / bin e halt, que não tem relação alguma com a troca e faria pelo menos se perguntar "por que inicializar e parar ?!" mesmo que você não consiga ler o comando. Na verdade, é bom que ele tenha aprendido isso mais cedo ou mais tarde e também que sejam apenas binários que foram limpos. Ele poderia ter perdido muito mais do que isso, felizmente não ... Você se esfaquearia se um médico lhe pedisse para fazer isso? Não
Tamara Wijsman
4
@ TomWijsman, não, eu não faria, mas tenho um PhD em Biologia, então eu sei, com meus anos de estudo e tudo mais, que inserir objetos pontiagudos no corpo de um mamífero raramente é uma boa idéia :-).
terdon

Respostas:

38

Os comandos que você executou fazem o seguinte, nenhum dos quais está conectado remotamente à criação de uma partição de swap:

  1. Mudar para root ( su)
  2. Exclua tudo da /bootpasta ( rm -rf /boot). É aqui que todos os arquivos necessários para inicializar seu sistema operacional são mantidos. Incluindo o kernel.
  3. Remova todos os comandos básicos do sistema ( rm -rf /bin). Agora coisas como bash, rm, ls, mkdir, mountnão está mais disponível para o seu sistema é.
  4. Exclua a maioria dos outros programas instalados ( rm -rf /usr/bin)
  5. Desligue a máquina ( halt).

O resultado final desses comandos é um sistema Linux completamente destruído. Teoricamente, é possível resgatar seu sistema, mas realmente não vale a pena. Isso exigirá uma considerável experiência em Linux, que eu assumirei que você não possui ou não estaria nessa situação em primeiro lugar :-). A melhor coisa a fazer é simplesmente reinstalar do zero. A boa notícia é que seus dados não foram tocados e você terá acesso a eles quando iniciar uma sessão ao vivo para reinstalar.

A moral da história é: não confie em pessoas aleatórias de 15 anos que você encontra nos canais de IRC e sempre entenda o que um comando faz antes de executá-lo . Especialmente se esse comando precisar ser executado como root ( su).


Para referência futura, a maneira de criar uma partição de troca é usar algo como o live CD do GParted . Depois de inicializar a sessão ao vivo, você pode usar gpartedpara reduzir uma de suas partições disponíveis, criar uma nova no espaço não particionado e atribuir essa troca. Por fim, você terá que reiniciar o sistema normal e atualizar seu /etc/fstabarquivo para apontar para a nova partição de troca. Algo como:

UUID=123-345-abc    swap    swap    sw  0 0
Terdon
fonte
1
Isso é péssimo. Mas como ele desligou a máquina se esse comando foi excluído?
Alexis Stowe
4
@AlexisStowe, o haltcomando está em /sbin. Seu amigável suporte técnico do IRC esqueceu de excluir esse.
terdon
1
Eu diria que quando você vê rmem qualquer lugar uma resposta para criar algo - corra.
Kitet
14

Embora seu sistema não inicialize porque os diretórios importantes do sistema se foram, todos os outros diretórios ainda estão lá. Deveria ser possível, por exemplo, inicializar um CD ou DVD ROM "Linux" ao vivo, montar a unidade e bisbilhotar. Qualquer boa distribuição também deve permitir que você instale o sistema sobre uma partição existente sem excluir os arquivos existentes, como diretórios pessoais do usuário.

Se houver algo valioso nesse sistema (ou seja, seus dados pessoais, e não apenas a instalação do Linux), não faça nada apressado que resultará em mais perdas.

Se, no futuro, você precisar trocar espaço e não houver espaço na unidade, em vez de tentar redimensionar partições para liberar espaço, você pode dizer ao Linux para trocar por um arquivo! Primeiro você precisa criar um arquivo grande. Geralmente, um arquivo cheio de zero bytes é criado copiando de /dev/zero. Em seguida, esse arquivo deve ser formatado para troca usando o mkswapcomando Finalmente, pode ser dito ao kernel para começar a trocar para esse arquivo swapon.

Por exemplo, um arquivo de gigabyte:

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

Esse truque é bom para emergências quando algum programa está consumindo muita memória virtual e você não deseja matá-lo (porque, digamos, você é um cientista e o programa realiza um cálculo valioso há horas). Se você precisar apenas da troca temporariamente para essa situação, poderá se livrar dela depois:

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

Mas suponha que você queira manter isso. Se você reiniciar o sistema, ele esquecerá tudo sobre o seu arquivo de troca. O arquivo estará lá, mas o sistema não será trocado porque ninguém executou um swaponcomando. Para gravar o arquivo de permuta para que ele seja usado na inicialização, insira-o no /etc/fstabarquivo adicionando uma linha como:

/var/swapfile swap swap defaults 0 0

É isso aí.

Kaz
fonte
1
Erro de digitação? Você colocar mkswapnesse segundo comando ...
Bob
Sim, erro de digitação. Você sabe, qualquer pessoa com representante suficiente pode editar as respostas.
Kaz