-->

Anuncio!

Recuperação do GNU/Linux em caso de desastre

Conheça os principais modos de prevenir problemas e recuperar um sistema GNU/Linux em caso de todo tipo de pane!

Este post tem por objetivo servir como norte para aqueles que estão enfrentando um problema de sistema e não sabem qual a possível solução.
Alguns pontos abordei o Fedora, outros o Debian; mas a lógica da recuperação é a mesma e na maioria dos casos, os comandos também, não importando a distro em uso. Comandos como "dd" ou "fsck" são "universais" e funcionam em Debian, Fedora, Arch, OpenSUSE, Gentoo e etc.

Portanto sinta-se livre e bem vindo pra ler, explorar e aproveitar essas dicas para ajudar a corrigir os problemas que possam estar te assolando!

Existe uma dezena de modos de recuperar um sistema operacional GNU/Linux em caso de pane, corrupção, desastre, erro por parte de um update, enfim, toda sorte de problemas que um usuário pode presenciar.

Antes de tudo, algo que deve ser observado: a arquitetura da máquina. Por exemplo, se você usa um GNU/Linux Fedora amd64, é imperativo que se use uma Live USB/DVD do Fedora amd64. Caso você use o Fedora i386, até conseguirá montar o sistema de arquivos e corrigir alguma coisa mas não conseguirá enjaular o sistema.

O enjaulamento é uma ação que faz com que alteremos a posição da raíz de
diretórios (/). Uma vez enjaulado, o diretório alvo passará a ser a raíz do
sistema. Com isso o Administrador estará operando dentro de uma área
isolada.

Nesse caso, apenas o Kernel e a Rede existentes fora da jaula serão mantidos. Ou seja, se a rede estava funcionando fora da jaula, continurá funcionando dentro dela e com mesmo endereço de IP.

O principal objetivo do enjaulamento é proteger o restante do sistema, uma vez que, a partir de agora, todas as ações realizadas serão repercutidas dentro da jaula. Outra coisa, o enjaulamento ressuscita um sistema cujo kernel quebrou, permitindo que você dê manutenção no kernel!

Exemplo: um "apt install" emitido dentro da jaula instalará algo dentro dela e
nada ocorrerá com o sistema principal existente fora dela.

O enjaulamento também te permite trabalhar com as ferramentas disponíveis no sistema a ser corrigido. Se por acaso você tiver um servidor LAMP já configurado e com ferramentas próprias e customizadas e esse sistema precisa de reparos, você poderá trabalhar com estas ferramentas estando no LiveUSB.

Métodos de Recuperação
Enjaulamento com LiveUSB em Rescue Mode

Algumas LiveUSB's possuem uma opção extra no momento do boot.
Vamos tratar do exemplo do Debian, porém ele se aplica a qualquer sistema que possua modo LiveUSB. (Não é o caso do DeepinOS por exemplo).
Caso você use um sistema que nativamente sua .ISO de instalação não permita LiveUSB para manutenção, utilize uma distro da mesma linhagem para isso. Por exemplo, caso você não tenha um pendrive do Ubuntu á mão, use um do Debian para fazer as correções. Caso não tenha do ArchLinux, o Manjaro pode te salvar 

Um exemplo bastante popular na comunidade é o do Debian, que durante o boot do LiveUSB, ao acessar o menu "Advanced Option" você terá a disposição o "Rescue Mode"; Nele você fará o enjaulamento do sistema de maneira mais simples e gráfica. Ao dar ENTER nessa opção, você responderá a perguntas semelhantes ás que são feitas durante a instalação do sistema e logo chegará ao modo de recuperação, onde lhe será perguntado qual é o dispositivo onde está os arquivos da raíz (/).

Entre as opções temos "/dev/sda1" e "não use um sistema de arquivos raíz"
Se escolher a primeira opção, você verá as opções:

- Executar um shell em /dev/sda1
Opção particularmente interessante porque permite enjaulamento instantâneo do shell do sistema alvo e permite manutenção por instalação de pacotes via apt ou .deb
- Executar um shell no ambiente do instalador
- Reinstalar o carregador de inicialização do GRUB
- Escolher um sistema de arquivos raíz diferente
- Reinicializar o sistema

Enjaulamento Manual - Parte 1 - Corrigir /dev 

