Como verificar se as configurações do GRUB foram aplicadas no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como verificar se as alterações feitas na configuração do carregador de inicialização GRUB no Linux foram aplicadas com sucesso. Exploraremos o arquivo de configuração principal do GRUB, localizado em /etc/default/grub, para entender suas configurações.

Em seguida, examinaremos o arquivo de configuração do menu GRUB gerado em /boot/grub/grub.cfg para ver como as configurações do arquivo padrão são traduzidas. Finalmente, inspecionaremos os parâmetros de inicialização do kernel usando o comando dmesg para confirmar se as configurações do GRUB são refletidas no sistema em execução.

Verificar a configuração do GRUB com cat /etc/default/grub

Nesta etapa, exploraremos o arquivo de configuração do GRUB. O GRUB (GRand Unified Bootloader) é o carregador de inicialização para muitas distribuições Linux, incluindo o Ubuntu. É o primeiro software que é executado quando você inicia seu computador e é responsável por carregar o kernel do sistema operacional.

O arquivo de configuração principal para o GRUB está localizado em /etc/default/grub. Este arquivo contém configurações que determinam como o GRUB se comporta, como o sistema operacional padrão para inicializar, o tempo limite antes da inicialização e os parâmetros do kernel.

Vamos visualizar o conteúdo deste arquivo usando o comando cat. O comando cat é usado para exibir o conteúdo dos arquivos.

Abra seu terminal, caso ainda não esteja aberto. Lembre-se, você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.

Digite o seguinte comando e pressione Enter:

cat /etc/default/grub

Você verá o conteúdo do arquivo /etc/default/grub impresso no seu terminal. Ele se parecerá com algo assim:

## If you change this file, run 'update-grub' afterwards to update
## /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

## Uncomment to enable graphical terminal (grub-gfxpayload is needed)
#GRUB_TERMINAL=gfxterm

## The resolution used on graphical terminal
## settings below may not work on your chipset but may be useful for EFI panel
## sizes
#GRUB_GFXMODE=640x480

## Uncomment to disable graphical terminal on boot problems
#GRUB_TERMINAL_INPUT=console

## Uncomment to disable menu scrolling
#GRUB_MENU_SCROLL_STYLE=menu

## Uncomment to enable hidden menu by default
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

## Uncomment to enable BadRAM filtering, modify to suit your needs
## This works only with Linux 2.6.25 or later using pci_filter_enable=1
## and needs BadRAM filtering support in the kernel
#GRUB_BADRAM="0x0123456789abcdef,0xghijkllmnopqrstuvwxyz"

## Uncomment to disable graphical boot (use text mode)
#GRUB_DISABLE_GRAPHICS_OVERRIDE=true

## If you want to enable the GRUB boot menu at boot time, uncomment the following line:
#GRUB_ENABLE_CRYPTODISK=y

## The following lines are for the default grub menu entry
#GRUB_INIT_TUNE="480 440 1"

## Uncomment to set a custom theme
#GRUB_THEME=/path/to/grub/theme

## Uncomment to enable os-prober, which detects other operating systems
#GRUB_DISABLE_OS_PROBER=false

Este arquivo contém várias configurações. Por exemplo:

  • GRUB_DEFAULT: Especifica a entrada de menu padrão para inicializar. 0 significa a primeira entrada.
  • GRUB_TIMEOUT: Define o tempo em segundos antes que a entrada padrão seja inicializada automaticamente.
  • GRUB_CMDLINE_LINUX_DEFAULT: Contém parâmetros do kernel que são passados para o kernel ao inicializar a entrada padrão.

Compreender este arquivo é crucial para a configuração avançada do Linux e para solucionar problemas de inicialização.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar o menu GRUB com cat /boot/grub/grub.cfg

Na etapa anterior, analisamos o arquivo /etc/default/grub, que é o arquivo de configuração principal do GRUB. No entanto, este arquivo não é usado diretamente pelo GRUB durante o processo de inicialização. Em vez disso, as configurações em /etc/default/grub são usadas para gerar o arquivo de configuração real do menu GRUB, que está localizado em /boot/grub/grub.cfg.

O arquivo /boot/grub/grub.cfg é gerado automaticamente pelo comando update-grub (ou grub-mkconfig). Ele contém as entradas do menu que você vê quando o computador inicia, permitindo que você escolha qual sistema operacional ou kernel inicializar.

Importante: Você nunca deve editar manualmente o arquivo /boot/grub/grub.cfg. Quaisquer alterações que você fizer serão substituídas na próxima vez que o update-grub for executado. Sempre modifique /etc/default/grub e, em seguida, execute sudo update-grub para aplicar suas alterações.

Vamos visualizar o conteúdo do arquivo /boot/grub/grub.cfg usando o comando cat.

Digite o seguinte comando no seu terminal e pressione Enter:

