Skip to main content

202.2 Recuperação do Sistema


O maior foco aqui é no estudos sobre SysV e SysD.



MBR


Relembre aqui e aqui.



Grub


Relembre aqui.


Uma das evoluções importantes do GRUB 2 em relação ao GRUB Legacy foi a introdução de novos recursos que o tornaram mais moderno e flexível:

  • Suporte nativo a UEFI, uso de UUIDs e sistema baseado em scripts para geração de configuração;

  • Capacidade de operar de forma multiplataforma, suportando diferentes arquiteturas (x86, ARM, etc);

  • Arquitetura modular, permitindo carregar apenas os componentes necessários durante o boot.


Em algumas distribuições, o menu do GRUB pode estar oculto por padrão, especialmente em instalações de desktop. Para conseguir acessar o modo de recuperação do sistema (recovery mode), é necessário tornar o menu visível. Siga os passos abaixo:

# Edite o arquivo de configuração do GRUB:
$ sudo vim /etc/default/grub

No editor, faça as seguintes modificações:

  • Altere a linha GRUB_TIMEOUT=0 para:

    GRUB_TIMEOUT=10
  • Remova (ou comente) a linha:

    GRUB_TIMEOUT_STYLE=hidden

Essas mudanças garantem que o menu do GRUB seja exibido por 10 segundos durante o boot. Depois de salvar e sair do editor, atualize a configuração do GRUB:

# Regerar o arquivo de configuração do GRUB:
$ sudo update-grub

Saída típica:

Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.14.8-001-maddogs
Found initrd image: /boot/initrd.img-5.14.8-001-maddogs
Found linux image: /boot/vmlinuz-5.14.8-001-maddogs.old
Found initrd image: /boot/initrd.img-5.14.8-001-maddogs
Found linux image: /boot/vmlinuz-5.4.0-88-generic
Found initrd image: /boot/initrd.img-5.4.0-88-generic
done

Com isso, ao reiniciar o sistema, o menu do GRUB será exibido e você poderá selecionar o modo de recuperação (normalmente listado como uma opção adicional sob o kernel padrão). Isso deve ser feito em algumas distros para podermos ver o menu do Grub.


Para entrar no modo de recuperação pelo grub, no momento do boot (imagem abaixo), pressione e.

Selection_006


Agora, com o menu de boot visível, podemos editar uma entrada do GRUB para iniciar o sistema em modo de manutenção (modo monousuário). Para isso:

  1. Localize a linha que começa com linux, que carrega o kernel (como destacado na imagem).

  2. No final dessa linha, adicione um espaço e em seguida 1 ou s, ficando assim:

    ... quiet splash 1

    Ou apenas:

    ... 1

    Isso fará o sistema iniciar no runlevel 1, ou seja, modo de manutenção (single-user mode).

  3. Pressione Ctrl+X (ou F10) para iniciar com essa configuração temporária.

Alternativamente, você pode adicionar o parâmetro init=/bin/bash no final da mesma linha. Isso instrui o kernel a carregar diretamente o shell /bin/bash, sem passar pelo init ou systemd.

Selection_007

Em vermelho vemos a linha/informação do Kernel, e em amarelo vemos a opção que colocamos.



Grub Shell


Nossa tarefa aqui é poder iniciar o sistema seguindo passos manuais que são feito em background (mesmo que feitos de uma maneira diferente).


Na tela de menu do Grub (imagem abaixo), aperte a letra c para entrar no Shell do Grub.

Grub_Menu


Você verá a imagem abaixo após apertar o c.

grub_shell


Vejamos alguns comandos que podemos usar aqui:

ComandoDescrição
lsLista as partições seguindo a nomeclatura da versão do Grub que está rodando.
catExibe o conteúdo de um arquivo.
set root (DISCO,PARTICAO)Configura a localização do /boot.
linux /vmlinuz-versão root=onde montarDefine onde está o Kernel que vamos iniciar e onde esse Kernel será montado.
initrd /initrd.img-versãoDefine o initramfs que será usado.
bootInicia o processo de Boot.

Vamos aos comandos nesse Shell maravilhoso!

normal

Na imagem acima já tem todos os comandos que serão necessários para iniciar o sistema. Perceba que eu usei root=/dev/vda3, o vda é a nomeclatura dada aos devices em ambiente KVM, porque são driver de disco paravirtualizado, somente por isso você não verá um sda.


Outra coisa é o 3 no vda, essa declaração define onde a raiz do sistema será montada:

  • /dev/vda1 = /boot
  • /dev/vda2 = swap
  • /dev/vda3 = /

Por isso normalmente fica a partir da 3° partição, mas você deve ver como está o seu ambiente.


Vale ressaltar que, na explicação dos comandos, eu mostrei que você deve especificar a versão do Kernel/Initrd, acontece que na imagem eu usei os links existentes que apontam para a versão mais recente em uso, segue a imagem abaixo mostrando como seria escolhendo uma versão de Kernel mais antiga.

com_versao_kernel


Se você estiver confuso sobre como advinhar qual partição deve ficar montada a raiz do sistema, você pode procurar qual é a partição da raiz e com isso montar ela na ordem que deveria ser:

