Chroot:Como recuperar qualquer sistema Linux com o Chroot!

Chroot:Como recuperar qualquer sistema Linux com o Chroot!

Nesse tutorial, mostraremos o procedimento de recuperar o sistema com o chroot executado no Debian para acessar a raiz do openSUSE Leap onde o mesmo encontra-se com problema e assim fazer as devidas alteração e modificação de arquivos de configuração ou até mesmo a remoção e instalação de pacotes para deixar o sistema novamente consistente. Assim, diante do meu relato, saiba como recuperar um sistema Linux com o Chroot.

O problema com o openSUSE Leap ocorreu após a instalação do driver da Nvidia, de modo a não carregar corretamente a tela de login após o boot, ficando apenas uma tela preta com o ponteiro do mouse.

O driver da Nvidia após instalado e funcionando perfeitamente, na atualização do sistema, ocorreu alguma incompatibilidade com a configuração do driver da nvidia e o pacote da interface de login sddm ocasionando o problema.

Pelos relatos que obtive no grupo do Telegram openSUSE Brasil, isso seria um bug com o driver da NVidia e o gerenciador de login sddm (Simple Desktop Display Manager).

Para saber mais sobre o Debian e o openSUSE, acesse a página dos projetos clicando nos botões abaixo.

O fato ocorrido

Depois de alguns dias após deixar o openSUSE Leap atualizado e funcionado perfeitamente, ao retornar a dar boot, para minha surpresa, após o sistema carregar perfeitamente a interface de login sddm não carregou corretamente, ficando apenas com uma tela preta e o ponteiro do mouse.

Com esse problema, sem ter como logar pela interface, com as teclas Ctrl+Alt+F1 mudando para o console tty1, executei o comando para atualização do sistema e assim verificar se o problema seria resolvido. Mesmo após a atualização ter ocorrido sem problemas, nada mudou e o problema persistia.

Na tentativa de carregar a interface com o comando startx o mesmo retornava erro de xinit. Ao perceber que o xorg estava com problema em não carregar, com a tela preta no lugar da tela de login, percebi que o problema era realmente com o driver da Nvidia.

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
startx – error com o xorg
Chroot - Como recuperar qualquer sistema Linux com o Chroot!
startx – error com o xorg
Chroot - Como recuperar qualquer sistema Linux com o Chroot!
startx – error com o xorg

Depois de algumas pesquisas e ajuda no grupo do Telegram openSUSE Brasil, não obtive progresso em relação ao problema, chegando uma hora em que removi o driver Nvidia que acabei de instalar e instalei o driver Nvidia mais antigo para verificar se o sistema iria carregar a tela de login sddm corretamente, mas nada que estivesse ruim não pudesse piorar! Pelo que me foi passado no grupo, o problema é um bug do driver da Nvidia com o sddm assim não carregando corretamente a tela de login, ficando apenas na tela preta e com o ponteiro do mouse.

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
Bug – tela de login sddm

openSUSE inconsistente

Depois de algumas tentativas de recuperar a interface de login sddm do openSUSE Leap, o que estava ruim ficou ainda pior. Com o problema descrito acima, ainda tinha acesso ao sistema podendo logar no console tty para fazer as devidas modificações na tentativa de sanar o problema, mas depois que removi o driver Nvidia 390.25 e instalei o driver Nvidia 340.106 para testar, ficou a tela do console tty1 inconsistente, piscando como se fosse uma ‘bruxaria’ kkkk, assim tendo reflexo no teclado em não responder adequadamente o que era digitado, assim não tendo êxito ao logar, pois sem saber o que o teclado respondia, sem chance de entrar com a senha correta!

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
tty1 – inconsistente

Abaixo, um vídeo curto da ‘bruxaria‘ que ocorreu com o tty1.

Não obtendo êxito a entrar no sistema pelo console, a orientação que tive foi para instalar novamente o sistema. Como no momento não tinha em mãos a mídia de instalação do openSUSE, recordei que tempos atrás aconteceu um problema quando usava o Sabayon e também não tinha em mãos a mídia de instalação, lembrei o procedimento executado com o chroot para entrar no sistema e reparar o mesmo, assim logo dei reboot no sistema.

Para saber mais sobre o Sabayon, acesse a página no projeto clicando no botão abaixo.

Identificando a partição onde o openSUSE está instalado

Ao reiniciar a máquina para a recuperação do sistema openSUSE, escolhi o Debian no Grub pois o mesmo que gerencia o boot-loader e como tenho outros sistemas operacionais em multi-boot com 4 HD’s na máquina, sda (Windows 10 – no sda2), sdb (Debian – no sdb1 / openSUSE – no sdb2), sdc (FreeBSD – no sdc5) e sdd (disco de dados – no sdd1), executei o comando lsblk para listar as partições dos discos, podendo também executar o  comando fdisk -l para listar com mais detalhes os discos e partições assim identificando corretamente o device e a partição onde está instalado o sistema alvo da recuperação. Lembrando que o comando fdisk -l deverá ser executado com privilégio de root.

Veja abaixo as imagens com os respectivos comandos lsblk e fdisk -l.

O comando lsblk e sua saida

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
Comando – lsblk

O comando fdisk -l e sua saída

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
Comando – fdisk -l

Pela saída dos comandos acima, foi identificado a partição sdb2 onde esta instalado o openSUSE.

Preparando o terreno para o chroot

Sabendo que o openSUSE está instalado na partição sdb2, para o procedimento com o chroot, devemos montar a partição sdb2, nesse caso será montada no diretório /mnt.

