Experimente o Debian com o kernel do FreeBSD.

O Debian é uma comunidade aberta a diversos projetos interessantes.
Há, pelo menos, 2 projetos que oferecem o sistema operacional combinado a um kernel alternativo.
Já falei sobre o Debian rodando com o kernel GNU/Hurd, antes.
Desta vez, vou mostrar como baixar uma versão que roda sobre o kernel do FreeBSD.
A melhor maneira de testá-la é rodar uma das imagens prontas para o QEMU/KVM.

O sistema não é pesado e dá para você se divertir e ter uma idéia do seu funcionamento.

Neste post, vou analisar uma destas 3 opções:

  1. debian_squeeze_kfreebsd-amd64_standard.qcow2
    — uma opção mais antiga, sem o ambiente gráfico (imagem c/204 Mb).
  2. debian_wheezy_kfreebsd-amd64_desktop.qcow2
    — uma opção mais atual (Debian 7), com o ambiente gráfico (imagem c/1,7 Gb).
  3. debian_wheezy_kfreebsd-amd64_standard.qcow2
    — Debian 7, sem o ambiente gráfico (imagem c/210 Mb).

As imagens estão comprimidas e se expandem até 25 GiB, na medida do necessário.
Os exemplos, que seguem, são baseados na 3a opção.
Se preferir outra, basta adaptá-los ao seu caso.
Use o comando wget para fazer o download ou baixe direto do site (links no final):


wget https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/debian_wheezy_kfreebsd-amd64_standard.qcow2

Feito o download, rode o sistema a partir do QEMU:


qemu-system-x86_64 -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Bem simples, não é?
Para poder usar melhor o sistema, use as seguintes informações:

  • A conta root usa a senha “root” (sem as aspas).
  • A conta user usa a senha “user”.

Para obter um melhor desempenho, ative o KVM:


qemu-system-x86_64 -enable-kvm -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Para suprimir o modo gráfico, coloque o display no modo curses:


qemu-system-x86_64 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Neste caso, pode ser necessário aumentar um pouco (ou maximizar) a janela do seu terminal, para conseguir ver toda a área de trabalho.
Como padrão, a imagem roda com 128 MiB de memória RAM.
Use a opção ‘-m’ do QEMU para ampliar este valor:


qemu-system-x86_64 -m 512 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2


Se você optou por uma das imagens com ambiente gráfico, acima, vai precisar usar uma quantidade maior de memória RAM, claro.
Neste caso, as imagens usam lightDM com o XFCE e 1GiB de memória RAM deve ser mais do que o suficiente.
Se quiser trocar este ambiente, pelo original do Debian (GDM e GNOME), dê os seguintes comandos, dentro da máquina virtual (como superusuário):


update-alternatives --auto x-session-manager

echo /usr/sbin/gdm3 > /etc/X11/default-display-manager

Vale a pena instalar e usar o Debian com o kernel FreeBSD?

Diferente do Hurd, o kernel do FreeBSD é um kernel maduro e bem testado.
Aqui é possível usar todo o ambiente gráfico e usufruir do universo dos repositórios de softwares do Debian.
No lado do servidor, a opção é uma alternativa para quem deseja ficar longe do systemd e/ou evitar as eventuais vulnerabilidades do kernel Linux.
Há, ainda, o glamour de estar mais próximo de executar um kernel semelhante ao usado pela Apple em seus dispositivos.
Do ponto de vista de quem vem do FreeBSD, esta opção “mantém um pé” lá e outro nos vastos repositórios de softwares Debian.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

De onde baixei a versão analisada neste texto: https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/.
Outras versões do Debian kfreebsd: http://jenkins.kfreebsd.eu/jenkins/view/cd/job/debian-cd_jessie-kfreebsd_kfreebsd-amd64/ws/build/.
Debian Mini .ISO (para instalar): http://cdn-fastly.deb.debian.org/debian/dists/jessie-kfreebsd-proposed-updates/main/installer-kfreebsd-amd64/current/images/netboot-10/.
Conheça o Debian GNU/Hurd: https://elias.praciano.com/2017/07/experimente-o-debian-com-o-kernel-gnuhurd-em-uma-maquina-virtual/.

Review do Kernel linux-libre no Samsung Ultra 5

O linux-libre é uma versão do kernel GNU/Linux tradicional, despido de código proprietário — entre outras porcarias obscuras.
Recentemente escrevi sobre como obter e instalar (é super fácil!) uma versão deste kernel. Clique aqui, se tiver curiosidade.
Samsung ultrabook linux
Este post complementa aquele, na medida em que pretende mostrar os possíveis problemas que você pode ter – ou não – com esta opção.

