Comment vérifier si une fonctionnalité du noyau (kernel) est prise en charge sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à vérifier si une fonctionnalité du noyau (kernel) est prise en charge sous Linux. Cela implique d'explorer différentes méthodes pour identifier les fonctionnalités du processeur (CPU) et vérifier les configurations du noyau.

Tout d'abord, vous utiliserez la commande cat /proc/cpuinfo pour examiner les informations détaillées sur votre processeur, notamment son modèle, sa vitesse et les fonctionnalités prises en charge, qui sont listées sous forme d'indicateurs (flags). Ensuite, vous apprendrez à vérifier la configuration du noyau à l'aide de zcat /proc/config.gz. Enfin, vous inspecterez les journaux des fonctionnalités dans dmesg.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/CompressionandArchivingGroup -.-> linux/gzip("Gzip") subgraph Lab Skills linux/cat -.-> lab-558863{{"Comment vérifier si une fonctionnalité du noyau (kernel) est prise en charge sous Linux"}} linux/grep -.-> lab-558863{{"Comment vérifier si une fonctionnalité du noyau (kernel) est prise en charge sous Linux"}} linux/gzip -.-> lab-558863{{"Comment vérifier si une fonctionnalité du noyau (kernel) est prise en charge sous Linux"}} end

Vérifier les fonctionnalités du processeur (CPU) avec cat /proc/cpuinfo

Dans cette étape, nous allons explorer comment vérifier les fonctionnalités de votre processeur à l'aide de la commande cat /proc/cpuinfo. Cette commande affiche des informations détaillées sur chaque cœur de processeur de votre système, notamment son modèle, sa vitesse et les fonctionnalités prises en charge.

Le répertoire /proc est un système de fichiers virtuel qui fournit des informations sur les processus et le matériel du système. Le fichier /proc/cpuinfo contient des informations sur le processeur.

Pour afficher les informations sur le processeur, ouvrez votre terminal. Vous pouvez trouver l'icône Xfce Terminal sur le côté gauche de votre bureau.

Maintenant, tapez la commande suivante et appuyez sur Entrée :

cat /proc/cpuinfo

Cette commande affichera de nombreuses informations. Décortiquons certains des champs clés :

  • processor : Il s'agit du numéro de processeur logique. Dans un système multi-cœur, chaque cœur aura son propre numéro de processeur.
  • vendor_id : Cela identifie le fabricant du processeur (par exemple, GenuineIntel ou AuthenticAMD).
  • cpu family : Cela indique la famille de processeur.
  • model name : Cela fournit une description plus détaillée du modèle de processeur. Par exemple : Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz.
  • cpu MHz : Cela indique la vitesse d'horloge du processeur en mégahertz (MHz).
  • cache size : Cela indique la taille du cache du processeur.
  • flags : Il s'agit d'une liste de fonctionnalités du processeur, telles que fpu, vme, de, sse2, avx2, et bien d'autres. Ces indicateurs (flags) indiquent les ensembles d'instructions et les capacités prises en charge par le processeur.

La sortie ressemblera à ceci (les détails exacts varieront en fonction de votre processeur) :

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

Vous pouvez faire défiler la sortie pour voir tous les détails.

Ces informations peuvent être utiles pour résoudre des problèmes de performance, identifier les limitations matérielles ou simplement comprendre les capacités de votre système.

Vérifier la configuration du noyau (kernel) avec zcat /proc/config.gz

Dans cette étape, nous allons apprendre à vérifier la configuration du noyau à l'aide de la commande zcat /proc/config.gz. La configuration du noyau détermine quelles fonctionnalités et modules sont intégrés au noyau.

Le fichier /proc/config.gz contient la configuration du noyau, mais il est généralement compressé avec gzip. Nous utiliserons zcat pour décompresser et afficher le contenu de ce fichier.

Pour afficher la configuration du noyau, ouvrez votre terminal.

Maintenant, tapez la commande suivante et appuyez sur Entrée :

zcat /proc/config.gz

Cette commande affichera la configuration du noyau. C'est une longue liste d'options, chacune commençant par CONFIG_.

La sortie ressemblera à ceci (les détails exacts varieront en fonction de la configuration de votre noyau) :

#
## 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) ...

Vous pouvez rechercher des options spécifiques à l'aide de grep. Par exemple, pour vérifier si l'option CONFIG_EXT4_FS est activée, vous pouvez utiliser la commande suivante :

zcat /proc/config.gz | grep CONFIG_EXT4_FS

Si l'option est activée, vous verrez une ligne comme celle-ci :

CONFIG_EXT4_FS=y

Si l'option est désactivée, vous pourriez voir une ligne comme celle-ci :

## CONFIG_EXT4_FS is not set

Ces informations peuvent être utiles pour comprendre comment votre noyau est configuré et pour résoudre les problèmes liés à des fonctionnalités spécifiques du noyau.

Inspecter les journaux de fonctionnalités avec dmesg

Dans cette étape, nous allons apprendre à inspecter les journaux de fonctionnalités à l'aide de la commande dmesg. dmesg affiche le tampon de messages du noyau (kernel), qui contient des informations sur la détection du matériel, l'initialisation des pilotes et d'autres événements système. C'est un outil précieux pour résoudre les problèmes liés au matériel.

Pour afficher le tampon de messages du noyau, ouvrez votre terminal.

Maintenant, tapez la commande suivante et appuyez sur Entrée :

dmesg

Cette commande affichera de nombreuses informations. La sortie est un journal chronologique des messages du noyau.

La sortie ressemblera à ceci (les détails exacts varieront en fonction de votre système) :

[    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
...

Vous pouvez filtrer la sortie à l'aide de grep pour rechercher des mots-clés spécifiques. Par exemple, pour rechercher les messages liés aux périphériques USB, vous pouvez utiliser la commande suivante :

dmesg | grep USB

Cela vous montrera uniquement les lignes contenant le mot "USB".

Vous pouvez également utiliser dmesg pour rechercher les messages d'erreur. Par exemple, pour rechercher les messages contenant le mot "error", vous pouvez utiliser la commande suivante :

dmesg | grep error

En inspectant la sortie de dmesg, vous pouvez obtenir des informations précieuses sur le comportement du matériel et des pilotes de votre système.

Résumé

Dans ce laboratoire (lab), nous avons exploré comment vérifier les fonctionnalités du processeur (CPU) à l'aide de la commande cat /proc/cpuinfo. Cette commande accède au fichier /proc/cpuinfo, un fichier virtuel dans le répertoire /proc, pour afficher des informations détaillées sur chaque cœur de processeur, notamment son fournisseur, le nom du modèle, la fréquence d'horloge, la taille du cache et les fonctionnalités prises en charge.

En examinant la sortie de cat /proc/cpuinfo, plus précisément le champ flags, nous pouvons identifier les ensembles d'instructions et les capacités prises en charge par le processeur, telles que fpu, vme, de, sse2 et avx2. Cela nous permet de déterminer si une fonctionnalité spécifique du processeur est présente et activée.