Todos os comandos deverão ser executado com privilégio de root.

Montada a partição sdb2 onde está o openSUSE, é necessário montar também o /proc, /dev e /sys para o console ter acesso adequado ao sistema e assim poder fazer os devidos reparos para recuperar o sistema.

Veja abaixo a imagem com os respectivos comandos mount.

Os comandos mount

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
Comandos – mount

Com tudo preparado, executamos o comando chroot indicando a partição sdb2 onde foi montado o openSUSE, nesse caso o diretório /mnt. Logo após, para ter certeza que já esta dentro da raiz do openSUSE, execute o comando cat /etc/os-release.

O comando chroot e cat com sua saída.

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
Comando – chroot e cat

Com a saída do comando cat /etc/release, notamos que já estamos na raiz do sistema openSUSE.

Recuperando a consistência do sistema openSUSE

Com a inconsistência do sistema openSUSE após instalado o driver da Nvidia 340.106, a primeira coisa a fazer é remover tudo do driver da Nvidia. Para remover o driver em questão, executamos o comando zypper rm nvidia*, confirmando a remoção para desinstalar o driver.

O comando zypper rm nvidia* e sua saída

Saída do Terminal
zypper rm nvidia*
Carregando dados do repositório…
Lendo os pacotes instalados…
Resolvendo dependências de pacote…
Os seguintes 4 pacotes serão REMOVIDOS:
nvidia-computeG03 nvidia-gfxG03-kmp-default nvidia-glG03 x11-video-nvidiaG03
4 pacotes para remover.
Após a operação, 362,7 MiB será liberado.
Continuar? s/n/…? exibe todas as opções:

Após a remoção, vamos instalar o driver recomendado, executando o comando zypper install-new-recommends, confirmando a instalação para o driver da Nvidia 390.25 e assim verificar a recuperação do sistema openSUSE após reiniciar.

O comando zypper install-new-recommends e sua saída

Saída do Terminal
zypper install-new-recommends
Baixando os metadados do repositório 'PACKMAN' ……………………..[concluído]
Construindo o cache do repositório 'PACKMAN' ……………………….[concluído]
Carregando dados do repositório…
Lendo os pacotes instalados…
Resolvendo dependências de pacote…
Os seguintes 4 pacotes NOVOS serão instalados:
nvidia-computeG04 nvidia-gfxG04-kmp-default nvidia-glG04 x11-video-nvidiaG04
4 novos pacotes a serem instalados.
Tamanho total do download: 77,8 MiB. Já em cache: 0 B. Após a operação, 362,7 MiB
adicionais serão utilizados.
Continuar? s/n/…? exibe todas as opções:

Após a instalação do driver da Nvidia 390.25, vamos reiniciar o Debian e dar boot no openSUSE para verificarmos a consistência do sistema se foi resolvido e resolver o problema com o sddm no carregamento da tela de login.

Iniciando o openSUSE e resolvendo o problema da tela de login sddm

Iniciado o openSUSE e já no console tty1, vamos parar o gerenciador de login sddm que está com problema e seguir os passos seguintes.

Comando para parar o gerenciador de login sddm

Terminal
systemctl stop display-manager.service

Antes de ocorrer o problema da inconsistência do sistema do openSUSE, fiz a mudança do link do modo gráfico multi-user para o default na tentativa de recuperação da interface de login sddm mas sem sucesso.

Terminal
ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target

Como não adiantou fazer tal mudança, retornei para o modo gráfico multi-user, revertendo o link.

Terminal
systemctl set-default multi-user.target

Com o retorno do link para o modo gráfico, incluiremos o usuário ao grupo video, caso o mesmo não esteja no grupo. Verifique se o usuário está no grupo video com o comando abaixo.

Comando para verificar se o usuário está no grupo video e sua saída

Terminal
cat /etc/group | grep mcnd2
video:x:33:

Pelo retorno da saída do comando, o usuário mcnd2 não está incluso no grupo video, assim deveremos incluir o mesmo ao grupo com o comando abaixo.

Comando para incluir o usuário no grupo video no openSUSE

Terminal
usermod -G video -a mcnd2

Agora, executando o comando de verificação mencionado acima, veja que o usuário mcnd2 foi incluído no grupo video.

Saída do Terminal
at /etc/group | grep mcnd2
video:x:33:mcnd2

Após a inclusão do usuário ao grupo video, sabendo que a tela de login não esta carregando corretamente por causa do bug da nvidia com o gerenciador de login sddm, em alternativa ao sddm vamos instalar o gerenciador de login lightdm.

Comando para instalar o lightdm no openSUSE

Terminal
zypper install lightdm

Para trocar o gerenciador de login default sddm para o lightdm e assim o torna padrão, execute o comando abaixo.

Comando para setar o display-manager lightdm no openSUSE e sua saída

Terminal
yast2 sysconfig set DISPLAYMANAGER=lightdm
Saída do Terminal
Setting variable 'DISPLAYMANAGER' to 'lightdm': Success

Após os procedimentos acima, iniciaremos o gerenciador de login lightdm para podermos logar em modo gráfico.

Comando para iniciar o gerenciador de login lightdm no openSUSE

Terminal
systemctl start display-manager.service

Veja a tela de login lightdm carregada corretamente. Agora é só logar e utilizar o sistema openSUSE 42.3 Leap.

Chroot - Como recuperar qualquer sistema Linux com o Chroot!
Gerenciador de login – lightdm

Fico por aqui e até a próxima baseado nos problemas reais. Mas, a ideia deste tutorial é mostrar como recuperar qualquer sistema Linux com o chroot.