Apesar do título, este artigo não é exatamente um review do kernel e, definitivamente, não é um review de um notebook.

O Samsung Ultra 5 530U3C, como a maioria dos notebooks vendidos no Brasil, vem com alguns dispositivos internos proprietários — que necessitam drivers igualmente proprietários para funcionar.
Na minha experiência, com o kernel 4.12.2-gnu, no Debian 9, apenas a interface de rede wireless teve problemas para funcionar.
Outros dispositivos, que uso com bastante frequência não apresentaram qualquer problema para serem reconhecidos e usados pelo sistema:

  • dispositivo de áudio — tocou meus arquivos de áudio FLAC e MP3 100%.
  • rádio Bluetooth — foi possível reproduzir áudio em caixas de som remotas e fazer transferência de arquivos de um aparelho Android 7.0 Nougat.
    motorola bluetooth connections

Já, para resolver o problema da interface de rede sem fio, o que você precisa é do pacote proprietário ‘firmware-iwlwifi’, que contém os drivers que ela necessita para funcionar.

O ponto, aqui, é ter controle sobre o código não-livre que entra no seu sistema — ou seja, somente o essencial.

A instalação do novo kernel não sobrescreve ou desinstala o kernel presente no seu sistema.
debian kernel options
Como a imagem do GRUB mostra acima, você passa a contar com mais uma opção.
O menu do GRUB, permite a alternância entre todas as opções de kernel presentes no seu sistema.
E, se ficar insatisfeito e quiser desinstalar, o sistema volta o kernel anterior para o padrão do GRUB.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como instalar um kernel 100% livre no seu Linux.

O Linux-libre é um projeto que tem o objetivo de disponibilizar um kernel 100% livre para o sistema operacional GNU/Linux — proporcionando a seus usuários uma lufada de ar ainda mais fresca de liberdade.
Caminha ao lado do projeto oficial do kernel Linux, que você já conhece, sempre mantendo uma versão “filtrada” – ou seja, sem código proprietário.

O Linux-libre é uma versão cuidadosamente modificada do kernel do Linux, do qual são removidos “blobs” binários e trechos de código sob licença proprietária.

Neste post, vou ensinar a instalar um kernel 100% livre (ou libre), na sua distro atual — usando como exemplo o Debian 9 Stretch.
O procedimento pode ser seguido ipsus literis em outras plataformas, baseadas no Debian — como é o caso do Ubuntu, Devuan, Trisquel etc.
Com algumas adaptações, é possível adequar as informações do texto a outras distribuições, claro.
Para quem prefere outra via, é possível instalar uma distro GNU/Linux, dentre as que já fazem uso deste kernel, por padrão. Veja algumas:

  • BLAG.
  • gNewSense.
  • Ututu.
  • Debian — esta não faz uso do kernel Linux-libre. Contudo, no seu ramo principal, ela faz uma filtragem própria, para reduzir a presença de softwares que não são 100% livres – inclusive dentro do kernel.
    Saiba mais sobre aonde encontrar e baixar a sua distro Debian.
  • FreeSlack.

O projeto tem o apoio da FSFLA (Free Software Foundation Latin America) e pode ser adotado por qualquer distro ou usuário.

Outras opções também livres

Não existem motivos razoáveis o suficiente para fornecer computadores ou acessórios que só funcionem com o uso de drivers proprietários.
Se deixar de comprar produtos de informática que só funcionam com algum código proprietário não é opção para você — procure deixar claro o seu inconformismo para o fabricante: via email, nas redes sociais etc.

Manter-se calado e invisível, não vai fazer com que as empresas prestem mais atenção às demandas dos clientes que preferem softwares livres.

Outras opções de kernel livres e menos conhecidas — que você pode usar com o Linux — são o kfreeBSD e o GNU/Hurd.
Sim, o primeiro é o kernel do freeBSD.
O Hurd é um projeto da organização GNU, anterior ao próprio Linux.
Seu objetivo era substituir o kernel do Unix, por uma opção 100% libre, mas o kernel Linux acabou se provando mais viável e é o que nós usamos hoje, nas nossas distribuições.
O kernel GNU/Hurd ainda está em fase experimental.
Por fim, aqui estamos por que o código proprietário conseguiu encontrar meios de se infiltrar…

Como preparar o sistema para receber o kernel linux-libre