particoes

Aqui podemos ver 3 partições (msdos1, msdos2 e msdos3), listando direto a 3° vemos que é a partição raiz do sistema.


Agora você pode usar o comando cat para ver detalhes do fstab:

fstab



UEFI


Relembre aqui.



Iniciando um S.O com problemas


Em situações onde o sistema Linux não consegue mais iniciar (seja por um kernel corrompido, problemas no GRUB, ou falhas de atualização) é possível recuperá-lo utilizando um Live CD, Live USB ou até mesmo um Live DVD.


Inicie o sistema usando uma mídia live da sua distribuição (como Arch, Debian, Ubuntu etc.). Após obter acesso ao terminal do sistema Live, monte as partições do sistema que será recuperado.


Exemplo com o Arch Linux instalado em /dev/sdc5:

# Criar o ponto de montagem:
sudo mkdir /mnt/archlinux

# Montar a partição raiz:
sudo mount /dev/sdc5 /mnt/archlinux

Verifique o conteúdo e a estrutura de partições:

cat /mnt/archlinux/etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sdc5
UUID=be17c19a-fdd1-4017-9bca-bd35a8e08a5a / ext4 rw,relatime 0 1

# /dev/sdc1
UUID=79C8-B5AD /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2

# /dev/sdc3
UUID=54ea04d7-5426-4ebd-9d68-6f8e95d06c99 /home ext4 rw,relatime 0 2

# /dev/sdc2
UUID=8eebc7a5-e31a-49ac-a012-a502eb52abfb none swap defaults 0 0

Isso ajuda a identificar onde estão /home, /boot, /boot/efi, swap etc.


Monte também a partição EFI, se houver:

sudo mount /dev/sdc1 /mnt/archlinux/boot/efi

Prepare o ambiente com chroot:

# Entrar no sistema instalado, assumindo o root dele:
sudo chroot /mnt/archlinux

# Montar os sistemas virtuais:
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
mount -o bind /dev /dev

A partir desse ponto, você está operando dentro do sistema instalado, como se tivesse feito boot normalmente.


Exemplo de recuperação no Arch Linux:

# Atualize o sistema:
pacman -Syu

# Reinstale o kernel:
pacman -S linux

# Regere a configuração do GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Warning: os-prober will be executed to detect other bootable partitions.
Found Linux Mint 20 Ulyana (20) on /dev/sdc4
done

Finalize e reinicie:

# Saia do chroot:
exit # ou pressione Ctrl+D

# Desmonte todas as partições:
sudo umount -R /mnt/archlinux

# Reinicie a máquina:
sudo reboot


Testdisk


O testdisk é uma ferramenta poderosa para diagnóstico e recuperação de partições perdidas. Entre suas funcionalidades, destaca-se a capacidade de reconstruir a MBR de um disco, mesmo que ela tenha sido apagada ou corrompida.


Inicie o testdisk com permissões de superusuário:

sudo testdisk

No menu inicial, selecione:

  • [Create]: Para criar um novo log de análise;
  • Selecione o disco onde deseja recuperar a MBR ou as partições;
  • Escolha o tipo da tabela de partição. Para discos com MBR, selecione [Intel] (que representa o estilo DOS, não confundir com o nome do fabricante).

Continue com:

  • [Analyse]: Inicia a análise da estrutura de partições;
  • Em seguida, [Quick Search], para detectar partições rapidamente.

Mesmo sem uma MBR válida, o testdisk geralmente consegue localizar as partições reais existentes no disco.


Quando as partições forem exibidas corretamente, pressione Enter para continuar, e depois selecione:

  • [Write]: Para escrever a nova tabela de partições no disco e recriar a MBR.

Depois de restaurar as partições com sucesso, é necessário reinstalar o carregador de boot (GRUB). Isso pode ser feito diretamente do sistema live:

sudo grub-install /dev/sda --boot-directory=/mnt/boot_tmp

Neste exemplo, /mnt/boot_tmp é onde está montada a partição /boot do sistema que foi recuperado.


Após iniciar o sistema normalmente, é altamente recomendável reinstalar o GRUB novamente a partir do próprio sistema (e não do live environment), garantindo que ele seja configurado com os caminhos e UUIDs corretos da instalação real:

sudo grub-install /dev/sda
sudo update-grub # ou grub-mkconfig -o /boot/grub/grub.cfg

Isso assegura que a instalação do GRUB esteja alinhada com o sistema atual e pronta para uso regular.



NVME (Non-Volatile Memory Express)


O NVMe é uma interface de acesso a armazenamento projetada especificamente para SSDs que usam o barramento PCI Express (PCIe), permitindo altíssima taxa de transferência e baixa latência. Ele substitui interfaces mais antigas como SATA e AHCI, que foram criadas para discos mecânicos.


No Linux, dispositivos NVMe são identificados como /dev/nvme0n1, /dev/nvme1n1 etc., com suas partições listadas como /dev/nvme0n1p1, /dev/nvme0n1p2 e assim por diante.