cat /boot/grub/grub.cfg

Você verá uma saída muito mais longa e complexa em comparação com /etc/default/grub. Este arquivo contém a configuração detalhada para cada entrada do menu de inicialização, incluindo o caminho do kernel, o caminho initrd e os parâmetros da linha de comando do kernel.

#
## DO NOT EDIT THIS FILE
#
## It is automatically generated by grub-mkconfig using templates
## from /etc/grub.d and settings from /etc/default/grub
#

#### BEGIN /etc/grub.d/00_header ###
...
#### END /etc/grub.d/00_header ###

#### BEGIN /etc/grub.d/05_debian_theme ###
...
#### END /etc/grub.d/05_debian_theme ###

#### BEGIN /etc/grub.d/10_linux ###
...
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' {
 recordfail
 ...
 linux /boot/vmlinuz-*-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro  quiet splash $vt_handoff
 initrd /boot/initrd.img-*-generic
}
...
#### END /etc/grub.d/10_linux ###

#### BEGIN /etc/grub.d/20_linux_xen ###
...
#### END /etc/grub.d/20_linux_xen ###

#### BEGIN /etc/grub.d/30_os-prober ###
...
#### END /etc/grub.d/30_os-prober ###

#### BEGIN /etc/grub.d/30_uefi-firmware ###
...
#### END /etc/grub.d/30_uefi-firmware ###

#### BEGIN /etc/grub.d/40_custom ###
...
#### END /etc/grub.d/40_custom ###

#### BEGIN /etc/grub.d/41_custom ###
...
#### END /etc/grub.d/41_custom ###

Você pode rolar pela saída para ver as diferentes entradas do menu e suas configurações. Procure por linhas que começam com menuentry. Elas definem as opções que aparecem no menu de inicialização do GRUB.

Este arquivo é complexo e você não precisa entender todas as linhas agora. O ponto principal é que /boot/grub/grub.cfg é o arquivo que o GRUB realmente usa, e ele é gerado a partir de /etc/default/grub e scripts em /etc/grub.d.

Clique em Continuar para prosseguir.

Inspecionar os parâmetros do GRUB em dmesg

Nas etapas anteriores, examinamos os arquivos de configuração do GRUB /etc/default/grub e /boot/grub/grub.cfg. Vimos que /etc/default/grub contém a variável GRUB_CMDLINE_LINUX_DEFAULT, que especifica os parâmetros do kernel. Esses parâmetros são passados para o kernel Linux quando ele inicializa.

O comando dmesg é usado para exibir as mensagens do buffer de anel do kernel. Essas mensagens contêm informações sobre o processo de inicialização do sistema, incluindo os parâmetros da linha de comando do kernel que foram usados.

Vamos usar dmesg para ver os parâmetros da linha de comando do kernel que foram passados pelo GRUB durante a inicialização desta máquina virtual.

Digite o seguinte comando no seu terminal e pressione Enter:

dmesg | grep "Kernel command line"

Aqui está uma análise do comando:

  • dmesg: Exibe as mensagens do kernel.
  • |: Este é um pipe. Ele pega a saída do comando à esquerda (dmesg) e a envia como entrada para o comando à direita (grep).
  • grep "Kernel command line": Este comando pesquisa por linhas que contêm a frase exata "Kernel command line" na entrada que recebe (de dmesg).

A saída mostrará a linha de comando do kernel que foi usada para inicializar o sistema. Ele se parecerá com isto:

[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-*-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet splash vt.handoff=7

Você pode ver os parâmetros como quiet e splash, que provavelmente foram definidos na variável GRUB_CMDLINE_LINUX_DEFAULT em /etc/default/grub. Esses parâmetros dizem ao kernel como se comportar durante a inicialização. Por exemplo, quiet reduz a quantidade de saída durante a inicialização, e splash habilita uma tela de inicialização gráfica.

Inspecionar a linha de comando do kernel com dmesg é uma técnica útil para verificar se as alterações na configuração do GRUB estão sendo aplicadas corretamente e para solucionar problemas de inicialização relacionados aos parâmetros do kernel.

Você agora explorou com sucesso a configuração do GRUB e verificou os parâmetros do kernel usando dmesg.

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, aprendemos como verificar se as configurações do GRUB são aplicadas no Linux. Começamos examinando o arquivo de configuração principal do GRUB, /etc/default/grub, usando o comando cat para entender seu conteúdo e os vários parâmetros que controlam o comportamento do GRUB durante o processo de inicialização.

Ao visualizar o arquivo /etc/default/grub, obtivemos informações sobre configurações como a entrada de inicialização padrão, valores de tempo limite e argumentos da linha de comando do kernel. Esta etapa inicial é crucial para entender a configuração do GRUB pretendida antes de verificar sua aplicação.