Existe o site oficial para baixar a versão mais atual do kernel Linux-libre, mas a maneira mais segura e cômoda é usar o repositório oficial — que fornece o meta-pacote com as devidas atualizações.
O repositório, em questão, contém os .debs do Linux-libre, compilados para as plataformas (x86) 32 e 64-bit.
Para adicionar o repositório, é preciso editar o ‘sources.list’:


sudo apt edit-sources

Acrescente ao final do arquivo a linha:


deb http://linux-libre.fsfla.org/pub/linux-libre/freesh/ freesh main

Use o comando wget para obter a chave gpg com a qual o repositório foi “assinado”:


wget https://jxself.org/gpg.inc 

--2017-07-19 14:40:54--  https://jxself.org/gpg.inc
Resolvendo jxself.org (jxself.org)... 96.66.250.147
Conectando-se a jxself.org (jxself.org)|96.66.250.147|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 5588 (5,5K) 
Salvando em: “gpg.inc”

gpg.inc             100%[===================>]   5,46K  26,3KB/s    in 0,2s    

2017-07-19 14:40:56 (26,3 KB/s) - “gpg.inc” salvo [5588/5588]

Verifique a assinatura gpg:


gpg --with-fingerprint gpg.inc

pub   rsa4096 2013-09-07 [SC]
uid           Jason Self 
uid           Jason Self 
uid           Jason Self 
sub   rsa4096 2013-09-07 [E]

Se tudo correu bem, até agora, os comandos que seguem instruem o gestor de pacotes a confiar na chave gpg que você baixou e removem a cópia local do arquivo gpg.inc, que já não é mais necessária:


sudo apt-key add gpg.inc

OK

rm gpg.inc

Agora, atualize o repositório:


sudo apt update

Se houver atualizações para fazer, faça-as antes de prosseguir:


sudo apt full-upgrade

Agora, já é possível prosseguir com o download e a instalação do kernel.

Como escolher o seu kernel

É interessante investir algum tempo na análise das suas opções e escolher qual o ramo do kernel é mais adequado para você.
Há várias opções de pacotes contendo o kernel “comum” que podem ser instaladas.
Isto pode ser verificado com o comando ‘apt search’:


apt search linux-image

opções de instalação do linux-libre no Debian
O que nos interessa aqui, entretanto, são as opções denominadas “linux-libre”. Veja como encontrar:


apt search linux-libre

Sorting... Pronto
Full Text Search... Pronto
linux-libre/stable 4.12.2 amd64
  This is a virtual package for Linux-libre. It will always depend on the latest version.

linux-libre-4.1/stable 4.1.42 amd64
  This is a virtual package for Linux-libre. It will always depend on the latest version in the 4.1 series.

linux-libre-4.11/stable 4.11.11 amd64
  This is a virtual package for Linux-libre. It will always depend on the latest version in the 4.11 series.

linux-libre-4.12/stable 4.12.2 amd64
  This is a virtual package for Linux-libre. It will always depend on the latest version in the 4.12 series.

linux-libre-4.9/stable 4.9.38 amd64
  This is a virtual package for Linux-libre. It will always depend on the latest version in the 4.9 series.

linux-libre-lts/stable 4.9.38 amd64
  This is a virtual package for Linux-libre. It will always depend on the latest LTS version.

A sua lista vai ser diferente da minha, provavelmente.
Preste atenção à explicação que acompanha cada versão disponível do linux-libre.
Algumas opções de pacotes são LTS, ou seja de suporte prolongado.
Estas serão atualizadas apenas quando sair uma nova versão da série (LTS).
Levando em conta a minha lista, acima, vou escolher uma entre 2 opções:

  • linux-libre — trata-se da primeira opção e vai manter o sistema sempre atualizado com a última versão do kernel.
  • linux-libre-lts — vai manter o sistema sempre atualizado de acordo com a série LTS.

Note que ambos os pacotes são desacompanhados de números de versão — por que será sempre o mais atual disponível naquela série.
Muitas outras opções podem ser encontradas, a depender da distribuição instalada aí e da sua plataforma de hardware.
Fique atento para instalar o pacote correto.
No meu exemplo, vou com esta aqui:


sudo apt install linux-libre
[sudo] senha para justincase: 
Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
The following additional packages will be installed:
  freesh-keyring linux-firmware-image-4.12.2-gnu
  linux-headers-4.12.2-gnu linux-image-4.12.2-gnu
  linux-libc-dev
