Cómo comprobar si una característica del kernel es compatible en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo comprobar si una característica del kernel (núcleo) es compatible con Linux. Esto implica explorar diferentes métodos para identificar las características de la CPU y verificar la configuración del kernel.

Primero, utilizará el comando cat /proc/cpuinfo para examinar información detallada sobre su CPU, incluyendo su modelo, velocidad y características compatibles, que se enumeran como "flags" (marcas). A continuación, aprenderá cómo verificar la configuración del kernel utilizando zcat /proc/config.gz. Finalmente, inspeccionará los registros de características en dmesg.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/CompressionandArchivingGroup -.-> linux/gzip("Gzip") subgraph Lab Skills linux/cat -.-> lab-558863{{"Cómo comprobar si una característica del kernel es compatible en Linux"}} linux/grep -.-> lab-558863{{"Cómo comprobar si una característica del kernel es compatible en Linux"}} linux/gzip -.-> lab-558863{{"Cómo comprobar si una característica del kernel es compatible en Linux"}} end

Verificar las características de la CPU con cat /proc/cpuinfo

En este paso, exploraremos cómo verificar las características de su CPU utilizando el comando cat /proc/cpuinfo. Este comando muestra información detallada sobre cada núcleo de CPU en su sistema, incluyendo su modelo, velocidad y características compatibles.

El directorio /proc es un sistema de archivos virtual que proporciona información sobre los procesos y el hardware del sistema. El archivo /proc/cpuinfo contiene información sobre la CPU.

Para ver la información de la CPU, abra su terminal. Puede encontrar el icono de Xfce Terminal en el lado izquierdo de su escritorio.

Ahora, escriba el siguiente comando y presione Enter:

cat /proc/cpuinfo

Este comando generará una gran cantidad de información. Analicemos algunos de los campos clave:

  • processor: Este es el número de procesador lógico. En un sistema de múltiples núcleos, cada núcleo tendrá su propio número de procesador.
  • vendor_id: Esto identifica al fabricante de la CPU (por ejemplo, GenuineIntel o AuthenticAMD).
  • cpu family: Esto indica la familia de la CPU.
  • model name: Esto proporciona una descripción más detallada del modelo de la CPU. Por ejemplo: Intel(R) Core(TM) i7 - 8700K CPU @ 3.70GHz.
  • cpu MHz: Esto muestra la velocidad de reloj de la CPU en megahercios (MHz).
  • cache size: Esto indica el tamaño de la caché de la CPU.
  • flags: Esta es una lista de características de la CPU, como fpu, vme, de, sse2, avx2 y muchas otras. Estas "flags" (marcas) indican los conjuntos de instrucciones y capacidades compatibles con la CPU.

La salida se verá algo así (los detalles exactos variarán según su 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

Puede desplazarse por la salida para ver todos los detalles.

Esta información puede ser útil para solucionar problemas de rendimiento, identificar limitaciones del hardware o simplemente entender las capacidades de su sistema.

Verificar la configuración del kernel con zcat /proc/config.gz

En este paso, aprenderemos cómo verificar la configuración del kernel utilizando el comando zcat /proc/config.gz. La configuración del kernel determina qué características y módulos se integran en el kernel.

El archivo /proc/config.gz contiene la configuración del kernel, pero generalmente está comprimido con gzip. Utilizaremos zcat para descomprimir y ver el contenido de este archivo.

Para ver la configuración del kernel, abra su terminal.

Ahora, escriba el siguiente comando y presione Enter:

zcat /proc/config.gz

Este comando mostrará la configuración del kernel. Es una larga lista de opciones, cada una comenzando con CONFIG_.

La salida se verá algo así (los detalles exactos variarán según la configuración de su 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) ...

Puede buscar opciones específicas utilizando grep. Por ejemplo, para comprobar si la opción CONFIG_EXT4_FS está habilitada, puede utilizar el siguiente comando:

zcat /proc/config.gz | grep CONFIG_EXT4_FS

Si la opción está habilitada, verá una línea como esta:

CONFIG_EXT4_FS=y

Si la opción está deshabilitada, es posible que vea una línea como esta:

## CONFIG_EXT4_FS is not set

Esta información puede ser útil para entender cómo está configurado su kernel y para solucionar problemas relacionados con características específicas del kernel.

Inspeccionar los registros de características en dmesg

En este paso, aprenderemos cómo inspeccionar los registros de características utilizando el comando dmesg. dmesg muestra el buffer de mensajes del kernel, que contiene información sobre la detección de hardware, la inicialización de controladores y otros eventos del sistema. Es una herramienta valiosa para solucionar problemas relacionados con el hardware.

Para ver el buffer de mensajes del kernel, abra su terminal.

Ahora, escriba el siguiente comando y presione Enter:

dmesg

Este comando generará una gran cantidad de información. La salida es un registro cronológico de los mensajes del kernel.

La salida se verá algo así (los detalles exactos variarán según su 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
...

Puede filtrar la salida utilizando grep para buscar palabras clave específicas. Por ejemplo, para buscar mensajes relacionados con dispositivos USB, puede utilizar el siguiente comando:

dmesg | grep USB

Esto mostrará solo las líneas que contengan la palabra "USB".

También puede utilizar dmesg para buscar mensajes de error. Por ejemplo, para buscar mensajes que contengan la palabra "error", puede utilizar el siguiente comando:

dmesg | grep error

Al inspeccionar la salida de dmesg, puede obtener información valiosa sobre el comportamiento del hardware y los controladores de su sistema.

Resumen

En este laboratorio, exploramos cómo verificar las características de la CPU utilizando el comando cat /proc/cpuinfo. Este comando accede al archivo /proc/cpuinfo, un archivo virtual dentro del directorio /proc, para mostrar información detallada sobre cada núcleo de CPU, incluyendo su proveedor, nombre del modelo, velocidad de reloj, tamaño de caché y características admitidas.

Al examinar la salida de cat /proc/cpuinfo, específicamente el campo flags, podemos identificar los conjuntos de instrucciones y capacidades admitidas por la CPU, como fpu, vme, de, sse2 y avx2. Esto nos permite determinar si una característica específica de la CPU está presente y habilitada.