LFCs como configurar e solucionar problemas de bootloader Grand Unified (GRUB) - Parte 13

LFCs como configurar e solucionar problemas de bootloader Grand Unified (GRUB) - Parte 13

Devido às recentes mudanças nos objetivos do exame de certificação LFCS eficazes de 2 de fevereiro de 2016, Estamos adicionando os tópicos necessários à série LFCS publicada aqui. Para se preparar para este exame, você é altamente encorajado a seguir a série LFCE também.

LFCs: Configurar e solucionar problemas do carregador de inicialização - Parte 13

Neste artigo, apresentaremos o GRUB e explicaremos por que um carregador de inicialização é necessário e como ele adiciona versatilidade ao sistema.

O processo de inicialização do Linux a partir do momento em que você pressiona o botão liga / desliga do seu computador até obter um sistema totalmente funcional segue esta sequência de alto nível:

  1. 1. Um processo conhecido como PUBLICAR (Auto-teste de poder) executa uma verificação geral nos componentes de hardware do seu computador.
  2. 2. Quando PUBLICAR Conclua, passa o controle para o carregador de inicialização, que por sua vez carrega o kernel Linux na memória (junto com initramfs) e executa. O carregador de inicialização mais usado no Linux é o Grande carregador de inicialização unificada, ou Grub abreviado.
  3. 3. O kernel verifica e acessa o hardware e depois executa o processo inicial (principalmente conhecido por seu nome genérico “iniciar”) Que, por sua vez, conclui a inicialização do sistema, iniciando os serviços.

Em Parte 7 Desta série ("Sysvinit, Upstart e Systemd"), introduzimos os sistemas e ferramentas de gerenciamento de serviços usados ​​pelas distribuições modernas do Linux. Você pode querer revisar esse artigo antes de prosseguir.

Apresentando o carregador de inicialização do Grub

Dois major Grub versões (v1 as vezes chamado Legado da Grub e v2) pode ser encontrado em sistemas modernos, embora a maioria das distribuições use v2 por padrão em suas últimas versões. Apenas Red Hat Enterprise Linux 6 e seus derivados ainda usam v1 hoje.

Assim, vamos nos concentrar principalmente nas características de v2 Neste guia.

Independentemente do Grub Versão, um carregador de inicialização permite ao usuário:

  1. 1). modifique a maneira como o sistema se comporta especificando diferentes kernels para usar,
  2. 2). Escolha entre sistemas operacionais alternativos para inicializar e
  3. 3). Adicione ou edite as estrofes de configuração para alterar as opções de inicialização, entre outras coisas.

Hoje, Grub é mantido pelo GNU projeto e está bem documentado em seu site. Você é incentivado a usar a documentação oficial da GNU ao passar por este guia.

Quando as botas do sistema você recebe o seguinte Grub tela no console principal. Inicialmente, você é solicitado a escolher entre kernels alternativos (por padrão, o sistema inicializará usando o kernel mais recente) e pode entrar em um Grub linha de comando (com c) ou edite as opções de inicialização (pressionando o e chave).

Tela de inicialização do Grub

Uma das razões pelas quais você consideraria inicializar com um kernel mais antigo é um dispositivo de hardware que costumava funcionar corretamente e começou “agindo”Após uma atualização (consulte este link no Askubuntu Fóruns para um exemplo).

O Grub v2 A configuração é lida na inicialização de /bota/grub/grub.cfg ou /bota/grub2/grub.cfg, enquanto /bota/grub/grub.conf ou /bota/grub/menu.LST são usados ​​em v1. Esses arquivos não devem ser editados manualmente, mas são modificados com base no conteúdo de /etc/default/grub e os arquivos encontrados dentro /etc/grub.d.

Em um CENTOS 7, Aqui está o arquivo de configuração criado quando o sistema é instalado pela primeira vez:

GRUB_TIMEOUT = 5 GRUB_DISTIBUDOR = "$ (sed 's, liberação .*$ ,, g ' /etc /system-lan) "Grub_Default = salvado GRUB_DISABLE_SUBMENU = TRUE GRUB_TERMINAL_OUTPUT =" Console "GRUB_CMDLINE_LINUX =" VCONSOLE.keyMap = La-Latin1 rd.lvm.LV = CENTOS_CENTOS7-2/SWAP CRASTKERNEL = AUTO VCONSOLE.Fonte = Latarcyrheb-Sun16 Rd.lvm.lv = CentOS_CENTOS7-2/ROOT RHGB SIMP "GRUB_DISABLE_RECOVERY =" true " 

Além da documentação on -line, você também pode encontrar o manual do GNU GRUB usando informações da seguinte maneira:

# info grub 

Se você estiver interessado especificamente nas opções disponíveis para /etc/default/grub, Você pode invocar a seção de configuração diretamente:

# info -f grub -n 'configuração simples' 

Usando o comando acima, você descobrirá que Grub_timeout Define o tempo entre o momento em que a tela inicial aparece e a inicialização automática do sistema começa a menos que seja interrompido pelo usuário. Quando esta variável é definida como -1, A inicialização não será iniciada até que o usuário faça uma seleção.

Quando vários sistemas operacionais ou kernels são instalados na mesma máquina, GRUB_DEFAULT requer um valor inteiro que indique qual entrada OS ou kernel na tela inicial do GRUB deve ser selecionada para inicializar por padrão. A lista de entradas pode ser vista não apenas na tela Splash mostrada acima, mas também usando o seguinte comando:

Em Centos e OpenSuse:

# awk -f \ "$ 1 ==" menuEntry "print $ 2 '/boot/grub2/grub.cfg 

Em Ubuntu:

# awk -f \ "$ 1 ==" menuEntry "print $ 2 '/boot/grub/grub.cfg 