Os NOVOS pacotes a seguir serão instalados:
  freesh-keyring linux-firmware-image-4.12.2-gnu
  linux-headers-4.12.2-gnu linux-image-4.12.2-gnu
  linux-libc-dev linux-libre
0 pacotes atualizados, 6 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
É preciso baixar 85,1 MB de arquivos.
Depois desta operação, 331 MB adicionais de espaço em disco serão usados.
Você quer continuar? [S/n] 

Se você também usa o libreboot, realize o seguinte procedimento, após a instalação:


cd /boot/grub

sudo ln -s grub.cfg libreboot_grub.cfg

Agora, reinicie o sistema e escolha, no menu GRUB, o kernel com o qual você deseja trabalhar.
O GRUB continuará a mostrar o kernel non-free ou convencional, que você já usava antes.
debian kernel options
E, sim, você pode instalar mais de uma versão de kernel no seu sistema.
Se algo não funcionar, como a placa de interface e rede Wi-Fi, sempre será possível voltar à sua configuração anterior, selecionando a opção que você já sabe que funciona.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

Review do linux-libre no notebook Samsung Ultra 5.

Como atualizar o kernel do Debian, dentro dos limites da segurança

Para quem usa o Debian Stable, pode ser chato ter que lidar com um kernel 4.x, na série inicial, enquanto os amigos já estão usando a série 4.x ou, até mesmo a 5.x.
Por outro lado, você também não quer abrir mão da segurança e da estabilidade do seu sistema.

Quem quer usar aplicativos mais atuais, não deveria usar o Debian Stable, que é tem a proposta de oferecer um ambiente seguro e estável para seus usuários.

Nestes casos, é possível que o Debian Testing ou o Debian Unstable ofereça uma relação entre a estabilidade e a atualidade de seus pacotes de softwares mais interessante.
O Ubuntu também é uma boa opção de sistema operacional GNU/Linux com softwares bem atualizados — e é baseado no Debian Testing.
O Debian Testing é conhecido por oferecer um conjunto de softwares mais atuais, sem abrir (muito) mão da estabilidade.
Com o uso dos backports, é possível ter no seu sistema a mesma versão do kernel, que virá embarcada na próxima versão estável do Debian.
Neste texto, vou mostrar como realizar fácil este procedimento.
Se quiser saber mais sobre algum assunto, clique nos links do post. 😉

Como obter a nova versão do kernel

Comece pela instalação dos backports. Uma maneira bem simplificada de fazer isto, segue abaixo:


echo -e "\n\n# Backports repository\ndeb http://http.debian.net/debian stretch-backports main contrib non-free\n" >> /etc/apt/sources.list

No exemplo, demos o comando adequado ao Debian 9 Stretch, lançado em 2017 e com uma expectativa de suporte (já que é LTS) até 2022.
Se ainda tiver dúvidas, leia o post sobre Como instalar os backports no Debian.
Agora sincronize os repositórios:


apt update 

Só pra lembrar, estes procedimentos requerem privilégios administrativos.
Após o update, já é possível ver as novas versões do kernel disponíveis para instalação no seu sistema:


apt search linux-headers

Adeque o comando, abaixo, à sua opção:


apt install linux-image-4.6.0-1-grsec-686-pae linux-headers-4.6.0-1-grsec-686-pae

Fácil, não é?

Use o dmesg para entender o que está funcionando mal no seu computador

O dmesg ajuda a obter informações, direto do kernel, sobre o que está havendo com o seu sistema.
Com este utilitário, tradicional em sistemas UNIX-like, você irá ter tanto boas, como más notícias.
dmesg show delta
O comando pode ser útil para detectar problemas com drivers e módulos de kernel que não estão funcionando adequadamente. Quando você sabe o que precisa ser “arrumado” no seu sistema, tarefas, como reduzir o tempo de boot podem ser facilitadas.
O dmesg pode dar pistas bem concretas sobre por que sua placa de vídeo ou rede não atende às suas expectativas, por exemplo.
Também uso muito esta ferramenta para acompanhar o suporte do kernel (à medida em que vai sendo atualizado) ao meu hardware.

Como usar o dmesg para obter informações sobre o funcionamento do seu sistema

A ferramenta é muito simples de usar e pode ser acompanhada do comando grep, sempre que você quiser filtrar as informações, para visualizar apenas o que interessa.
Para obter informações sobre erros, vindos da execução do kernel, experimente o seguinte comando:

dmesg | grep -i error

