Introdução
Neste laboratório, você aprenderá como verificar se um recurso do kernel é suportado no Linux. Isso envolve a exploração de diferentes métodos para identificar recursos da CPU e verificar as configurações do kernel.
Primeiramente, você usará o comando cat /proc/cpuinfo para examinar informações detalhadas sobre sua CPU, incluindo seu modelo, velocidade e recursos suportados, que são listados como flags (bandeiras). Em seguida, você aprenderá como verificar a configuração do kernel usando zcat /proc/config.gz. Por fim, você inspecionará os logs de recursos em dmesg.
Verificar os recursos da CPU com cat /proc/cpuinfo
Nesta etapa, exploraremos como verificar os recursos da sua CPU usando o comando cat /proc/cpuinfo. Este comando exibe informações detalhadas sobre cada núcleo da CPU em seu sistema, incluindo seu modelo, velocidade e recursos suportados.
O diretório /proc é um sistema de arquivos virtual que fornece informações sobre os processos e o hardware do sistema. O arquivo /proc/cpuinfo contém informações sobre a CPU.
Para visualizar as informações da CPU, abra seu terminal. Você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.
Agora, digite o seguinte comando e pressione Enter:
cat /proc/cpuinfo
Este comando exibirá muitas informações. Vamos detalhar alguns dos campos-chave:
processor: Este é o número do processador lógico. Em um sistema multi-core, cada núcleo terá seu próprio número de processador.vendor_id: Isso identifica o fabricante da CPU (por exemplo,GenuineIntelouAuthenticAMD).cpu family: Isso indica a família da CPU.model name: Isso fornece uma descrição mais detalhada do modelo da CPU. Por exemplo:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz.cpu MHz: Isso mostra a velocidade do clock da CPU em megahertz (MHz).cache size: Isso indica o tamanho do cache da CPU.flags: Esta é uma lista de recursos da CPU, comofpu,vme,de,sse2,avx2e muitos outros. Essas flags indicam os conjuntos de instruções e as capacidades suportadas pela CPU.
A saída terá uma aparência semelhante a esta (os detalhes exatos variarão dependendo da sua CPU):
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
stepping : 10
microcode : 0xca
cpu MHz : 3696.062
cache size : 12288 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm_syscall invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts md_clear flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa
bogomips : 7392.12
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
Você pode rolar pela saída para ver todos os detalhes.
Essas informações podem ser úteis para solucionar problemas de desempenho, identificar limitações de hardware ou simplesmente entender as capacidades do seu sistema.
Verificar a configuração do kernel com zcat /proc/config.gz
Nesta etapa, aprenderemos como verificar a configuração do kernel usando o comando zcat /proc/config.gz. A configuração do kernel determina quais recursos e módulos são integrados ao kernel.
O arquivo /proc/config.gz contém a configuração do kernel, mas geralmente é compactado usando gzip. Usaremos zcat para descompactar e visualizar o conteúdo deste arquivo.
Para visualizar a configuração do kernel, abra seu terminal.
Agora, digite o seguinte comando e pressione Enter:
zcat /proc/config.gz
Este comando exibirá a configuração do kernel. É uma longa lista de opções, cada uma começando com CONFIG_.
A saída terá uma aparência semelhante a esta (os detalhes exatos variarão dependendo da sua configuração do kernel):
#
## Automatically generated file; DO NOT EDIT.
## Linux/x86_64 5.15.0-76-generic Kernel Configuration
#
CONFIG_64=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_PPC_MM_NATIVE=n
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
CONFIG_ARCH_FORTIFY_SOURCE_STRIPPED=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_ARCH_SPINLOCK=y
CONFIG_HAVE_ARCH_SPINLOCK_UNLOCKED=y
CONFIG_HAVE_ARCH_RWLOCK=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_HAVE_ARCH_EFFICIENT_UNALIGNED=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
CONFIG_HAVE_ARCH_USERFAULTFD_WP=y
CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y
CONFIG_HAVE_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_HAVE_MIN_ALIGNMENT=y
CONFIG_CC_IS_Clang=n
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y
... (more configuration options) ...
Você pode pesquisar opções específicas usando grep. Por exemplo, para verificar se a opção CONFIG_EXT4_FS está habilitada, você pode usar o seguinte comando:
zcat /proc/config.gz | grep CONFIG_EXT4_FS
Se a opção estiver habilitada, você verá uma linha como esta:
CONFIG_EXT4_FS=y
Se a opção estiver desabilitada, você poderá ver uma linha como esta:
## CONFIG_EXT4_FS is not set
Essas informações podem ser úteis para entender como seu kernel está configurado e para solucionar problemas relacionados a recursos específicos do kernel.
Inspecionar logs de recursos no dmesg
Nesta etapa, aprenderemos como inspecionar logs de recursos usando o comando dmesg. dmesg exibe o buffer de mensagens do kernel, que contém informações sobre a detecção de hardware, inicialização de drivers e outros eventos do sistema. É uma ferramenta valiosa para solucionar problemas relacionados ao hardware.
Para visualizar o buffer de mensagens do kernel, abra seu terminal.
Agora, digite o seguinte comando e pressione Enter:
dmesg
Este comando exibirá muitas informações. A saída é um log cronológico das mensagens do kernel.
A saída terá uma aparência semelhante a esta (os detalhes exatos variarão dependendo do seu sistema):
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 5.15.0-76-generic (buildd@lcy02-amd64-078) (gcc (Ubuntu 9.4.0-1ubuntu1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #83-Ubuntu SMP Thu Jun 15 19:16:42 UTC 2023
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-76-generic root=UUID=... ro
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Hygon HygonGenuine
[ 0.000000] Centaur CentaurHauls
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x1: 'x87 floating point registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x2: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x4: 'AVX registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0xd: 'AVX-512 opmask, upper bytes of ZMM0-ZMM15, EVEX encoded data ZMM0-ZMM15'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0xe: 'AVX-512 hi256 zmm, opmask registers ZMM16-ZMM31'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x12: 'Tile registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 832
[ 0.000000] x86/fpu: xstate_offset[d]: 1408, xstate_sizes[d]: 512
[ 0.000000] x86/fpu: xstate_offset[e]: 1920, xstate_sizes[e]: 512
[ 0.000000] x86/fpu: xstate_offset[12]: 2432, xstate_sizes[12]: 1664
[ 0.000000] x86/fpu: Enabled xstate features 0x13, context size is 4096 bytes, using 'compacted' format.
[ 0.000000] signal: max sigframe size: 9216
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
Você pode filtrar a saída usando grep para pesquisar palavras-chave específicas. Por exemplo, para pesquisar mensagens relacionadas a dispositivos USB, você pode usar o seguinte comando:
dmesg | grep USB
Isso mostrará apenas as linhas que contêm a palavra "USB".
Você também pode usar dmesg para verificar mensagens de erro. Por exemplo, para pesquisar mensagens contendo a palavra "error", você pode usar o seguinte comando:
dmesg | grep error
Ao inspecionar a saída de dmesg, você pode obter informações valiosas sobre o comportamento do hardware e dos drivers do seu sistema.
Resumo
Neste laboratório, exploramos como verificar os recursos da CPU usando o comando cat /proc/cpuinfo. Este comando acessa o arquivo /proc/cpuinfo, um arquivo virtual dentro do diretório /proc, para exibir informações detalhadas sobre cada núcleo da CPU, incluindo seu fornecedor, nome do modelo, velocidade do clock, tamanho do cache e recursos suportados.
Ao examinar a saída de cat /proc/cpuinfo, especificamente o campo flags, podemos identificar os conjuntos de instruções e capacidades suportados pela CPU, como fpu, vme, de, sse2 e avx2. Isso nos permite determinar se um recurso específico da CPU está presente e habilitado.