No exemplo mostrado na imagem abaixo, se desejarmos inicializar com a versão do kernel 3.10.0-123.EL7.x86_64 (4ª entrada), precisamos definir GRUB_DEFAULT para 3 (As entradas são numeradas internamente, começando com zero) da seguinte forma:

Grub_default = 3 
Sistema de inicialização com versão antiga do kernel

Uma variável de configuração final do grub que é de interesse especial é GRUB_CMDLINE_LINUX, que é usado para passar opções para o kernel. As opções que podem ser passadas através do Grub para o kernel estão bem documentadas no arquivo parâmetros do kernel e no homem 7 bootparam.

Opções atuais no meu CENTOS 7 O servidor é:

GRUB_CMDLINE_LINUX = "VCONSOLE.keyMap = La-Latin1 rd.lvm.LV = CENTOS_CENTOS7-2/SWAP CRASTKERNEL = AUTO VCONSOLE.Fonte = Latarcyrheb-Sun16 Rd.lvm.LV = CENTOS_CENTOS7-2/ROOT RHGB Quiet " 

Por que você deseja modificar os parâmetros padrão do kernel ou passar opções extras? Em termos simples, pode haver momentos em que você precisa dizer ao kernel certos parâmetros de hardware que pode não ser capaz de determinar por conta própria ou substituir os valores que ele detectaria.

Isso aconteceu comigo não muito tempo atrás, quando eu tentei Vector Linux, um derivado de Slackware, no meu laptop de 10 anos. Após a instalação, não detectou as configurações corretas para minha placa de vídeo, então tive que modificar as opções de kernel passadas pelo Grub para fazê -lo funcionar.

Outro exemplo é quando você precisa levar o sistema ao modo de usuário único para executar tarefas de manutenção. Você pode fazer isso anexando a palavra single para GRUB_CMDLINE_LINUX e reiniciar:

GRUB_CMDLINE_LINUX = "VCONSOLE.keyMap = La-Latin1 rd.lvm.LV = CENTOS_CENTOS7-2/SWAP CRASTKERNEL = AUTO VCONSOLE.Fonte = Latarcyrheb-Sun16 Rd.lvm.LV = CentOS_CENTOS7-2/ROOT RHGB Quiet solteiro" 

Depois de editar /etc/defalt/grub, Você precisará correr update-grub (Ubuntu) ou GRUB2 -MKCONFIG -O/BOOT/GRUB2/GRUB.cfg (CENTOS e OpenSuse) depois para atualizar grub.cfg (caso contrário, as mudanças serão perdidas na inicialização).

Este comando processará os arquivos de configuração de inicialização mencionados anteriormente para atualizar grub.cfg. Este método garante que as alterações sejam permanentes, enquanto as opções passadas pelo Grub no tempo de inicialização durarão apenas durante a sessão atual.

Corrigindo problemas de grub do Linux

Se você instalar um segundo sistema operacional ou se o seu arquivo de configuração do GRUB for corrompido devido ao erro humano, existem maneiras de recuperar seu sistema e poder inicializar novamente.

Na tela inicial, pressione c Para obter uma linha de comando GRUB (lembre -se de que você também pode pressionar e Para editar as opções de inicialização padrão) e usar a ajuda para trazer os comandos disponíveis no prompt do GRUB:

Corrija problemas de configuração do GRUB no Linux

Vamos nos concentrar em ls, que listarão os dispositivos e sistemas de arquivos instalados, e examinaremos o que ele encontra. Na imagem abaixo, podemos ver que existem 4 discos rígidos (HD0 através HD3).

Apenas HD0 parece ter sido particionado (como evidenciado por MSDOS1 e MSDOS2, onde 1 e 2 são os números de partição e MSDOS é o esquema de particionamento).

Vamos agora examinar a primeira partição em HD0 (MSDOS1) para ver se podemos encontrar o grub lá. Essa abordagem nos permitirá inicializar o Linux e use outras ferramentas de alto nível para reparar o arquivo de configuração ou reinstalar completamente o GRUB, se for necessário:

# LS (HD0, MSDOS1)/ 

Como podemos ver na área destacada, encontramos o GRUB2 Diretório nesta partição:

Encontre a configuração do grub

Uma vez que tivermos certeza de que o grub reside em (HD0, MSDOS1), vamos dizer a Grub onde encontrar seu arquivo de configuração e, em seguida, instruí -lo a tentar lançar seu menu:

SET prefixo = (HD0, MSDOS1)/GRUB2 SET ROOT = (HD0, MSDOS1) INSMOD Normal Normal 
Encontre e inicie o menu Grub

Em seguida, no menu Grub, escolha uma entrada e pressione Digitar Para inicializar usando isso. Depois que o sistema for inicializado, você pode emitir o Grub2-Install /dev /sdx comando (altere SDX com o dispositivo em que você deseja instalar o grub). As informações de inicialização serão atualizadas e todos os arquivos relacionados serão restaurados.

# Grub2-Install /dev /sdx 

Outros cenários mais complexos são documentados, juntamente com suas correções sugeridas, no Guia de Solução de Problemas do Ubuntu Grub2. Os conceitos explicaram que são válidos para outras distribuições também.

Resumo

Neste artigo, apresentamos você ao GRUB, indicado onde você pode encontrar documentação online e offline e explicamos como abordar um cenário em que um sistema parou de inicializar corretamente devido a um problema relacionado ao carregador de inicialização.

Felizmente, o GRUB é uma das ferramentas que estão melhor documentadas e você pode encontrar facilmente ajuda nos documentos instalados ou on -line usando os recursos que compartilhamos neste artigo.

Você tem perguntas ou comentários? Não hesite em nos informar usando o formulário de comentário abaixo. Estamos ansiosos para ouvir de você!

Torne -se um administrador de sistema certificado Linux