Note que a ferramenta não exige ser executada com privilégios especiais.
Esta característica permite que um usuário comum, sem privilégios administrativos no sistema, possa obter informações sobre seu funcionamento, copiar e colar em uma mensagem para obter ajuda de outros usuários remotamente.
No meu caso, como você pode ver abaixo, temos alguns problemas relacionados ao firmware da minha GPU AMD Topaz XT [Radeon R7 M260/M265].

[    5.120310] amdgpu 0000:04:00.0: Direct firmware load for amdgpu/topaz_mc.bin failed with error -2
[    5.120341] [drm:gmc_v7_0_sw_init [amdgpu]] *ERROR* Failed to load mc firmware!
[    5.120358] [drm:amdgpu_device_init [amdgpu]] *ERROR* sw_init of IP block <gmc_v7_0> failed -2
[    5.120361] amdgpu 0000:04:00.0: Fatal error during GPU init
[    5.120542] amdgpu: probe of 0000:04:00.0 failed with error -2
[ 3460.081234] mce: [Hardware Error]: Machine check events logged
[ 3460.081240] mce: [Hardware Error]: Machine check events logged

Se você usar apenas o comando dmesg, sem parâmetro ou opção alguma, ele irá exibir todas as mensagens do kernel ring buffer.
Por isto, é necessário usar o grep e/ou alguma outra opção, para poder fazer uma investigação mais precisa sobre possíveis problemas que estejam em andamento no seu sistema.
A sua investigação pode continuar, no seu mecanismo de busca favorito, na busca por explicações para as mensagens de erro.

Exemplos de uso do dmesg

Veja alguns exemplos de uso do dmesg que podem ajudar a obter informações sobre o seu hardware ou sobre o sistema operacional.
Use o dmesg para obter a versão do kernel em uso:

dmesg | grep -i "command line"
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.7.0-1-amd64 root=UUID=1bde5861-68d5-4f8b-b759-2def64a9e8dc ro quiet
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.7.0-1-amd64 root=UUID=1bde5861-68d5-4f8b-b759-2def64a9e8dc ro quiet

Como obter informações sobre a arquitetura (32 ou 64 bits) detectada:

dmesg | grep -i "architedmesg | grep -i "architect"

Note que este comando ajuda, inclusive, a detectar a presença do systemd.

[    3.443553] systemd[1]: Detected architecture x86-64.dmesg | grep -i "architect"

Com o uso da opção ‘–userspace’, o utilitário permite ver as ocorrências do kernel, desde o momento em que o userspace ou modo usuário foi carregado.

dmesg --userspace 
[    3.443437] systemd[1]: systemd 231 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    3.443553] systemd[1]: Detected architecture x86-64.
[    3.444484] systemd[1]: Set hostname to <inspiration>.
[    3.677904] systemd[1]: Created slice User and Session Slice.
[    3.677973] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    3.677982] systemd[1]: Reached target Encrypted Volumes.
[    3.678038] systemd[1]: Listening on Journal Audit Socket.
[    3.678046] systemd[1]: Reached target User and Group Name Lookups.
[    3.678070] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    3.678091] systemd[1]: Listening on Journal Socket (/dev/log).
[    3.678108] systemd[1]: Listening on udev Kernel Socket.
[    3.678133] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    3.678149] systemd[1]: Listening on Syslog Socket.
[    3.678168] systemd[1]: Listening on udev Control Socket.
[    3.678177] systemd[1]: Reached target Remote File Systems.
[    3.678251] systemd[1]: Created slice System Slice.
[    3.678262] systemd[1]: Reached target Slices.
[    3.678333] systemd[1]: Created slice system-getty.slice.
[    3.678476] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    3.678503] systemd[1]: Listening on Journal Socket.
[    3.690010] systemd[1]: Mounting Debug File System...
[    3.690418] systemd[1]: Mounting Huge Pages File System...
[    3.690837] systemd[1]: Mounting POSIX Message Queue File System...
[    3.691373] systemd[1]: Starting Journal Service...
[    3.758083] systemd[1]: Starting Set the console keyboard layout...
[    3.758665] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[    3.759199] systemd[1]: Starting Remount Root and Kernel File Systems...
[    3.759877] systemd[1]: Starting Load Kernel Modules...
[    3.822693] systemd[1]: Mounted Debug File System.
[    3.822724] systemd[1]: Mounted POSIX Message Queue File System.
[    3.822736] systemd[1]: Mounted Huge Pages File System.
[    3.822796] systemd[1]: Started Journal Service.
[    3.913397] systemd-journald[1082]: Received request to flush runtime journal from PID 1
[    6.721371] systemd[1]: apt-daily.timer: Adding 7h 26min 30.367128s random time.
[   17.134471] systemd[1]: apt-daily.timer: Adding 42min 23.553328s random time.
[   21.124814] systemd[1]: apt-daily.timer: Adding 51min 47.360901s random time