Esse método é para corrigir discos e partições montando o diretório /dev.
Caso você não precise fazer isso, pule para a Parte 2 mais abaixo.

O enjaulamento exige os arquivos mínimos para que um sistema operacional funcione adequadamente. O enjaulamento exige diretórios essenciais como /etc, /bin, /sbin e o /lib.

Em algumas situações, como é o caso da reinstalação do GRUB, será necessário clonar o diretório /dev existente no sistema para dentro do diretório que será enjaulado.

Isso se faz necessário porque o diretório /dev é criado sempre que realizamos o boot do sistema. No caso de um enjaulamento, não haverá boot e, em consequência, não haverá um diretório /dev completo e atualizado. Apenas como exemplo, durante a recuperação do GRUB haverá a sua reinstalação no MBR do disco. Assim, considerando o HD alvo como sendo /sda, será necessário que o sistema enjaulado conheça o dispositivo /dev/sda. Esse dispositivo somente será conhecido na jaula se clonarmos o /dev existente no sistema que realizou boot (no caso o pendrive)

Para clonarmos o diretório /dev precisaremos realizar a seguinte sequência de ações:
- Boot pelo pendrive
- Montar, em /mnt, a partição a ser enjaulada.
- Clonar o /dev original dentro de /mnt/dev
Para tanto, execute:
# mount -o bind /dev /mnt/dev

A partir de agora, o conteúdo de /mnt/dev será o mesmo de /dev, um "espelho". O que ocorrer em /mnt/dev altera /dev.

ATENÇÃO: Não esqueça de desmontar o diretório /mnt/dev quando terminar de realizar as atividades desejadas.

Lembre-se: Para que uma partição seja enjaulada, precisa conter uma estrutura mínima de sistema operacional. Não é possível, por exemplo, enjaular uma partição de disco que só contenha o arquivo /home.

Enjaulamento Manual - Parte 2 - Enjaular! 

Uma vez montada em /mnt a partição que será enjaulada, proceda da seguinte forma para realizar o enjaulamento:

1) Utilize o comando chroot (change root) para trocar a posição da raíz do sistema criando a jaula. Para tanto:
# chroot /mnt

2) A seguir, já dentro da jaula, disponibilize o conteúdo dos diretórios /proc e /sys, essenciais para a jaula funcionar - e essenciais para qualquer sistema:
# mount -t proc proc /proc
# mount -t sysfs sys /sys

OBS: Essas ultimas montagens foram necessárias porque o conteúdo dos diretórios /proc e /sys é criado pelo sistema durante a inicialização; porém, não houve boot de sistema e sim enjaulamento, fazendo com que os citados diretórios estejam vazios dentro da jaula.

A partir daqui, realize suas tarefas/recuperações/correções!
É nessa hora que você pode dar apt/dnf/yum update/upgrade e outros comandos que possam ajuda-lo a corrigir seu sistema.

Também é agora que você pode substituir um kernel defeituoso por exemplo caso o seu seja o unico instalado e esteja corrompido.

Desenjaular

Desmonte as partições montadas:
# umount /sys
# umount /proc
Caso tenha clonado o diretório /dev:
# umount /dev
Saia:
# exit

GRUB Rescue para partições MBR!

Existe um caso um pouco mais raro mas não menos comum onde ocorre o erro GRUB RESCUE, apontando "filesystem desconhecido".
Para corrigi-lo, faça o que se pede no Terminal do Grub Rescue:

1- Localize a partição de boot: ls
(Exemplo, será algo como "hd1,msdos1" para o /dev/sda em MBR)
hd1 representa o disco
msdos1 representa a partição

Compare visualmente os dados:
echo $prefix
echo $root
Ambos devem mostrar o mesmo resultado, se possivel que ele seja o encontrado em "ls" acima!

Caso estejam diferentes, o mostrado em $prefix será nossa base correta; faça:

set root=(hd1,msdos1)
set prefix=(hd1,msdos1)/boot/grub
insmod normal
normal

Reinicie.
Se estiver tudo Ok, o sistema iniciará normalmente.
Se não, você pode ter se confundido com (hd1,msdos1); tente outro valor dentre os encontrados com o comando ls.

Recuperando o GRUB2 SEM enjaulamento

