202.2 Recuperação do Sistema
O maior foco aqui é no estudos sobre SysV e SysD.
MBR
Grub
Relembre aqui.
Uma das adições do grub 2 foram os:
- Suporte a UEFI, UUID e Scripts;
- Ser multiplataforma;
- Ser modular.
Vamos ver como entrar no modo de recuperação de um sistema através do Grub, para isso siga os passos abaixo em alguns sistemas:
# Edite o arquivo '/etc/default/grub':
$ sudo vim /etc/default/grub
### Mude a linha 'GRUB_TIMEOUT=0' para 'GRUB_TIMEOUT=10'.
### remova a linha 'GRUB_TIMEOUT_STYLE=hidden' caso exita.
## Salve e saia.
# Regere um novo arquivo do grupo com a nova onfiguração:
$ sudo update-grub
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
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
.
Agora na linha do Kernel que queremos iniciar, adicione 1
ou s
ao final da linha para iniciar no modo de manutenção. Depois aperte crtl+x
para iniciar.
Podemos colocar
init=/bin/bash
para iniciar direto no bash, nesse caso, não sobe o sistema em sí, é mais uma opção de recuperação do sistema.
Em vermelho vemos a linha/informação do Kernel, e em amarelo vemos a opção que colocamos.
Em ambos os casos, as partições não são montadas (todas em /etc/fstab
, apenas a raiz e ainda é montada como read-only).
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.
Você verá a imagem abaixo após apertar o c
.
Vejamos alguns comandos que podemos usar aqui:
Comando | Descrição |
---|---|
ls | Lista as partições seguindo a nomeclatura da versão do Grub que está rodando. |
cat | Exibe o conteúdo de um arquivo. |
set root (DISCO ,PARTICAO ) | Configura a localização do /boot . |
linux /vmlinuz-versão root=onde montar | Define onde está o Kernel que vamos iniciar e onde esse Kernel será montado. |
initrd /initrd.img-versão | Define o initramfs que será usado. |
boot | Inicia o processo de Boot. |
Vamos aos comandos nesse Shell maravilhoso!
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.
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:
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
:
UEFI
Relembre aqui.
Iniciando um S.O com problemas
Em alguns casos o sistema pode não inicializar mais por causa de um kernel corrompido ou algum problema no Grub. Para esses casos é recomendado iniciar a máquina Linux com um Live CD (mais comum hoje é o Live USB ou até mesmo um Live DVD).
Após iniciar o sistema live, você deve montar as partições:
# Criando uma pasta para montar o sistema:
mkdir /tmp/archlinux
# Montando a partição raiz:
$› sudo mount /dev/sdc5 /tmp/archlinux
# Listando os dados nesse diretório:
$› ls /tmp/archlinux
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var vm_storage
##############################
###### Listando o fstab ######
##############################
$› cat /tmp/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
Entendido como está a estrutura das partições, monte o /boot
(/dev/sdc1) no /tmp/archlinux/boot
:
$› sudo mount /dev/sdc1 /tmp/archlinux/boot/efi
Agora dê um chroot
para esse diretório, isso vai mudar a raiz do sistema, é como se mudássemos de sistema.
$› sudo chroot /tmp/archlinux
# Com isso você verá que o prompt mudou, agora estamos no ArchLinux e não mais no Live CD.
# Monte as partições:
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devtmpfs none /dev
mount -o bind /dev /dev
# Atualize o Sistema do Arch (ou de outro S.O.):
sudo pacman -Syu
# Reinstale o pacote 'linux':
pacman -S linux
# De um update no 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.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Linux Mint 20 Ulyana (20) on /dev/sdc4
done
# Agora de um 'Ctrl+d' até voltar ao sistema normal, depois desmonte tudo:
$› sudo umount -R /tmp/archlinux
# Reinicie a máquina para iniciar o SO que recuperamos.
Testdisk
É um utilitário usado para trabalhar em função do disco, pode usar usado para recuperar a MBR de um disco que possa ter sido perdido ou corrompido.
No testdisk
vá em:
- Create ->
- Escolha o Disco que vamos usar para manutenção ->
- Escolha o tipo da Tabela de Partição, (INTEL para MBR, porque MBR é do tipo DOS, não confunda com MSDOS) ->
- Analyzer ->
- Quick Search
Com isso, mesmo sem a MBR, ele deve encontrar as partições do disco, depois vá aperte Enter to continue e Write para escrever as partições no disco e recriar a MBR.
Por último devemos reinstalar o bootloader do Grub:
$ sudo grub-install DEVICE --boot-directory=CAMINHO
# Exemplo:
$ sudo grub-install /dev/sda --boot-directory=/mnt/boot_tmp
Depois de iniciar o sistema, rode o grub-install
novamente para deixar tudo certinho com a imagem do sistema atual e não com a do LiveCD.
NVME (Non-Volatile Memory Express)
É basicamente uma interface para que discos SSD possam ser usados em barramento PCI-Express, aumentando a largura de banda e consequentemente, aumentando a taxa de leitura e escrita em discos SSD. Ele foi criado pela Intel e no Linux é reconhecido como /dev/nvme*
.