Para investigar erros e avisos do sistema, use a opção ‘–level’.
Use ‘–level=err’, para ver apenas mensagens de erro emitidas pelo kernel:

dmesg --level=err

Na sua tela, o seguinte resultado, deve ser exibido em cores predominantemente vermelhas:

[    4.600707] iwlwifi 0000:03:00.0: Unsupported splx structure
[    5.120309] amdgpu 0000:04:00.0: firmware: failed to load amdgpu/topaz_mc.bin (-2)
[    5.120311] cik_mc: Failed to load firmware "amdgpu/topaz_mc.bin"
[    5.120341] [drm:gmc_v7_0_sw_init [amdgpu]] *ERROR* Failed to load mc firmware!
[    5.120358] [drm:amdgpu_device_init [amdgpu]] *ERROR* sw_init of IP block <gmc_v7_0> failed -2
[    5.120360] amdgpu 0000:04:00.0: amdgpu_init failed
[    5.120361] amdgpu 0000:04:00.0: Fatal error during GPU init
[    5.120363] [TTM] Memory type 2 has not been initialized

Veja uma imagem do meu terminal, após executar o comando acima:
dmesg kernel errors
Para ver apenas as mensagens de aviso (warnings), use o comando assim:

dmesg --level=warn

Neste caso, o resultado pode ser bem mais extenso.
Você pode combinar os 2 parâmetros, separando-os por vírgulas:

dmesg --level=err,warn

Mensagens de nível crítico podem ser exibidas com o parâmetro ‘crit’:

dmesg --human --level=crit
[out 1 09:56] CPU0: Core temperature above threshold, cpu clock throttled (total events = 1)
[  +0,000001] CPU2: Core temperature above threshold, cpu clock throttled (total events = 1)
[  +0,000001] CPU3: Package temperature above threshold, cpu clock throttled (total events = 1)
[  +0,000002] CPU1: Package temperature above threshold, cpu clock throttled (total events = 1)
[  +0,000002] CPU2: Package temperature above threshold, cpu clock throttled (total events = 1)
[  +0,000006] CPU0: Package temperature above threshold, cpu clock throttled (total events = 1)

Veja todos os níveis de mensagens que você pode usar com a opção ‘–level’:

Parâmetro Descrição
emerg emergengy ou emergência — sistema está inutilizável
alert ação deve ser tomada imediatamente
crit condições críticas
err condições de erro
warn condições de aviso
notice condição normal, mas significativa
info informativo
debug mensagens de nível de depuração

No Linux, estas 2 formas de uso são válidas:
dmesg --level=err
ou
dmesg --level err
Use o que achar melhor.
Você pode restringir a saída a recursos específicos do sistema, com a opção ‘–facility’.
Para obter resultados unicamente sobre os serviços ou daemons em execução no sistema, use-o da seguinte forma:

dmesg --facility daemon 
[    3.443437] systemd[1]: systemd 231 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    3.443553] systemd[1]: Detected architecture x86-64.
[    3.444484] systemd[1]: Set hostname to <inspiration>.
[    3.677904] systemd[1]: Created slice User and Session Slice.
[    3.677973] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    3.677982] systemd[1]: Reached target Encrypted Volumes.

...

[    3.822693] systemd[1]: Mounted Debug File System.
[    3.822724] systemd[1]: Mounted POSIX Message Queue File System.
[    3.822736] systemd[1]: Mounted Huge Pages File System.
[    3.822796] systemd[1]: Started Journal Service.
[    6.721371] systemd[1]: apt-daily.timer: Adding 7h 26min 30.367128s random time.
[   17.134471] systemd[1]: apt-daily.timer: Adding 42min 23.553328s random time.
[   21.124814] systemd[1]: apt-daily.timer: Adding 51min 47.360901s random time.

Se você está com o computador ligado há muito tempo, o dmesg pode ter uma quantidade excessiva de informações para exibir. Muitas delas, podem nem fazer mais sentido. Para limpar o buffer de mensagens do dmesg, use a opção ‘–clear’ (c/privilégios administrativos):

dmesg --clear