Introdução
Neste laboratório, você aprenderá como verificar se o buffer de anel do kernel (kernel ring buffer) está ativo no Linux. O buffer de anel do kernel é um componente vital para entender eventos do sistema e solucionar problemas. Você explorará três métodos para acessar e inspecionar seu conteúdo: usando o comando dmesg para visualizar o buffer diretamente, verificando sua presença e conteúdo através do arquivo /proc/kmsg, e, finalmente, utilizando journalctl para examinar os logs do kernel gerenciados pelo journald do systemd. Essas etapas fornecerão habilidades práticas para monitorar e analisar mensagens do kernel em seu sistema Linux.
Verificar o buffer com dmesg
Nesta etapa, você aprenderá como usar o comando dmesg para visualizar o buffer de anel do kernel. O buffer de anel do kernel é uma área especial na memória onde o kernel Linux armazena mensagens sobre hardware, drivers de dispositivos e eventos do sistema. Essas mensagens são cruciais para solucionar problemas e entender o que está acontecendo em um nível baixo no seu sistema.
Pense no buffer de anel do kernel como um livro de registro para o kernel. Quando algo importante acontece, como um dispositivo sendo detectado ou um erro ocorrendo, o kernel escreve uma mensagem neste buffer. dmesg é a ferramenta que você usa para ler essas mensagens.
Abra seu terminal se ele ainda não estiver aberto. Você pode fazer isso clicando no ícone Xfce Terminal no lado esquerdo da sua área de trabalho.
Agora, digite o seguinte comando e pressione Enter:
dmesg
Você verá uma grande quantidade de saída rolando pelo seu terminal. Este é o conteúdo do buffer de anel do kernel. A saída pode ser semelhante a esta (o conteúdo exato variará dependendo do seu sistema e de quanto tempo ele está em execução):
[ 0.000000] Linux version 5.15.0-xx-generic (buildd@lcy02-amd64-xx) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #xx-Ubuntu SMP Tue Feb 20 15:48:58 UTC 2024
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-xx-generic root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro console=ttyS0,115200
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
...
[ 10.123456] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[ 10.567890] usb 1-1: New USB device found, idVendor=xxxx, idProduct=xxxx
[ 10.567890] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
...
Os timestamps no início de cada linha indicam o tempo decorrido desde que o sistema foi inicializado.
Como a saída pode ser muito longa, é frequentemente útil direcionar a saída de dmesg para um paginador como less ou more. Isso permite que você role pela saída página por página.
Experimente este comando:
dmesg | less
Agora você pode usar as setas para cima e para baixo para rolar e pressionar q para sair do less.
Você também pode filtrar a saída de dmesg usando grep para pesquisar palavras-chave específicas. Por exemplo, para ver mensagens relacionadas a dispositivos USB, você pode usar:
dmesg | grep -i usb
A opção -i torna a pesquisa insensível a maiúsculas e minúsculas.
Usar dmesg é uma habilidade fundamental para diagnosticar problemas de hardware e entender os processos de inicialização do sistema no Linux.
Clique em Continuar para prosseguir para a próxima etapa.
Verificar o buffer em /proc/kmsg
Na etapa anterior, você usou o comando dmesg para visualizar o buffer de anel do kernel. Agora, vamos explorar de onde dmesg obtém suas informações. O buffer de anel do kernel é exposto como um arquivo virtual no sistema de arquivos /proc, especificamente em /proc/kmsg.
O sistema de arquivos /proc é um sistema de arquivos especial no Linux que fornece informações sobre processos e outras informações do sistema. É uma maneira do kernel se comunicar com programas do espaço do usuário. Os arquivos em /proc não são arquivos reais no disco; eles são gerados em tempo real pelo kernel quando você os acessa.
O arquivo /proc/kmsg contém as mesmas mensagens do kernel que dmesg exibe. No entanto, ler diretamente de /proc/kmsg é um pouco diferente. dmesg processa e formata a saída para facilitar a leitura, enquanto ler /proc/kmsg diretamente fornece as mensagens brutas.
Vamos tentar ler o conteúdo de /proc/kmsg usando o comando cat.
Abra seu terminal se ele ainda não estiver aberto.
Digite o seguinte comando e pressione Enter:
cat /proc/kmsg
Você pode ver alguma saída, mas pode não ser tão fácil de ler quanto a saída de dmesg. Além disso, ler /proc/kmsg pode, às vezes, bloquear se não houver novas mensagens, ou pode mostrar mensagens que já foram lidas.
<level>message
<level>message
...
A parte <level> indica o nível de log da mensagem (por exemplo, crítico, erro, aviso, informação, depuração).
Embora você possa ler /proc/kmsg diretamente, dmesg é a ferramenta padrão e recomendada para visualizar o buffer de anel do kernel porque fornece melhor formatação e opções de filtragem. Entender que /proc/kmsg é a fonte ajuda você a entender como dmesg funciona por dentro.
Para a maioria dos propósitos práticos, você usará dmesg em vez de ler /proc/kmsg diretamente. Esta etapa serve principalmente para mostrar a fonte subjacente da saída de dmesg.
Clique em Continuar para passar para a próxima etapa, onde veremos um sistema de log mais moderno.
Inspecionar logs com journalctl
Nas etapas anteriores, você aprendeu sobre o buffer de anel do kernel e como visualizar seu conteúdo usando dmesg. Embora dmesg seja ótimo para mensagens do kernel, sistemas Linux modernos usam um sistema de log mais abrangente chamado systemd-journald. O comando journalctl é a principal ferramenta para interagir com o journal do systemd-journald.
systemd-journald coleta mensagens de log de várias fontes, incluindo o kernel (como as mensagens que você viu com dmesg), serviços do sistema, aplicativos e até mesmo a saída padrão e o erro padrão de processos. Ele armazena esses logs em um formato estruturado e indexado, tornando mais fácil pesquisar e filtrar mensagens.
Vamos explorar o comando journalctl.
Abra seu terminal se ele ainda não estiver aberto.
Digite o seguinte comando e pressione Enter:
journalctl
Este comando exibirá todas as mensagens de log coletadas pelo systemd-journald. Semelhante ao dmesg, a saída pode ser muito longa e normalmente é direcionada a um paginador como less automaticamente.
-- Journal begins at Tue 2024-07-23 10:00:00 UTC, ends at Tue 2024-07-23 10:30:00 UTC. --
Jul 23 10:00:01 hostname systemd[1]: Starting Network Manager...
Jul 23 10:00:02 hostname kernel: Linux version 5.15.0-xx-generic (...)
Jul 23 10:00:03 hostname systemd[1]: Started Network Manager.
Jul 23 10:00:04 hostname systemd[1]: Starting OpenSSH server daemon...
...
Você pode usar as setas para rolar e pressionar q para sair do paginador.
journalctl tem muitas opções para filtrar logs. Aqui estão alguns exemplos:
Para ver apenas mensagens do kernel (semelhante a dmesg):
journalctl -k
Para ver logs de um serviço específico, por exemplo, o serviço SSH:
journalctl -u ssh.service
Para ver logs desde um horário específico, por exemplo, desde "hoje":
journalctl --since "today"
Para ver os logs mais recentes e acompanhar novas mensagens à medida que chegam (como tail -f):
journalctl -f
Pressione Ctrl+C para sair do comando journalctl -f.
journalctl é uma ferramenta poderosa para administração e solução de problemas do sistema. Ele fornece um local centralizado para logs e opções flexíveis para visualizá-los e filtrá-los.
Experimente algumas das opções journalctl em seu terminal para ver como elas afetam a saída.
Clique em Continuar para concluir este laboratório.
Resumo
Neste laboratório, você aprendeu como verificar se o buffer de anel do kernel está ativo no Linux. Você começou usando o comando dmesg para visualizar o conteúdo do buffer de anel do kernel, que armazena mensagens importantes sobre hardware, drivers de dispositivos e eventos do sistema. Você viu como dmesg exibe essas mensagens com timestamps (carimbos de data/hora), fornecendo um log de baixo nível da atividade do sistema.
Você também aprendeu que a saída de dmesg pode ser extensa e que direcioná-la para um paginador como less ou more é uma técnica útil para navegar na saída. Esta etapa inicial demonstrou o método principal para acessar o conteúdo do buffer de anel do kernel e entender seu papel no monitoramento e solução de problemas do sistema.