Não é raro ver seu gerenciador de boot corromper e o sistema não iniciar.
Isso se deve a uma série de fatores. Principalmente quem usa DualBoot o Windows pode ser bem chato e corromper a área de boot em que o Linux se encontra. Esse método não requer enjaulamento!
Para recupera-lo:

Primeiro determine onde exatamente está seu diretório raíz (/)
$ sudo fdisk -l
Provavelmente estará em /dev/sda1.
Se esse for o caso, faça:
$ sudo mount -t ext4 /dev/sda1 /mnt
OBS: Caso seu sistema de arquivos não seja EXT4, edite o comando.

Instale:
$ sudo grub-install --recheck --root-directory=/mnt /dev/sda
O comando --recheck recria o mapa de diretórios deixando tudo correto.
Já o --root-directory determina que o alvo da instalação será em /mnt

Se tudo correr bem, você verá a seguinte linha:
Instalattion finished. No error reported.

Recuperando o GRUB2 COM enjaulamento 

Para recuperar o GRUB2 utilizando a técnica de enjaulamento, a sequencia de comandos é:

Primeiro determine onde exatamente está seu diretório raíz (/)
$ sudo fdisk -l
Provavelmente estará em /dev/sda1.
Se esse for o caso, faça:
$ sudo mount -t ext4 /dev/sda1 /mnt

Então prossiga com estes comandos:
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo chroot /mnt
$ sudo grub-install /dev/sda
$ sudo grub-install --recheck /dev/sda
$ sudo update-grub2

Se tudo correr bem, você verá a seguinte linha:
Instalattion finished. No error reported.

Para desenjaular tudo isso:
$ sudo umount /mnt/sys
$ sudo umount /mnt/proc
$ sudo umount /mnt/dev/pts
$ sudo umount /mnt/dev
$ sudo umount /mnt

Recuperando a Senha de Usuário Root 
Um tipo de "pane" comum é quando o usuário se perde em suas milhares de senhas de contas virtuais afora e esquece a senha do usuário root!
Para redefini-la existem diversas maneiras.

ATENÇÃO: Não estranhe conseguir recuperar sua senha de usuário root sem saber a senha do mesmo. Via LiveUSB isso é possivel no que chamamos de "Quebra de Segurança Fisica" e ocorre com qualquer sistema operacional.

O computador sempre estará vulnerável a isso, se e somente se:
1- Os discos não estiverem criptografados.
Adicione criptografia aos discos com uma senha diferente da do usuário root e você terá um acesso mais restrito a seu conteúdo.

2- A BIOS estiver com permissão de boot por mídia removível (CD/DVD/Pendrive) e não houver uma senha de administrador ativa.
Adicione uma senha de administrador na configuração de sua BIOS.

3- Você pode se proteger ainda mais definindo uma senha de usuário Root para o acesso ao GRUB2. Mais abaixo no post você verá que um dos métodos consiste em editar um parâmetro no GRUB2 que nos leva direto ao Bash permitindo editar a senha de Root.
Mais detalhes sobre o complexo sistema de edição do GRUB2, vá:

Ubuntu:
https://help.ubuntu.com/community/Grub2/Passwords

RHEL, CentOS e Fedora:
https://www.tecmint.com/password-protect-grub-in-linux/

Modo 1: Alterando o arquivo de senhas!

Essa é uma das opções mais simples de recuperação da senha de root.
Primeiramente dê boot com o pendrive em LiveUSB.
Monte em /mnt o diretório que contem a pasta /etc. Exemplo:
$ sudo mount /dev/sda1 /mnt

Com o comando:
$ sudo nano /mnt/etc/shadow
Edite o arquivo de senhas e apague a hash referente á senha do usuário root!
Exemplo:
root:$6$Rz85cxAb$vFozk0qNSYF/5IapmG2IxfIxzi6WJ/xZrC.LPTBrRkPO/N1vXGeR3VKwikvusnwodbdyQCdBijGFLZUUyr5eETa1:17577:0:99999:7:::

Apague tudo que estiver entre os 2 primeiros : deixando só um * assim:
root:*:17577:0:99999:7:::

Salve, reinicie, retire o pendrive.
Uma vez logado normalmente no sistema, abra o terminal e tente logar como root. Por exemplo, "sudo -i" para acessar o modo root do seu usuario e com ele voce digita:
$ passwd root

