Как проверить, поддерживается ли функция ядра в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как проверить, поддерживается ли определенная функция ядра в Linux. Это включает исследование различных методов для определения характеристик процессора и проверки конфигурации ядра.

Сначала вы используете команду cat /proc/cpuinfo для изучения подробной информации о вашем процессоре, включая его модель, скорость и поддерживаемые функции, которые перечислены как флаги. Затем вы узнаете, как проверить конфигурацию ядра с помощью команды zcat /proc/config.gz. Наконец, вы будете изучать журналы функций в dmesg.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/CompressionandArchivingGroup -.-> linux/gzip("Gzip") subgraph Lab Skills linux/cat -.-> lab-558863{{"Как проверить, поддерживается ли функция ядра в Linux"}} linux/grep -.-> lab-558863{{"Как проверить, поддерживается ли функция ядра в Linux"}} linux/gzip -.-> lab-558863{{"Как проверить, поддерживается ли функция ядра в Linux"}} end

Проверка характеристик процессора с помощью команды cat /proc/cpuinfo

На этом этапе мы рассмотрим, как проверить характеристики вашего процессора с помощью команды cat /proc/cpuinfo. Эта команда отображает подробную информацию о каждом ядре процессора в вашей системе, включая его модель, скорость и поддерживаемые функции.

Директория /proc представляет собой виртуальную файловую систему, которая предоставляет информацию о процессах системы и оборудовании. Файл /proc/cpuinfo содержит информацию о процессоре.

Чтобы просмотреть информацию о процессоре, откройте терминал. Вы можете найти значок Xfce Terminal слева на рабочем столе.

Теперь введите следующую команду и нажмите Enter:

cat /proc/cpuinfo

Эта команда выведет большое количество информации. Разберем некоторые ключевые поля:

  • processor: Это номер логического процессора. В многоядерной системе каждое ядро имеет свой собственный номер процессора.
  • vendor_id: Это идентификатор производителя процессора (например, GenuineIntel или AuthenticAMD).
  • cpu family: Это указывает семейство процессора.
  • model name: Это дает более подробное описание модели процессора. Например: Intel(R) Core(TM) i7 - 8700K CPU @ 3.70GHz.
  • cpu MHz: Это показывает тактовую частоту процессора в мегагерцах (МГц).
  • cache size: Это указывает размер кэша процессора.
  • flags: Это список характеристик процессора, таких как fpu, vme, de, sse2, avx2 и многие другие. Эти флаги указывают на наборы инструкций и возможности, поддерживаемые процессором.

Вывод будет выглядеть приблизительно так (точные детали могут отличаться в зависимости от вашего процессора):

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

Вы можете прокрутить вывод, чтобы увидеть все детали.

Эта информация может быть полезна для устранения проблем с производительностью, определения ограничений оборудования или просто для понимания возможностей вашей системы.

Проверка конфигурации ядра с помощью команды zcat /proc/config.gz

На этом этапе мы узнаем, как проверить конфигурацию ядра с помощью команды zcat /proc/config.gz. Конфигурация ядра определяет, какие функции и модули встроены в ядро.

Файл /proc/config.gz содержит конфигурацию ядра, но обычно он сжат с использованием gzip. Мы будем использовать zcat для распаковки и просмотра содержимого этого файла.

Чтобы просмотреть конфигурацию ядра, откройте терминал.

Теперь введите следующую команду и нажмите Enter:

zcat /proc/config.gz

Эта команда выведет конфигурацию ядра. Это длинный список параметров, каждый из которых начинается с CONFIG_.

Вывод будет выглядеть приблизительно так (точные детали могут отличаться в зависимости от конфигурации вашего ядра):

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

Вы можете искать конкретные параметры с помощью grep. Например, чтобы проверить, включен ли параметр CONFIG_EXT4_FS, вы можете использовать следующую команду:

zcat /proc/config.gz | grep CONFIG_EXT4_FS

Если параметр включен, вы увидите строку, похожую на следующую:

CONFIG_EXT4_FS=y

Если параметр отключен, вы, возможно, увидите строку, похожую на следующую:

## CONFIG_EXT4_FS is not set

Эта информация может быть полезна для понимания того, как настроено ваше ядро, и для устранения проблем, связанных с определенными функциями ядра.

Просмотр журналов функций с помощью команды dmesg

На этом этапе мы узнаем, как просматривать журналы функций с помощью команды dmesg. Команда dmesg отображает буфер сообщений ядра, который содержит информацию о обнаружении аппаратного обеспечения, инициализации драйверов и других системных событиях. Это ценный инструмент для устранения проблем, связанных с аппаратным обеспечением.

Чтобы просмотреть буфер сообщений ядра, откройте терминал.

Теперь введите следующую команду и нажмите Enter:

dmesg

Эта команда выведет большое количество информации. Вывод представляет собой хронологический журнал сообщений ядра.

Вывод будет выглядеть приблизительно так (точные детали могут отличаться в зависимости от вашей системы):

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

Вы можете фильтровать вывод с помощью grep, чтобы искать конкретные ключевые слова. Например, чтобы найти сообщения, связанные с USB-устройствами, вы можете использовать следующую команду:

dmesg | grep USB

Эта команда покажет только строки, содержащие слово "USB".

Вы также можете использовать dmesg для поиска сообщений об ошибках. Например, чтобы найти сообщения, содержащие слово "error", вы можете использовать следующую команду:

dmesg | grep error

Просматривая вывод команды dmesg, вы можете получить ценную информацию о поведении аппаратного обеспечения и драйверов вашей системы.

Резюме

В этом практическом занятии (лабораторной работе) мы изучили, как проверить характеристики процессора (CPU) с помощью команды cat /proc/cpuinfo. Эта команда обращается к файлу /proc/cpuinfo, который является виртуальным файлом в каталоге /proc, и выводит подробную информацию о каждом ядре процессора, включая его производителя, модель, тактовую частоту, размер кэша и поддерживаемые функции.

Просматривая вывод команды cat /proc/cpuinfo, в частности поле flags, мы можем определить наборы инструкций и возможности, поддерживаемые процессором, такие как fpu, vme, de, sse2 и avx2. Это позволяет нам определить, присутствует ли и включена ли конкретная функция процессора.