Isso vai permitir que você crie uma nova senha para o root do sistema!

Modo 2: Recuperando a Senha com Inicialização Privilegiada

Esse método inclusive é comentado como uma "falha" de segurança nativa de todos os GNU/Linux pois ocorre no GRUB2. Mas não se preocupe tanto se você realizou as dicas do começo desse topico.
Faça o seguinte:
- Inicie o menu GRUB do seu sistema. Ou seja, exiba a tela com as opções de boot mas não dê Enter em nenhuma delas.
- Pressione "e"
- Mova seu cursor até a linha que começa com "linux"
- Pressione "End", o cursor irá para o fim da linha, provavelmente após "Splash".
- Dê um espaço e digite no final dessa linha: init=/bin/bash
- Pressione Ctrl X para iniciar o boot.

Você estará no shell do sistema da máquina porém com a partição raíz em somente leitura. Para edita-la, digite:

# mount -o remount,rw /

Depois disso digite:
# passwd root
E troque a senha!

OBS: É esse método de edição do GRUB2 que eu tentei avisa-los xD
O GRUB2 possui essa grande "vulnerabilidade" - que só pode ser acessada localmente - de maneira nativa e todo usuário linux deveria "corrigi-la" logo que instalar o sistema na máquina. Não importa se você usa Fedora, Arch, Deepin ou Khali, se seu gestor de boot é o GRUB, você precisa cuidar dessa "falha", principalmente num PC publico.

Modo 3: Enjaulamento com Pendrive de Boot
- Inicie a máquina via pendrive.
- Enjaule o sistema em /mnt:
# mount /dev/sda1 /mnt
- Digite:
# passwd root
Troque a senha
Saia da jaula com:
# exit

Recuperando um FileSystem Corrompido

A situação é simples: O sistema tenta inicializar mas após o carregamento do kernel, durante o boot do sistema, ele congela/reinicia e ocorre toda sorte de esquisitices a partir daqui. Tecnicamente você se encontra com um FileSystem corrompido. A correção dele é relativamente simples:
.
- Inicie o LiveUSB da sua distro - Ou de algum "refisefuqui" dela.
- Não precisa enjaular nada. Basta iniciar normalmente o sistema via LiveUSB e rodar os seguintes comandos, sendo que o primeiro verifica a tabela de partição daquela unidade e o segundo verifica se há erros nela:
$ sudo fdisk -l /dev/sda
$ sudo fdisk /dev/sda1
.
OBS: Esteja atento se o alvo não é /dev/sda, /sdb, /sdc e etc!
Observe atentamente qual a identificação da sua partição antes de verifica-la.
A verificação só ocorre em discos NÃO MONTADOS, portanto você só pode verificar um disco com um sistema de arquivos danificado com o sistema acessando-o externamente, como num LiveUSB ou DVD.

Métodos de Prevenção

REISUB
Recentemente abordei a família de comandos REISUB que por si só é uma mão na roda quando o assunto é prevenir desastres - mesmo que na iminência de um estar prestes a ocorrer.

Caso tenha perdido o post:
https://www.facebook.com/UNIXUniverse/posts/1609493029127637

Faça Backup do MBR! (Não funciona para UEFI)

Por n motivos você vai querer ter um backup do setor de boot do MBR do seu disco; em caso de corrupção, será facil recuperá-lo!

Considerando que o MBR do seu disco está em /dev/sda, faremos:

$ sudo dd if=/dev/sda of=mbr.dd bs=512 count=1

Esse arquivo gerado chamado "mbr.dd" conterá seu atual GRUB, configurações e a tabela de partição completa do disco. Guarde-o em local seguro e de facil acesso!

Para restaurar a MBR em caso de desastre:
(Novamente considerando que sua MBR está em /dev/sda)

$ sudo dd if=mbr.dd of=/dev/sda

Trechos cuja fonte é minha experiencia de vida e fóruns.
Outros trechos foram adaptados de:
Livro: Descobrindo o Linux - 3a Edição
Autor: João Eriberto Mota Filho
Editora: Novatec

Fonte: Unix Universe
Compartilhar:
← Anterior Proxima → Inicio

Um comentário:

Formulário de contato

Nome

E-mail *

Mensagem *

Sites Parceiros

Anuncio No Post

Anuncio No Post

Anuncio Aqui!