So prüfen Sie, ob eine Kernel-Funktion (Feature) in Linux unterstützt wird

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob eine Kernel-Funktion (Kernel-Feature) in Linux unterstützt wird. Dies umfasst die Erkundung verschiedener Methoden zur Identifizierung von CPU-Funktionen (CPU-Features) und zur Überprüfung der Kernel-Konfigurationen.

Zunächst verwenden Sie den Befehl cat /proc/cpuinfo, um detaillierte Informationen über Ihre CPU zu untersuchen, einschließlich ihres Modells, ihrer Geschwindigkeit und der unterstützten Funktionen, die als Flags aufgelistet sind. Als Nächstes lernen Sie, wie Sie die Kernel-Konfiguration mit zcat /proc/config.gz überprüfen. Schließlich untersuchen Sie die Funktionsprotokolle (Feature-Logs) in 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{{"So prüfen Sie, ob eine Kernel-Funktion (Feature) in Linux unterstützt wird"}} linux/grep -.-> lab-558863{{"So prüfen Sie, ob eine Kernel-Funktion (Feature) in Linux unterstützt wird"}} linux/gzip -.-> lab-558863{{"So prüfen Sie, ob eine Kernel-Funktion (Feature) in Linux unterstützt wird"}} end

Überprüfen von CPU-Funktionen (CPU-Features) mit cat /proc/cpuinfo

In diesem Schritt werden wir untersuchen, wie Sie die Funktionen Ihrer CPU mit dem Befehl cat /proc/cpuinfo überprüfen können. Dieser Befehl zeigt detaillierte Informationen über jeden CPU-Kern in Ihrem System an, einschließlich seines Modells, seiner Geschwindigkeit und der unterstützten Funktionen.

Das Verzeichnis /proc ist ein virtuelles Dateisystem, das Informationen über die Prozesse und die Hardware des Systems bereitstellt. Die Datei /proc/cpuinfo enthält Informationen über die CPU.

Um die CPU-Informationen anzuzeigen, öffnen Sie Ihr Terminal. Sie können das Symbol für das Xfce Terminal auf der linken Seite Ihres Desktops finden.

Geben Sie jetzt den folgenden Befehl ein und drücken Sie die Eingabetaste:

cat /proc/cpuinfo

Dieser Befehl gibt eine Vielzahl von Informationen aus. Lassen Sie uns einige der wichtigsten Felder analysieren:

  • processor: Dies ist die logische Prozessornummer. In einem Mehrkernsystem hat jeder Kern seine eigene Prozessornummer.
  • vendor_id: Dies identifiziert den Hersteller der CPU (z. B. GenuineIntel oder AuthenticAMD).
  • cpu family: Dies gibt die CPU-Familie an.
  • model name: Dies liefert eine detailliertere Beschreibung des CPU-Modells. Beispiel: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz.
  • cpu MHz: Dies zeigt die Taktfrequenz der CPU in Megahertz (MHz) an.
  • cache size: Dies gibt die Größe des CPU-Caches an.
  • flags: Dies ist eine Liste von CPU-Funktionen, wie fpu, vme, de, sse2, avx2 und viele andere. Diese Flags geben die von der CPU unterstützten Befehlssätze und Fähigkeiten an.

Die Ausgabe sieht in etwa so aus (die genauen Details variieren je nach Ihrer 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

Sie können durch die Ausgabe scrollen, um alle Details zu sehen.

Diese Informationen können nützlich sein, um Leistungsprobleme zu beheben, Hardware-Einschränkungen zu identifizieren oder einfach die Fähigkeiten Ihres Systems zu verstehen.

Überprüfen der Kernel-Konfiguration mit zcat /proc/config.gz

In diesem Schritt lernen wir, wie wir die Kernel-Konfiguration mit dem Befehl zcat /proc/config.gz überprüfen können. Die Kernel-Konfiguration bestimmt, welche Funktionen (Features) und Module in den Kernel eingebaut sind.

Die Datei /proc/config.gz enthält die Kernel-Konfiguration, ist aber normalerweise mit gzip komprimiert. Wir verwenden zcat, um die Datei zu dekomprimieren und ihren Inhalt anzuzeigen.

Um die Kernel-Konfiguration anzuzeigen, öffnen Sie Ihr Terminal.

Geben Sie jetzt den folgenden Befehl ein und drücken Sie die Eingabetaste:

zcat /proc/config.gz

Dieser Befehl gibt die Kernel-Konfiguration aus. Es ist eine lange Liste von Optionen, die jeweils mit CONFIG_ beginnen.

Die Ausgabe sieht in etwa so aus (die genauen Details variieren je nach Ihrer Kernel-Konfiguration):

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

Sie können nach bestimmten Optionen suchen, indem Sie grep verwenden. Beispielsweise können Sie den folgenden Befehl verwenden, um zu prüfen, ob die Option CONFIG_EXT4_FS aktiviert ist:

zcat /proc/config.gz | grep CONFIG_EXT4_FS

Wenn die Option aktiviert ist, sehen Sie eine Zeile wie diese:

CONFIG_EXT4_FS=y

Wenn die Option deaktiviert ist, sehen Sie möglicherweise eine Zeile wie diese:

## CONFIG_EXT4_FS is not set

Diese Informationen können nützlich sein, um zu verstehen, wie Ihr Kernel konfiguriert ist, und um Probleme im Zusammenhang mit bestimmten Kernel-Funktionen zu beheben.

Prüfen von Funktionsprotokollen (Feature Logs) in dmesg

In diesem Schritt lernen wir, wie wir Funktionsprotokolle mit dem Befehl dmesg prüfen können. dmesg zeigt den Kernel-Meldungspuffer an, der Informationen über die Hardwareerkennung, die Treiberinitialisierung und andere Systemereignisse enthält. Es ist ein wertvolles Tool zur Fehlersuche bei hardwarebezogenen Problemen.

Um den Kernel-Meldungspuffer anzuzeigen, öffnen Sie Ihr Terminal.

Geben Sie jetzt den folgenden Befehl ein und drücken Sie die Eingabetaste:

dmesg

Dieser Befehl gibt eine Vielzahl von Informationen aus. Die Ausgabe ist ein chronologisches Protokoll der Kernel-Meldungen.

Die Ausgabe sieht in etwa so aus (die genauen Details variieren je nach Ihrem System):

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

Sie können die Ausgabe mit grep filtern, um nach bestimmten Schlüsselwörtern zu suchen. Beispielsweise können Sie den folgenden Befehl verwenden, um nach Meldungen in Bezug auf USB-Geräte zu suchen:

dmesg | grep USB

Dies zeigt Ihnen nur die Zeilen an, die das Wort "USB" enthalten.

Sie können auch dmesg verwenden, um nach Fehlermeldungen zu suchen. Beispielsweise können Sie den folgenden Befehl verwenden, um nach Meldungen zu suchen, die das Wort "error" enthalten:

dmesg | grep error

Durch die Prüfung der dmesg-Ausgabe können Sie wertvolle Einblicke in das Verhalten der Hardware und der Treiber Ihres Systems erhalten.

Zusammenfassung

In diesem Lab haben wir untersucht, wie man CPU-Funktionen (Features) mit dem Befehl cat /proc/cpuinfo prüfen kann. Dieser Befehl greift auf die Datei /proc/cpuinfo zu, eine virtuelle Datei im Verzeichnis /proc, um detaillierte Informationen über jede CPU-Kern anzuzeigen, einschließlich des Herstellers, des Modells, der Taktfrequenz, der Cache-Größe und der unterstützten Funktionen.

Durch die Prüfung der Ausgabe von cat /proc/cpuinfo, insbesondere des Felds flags, können wir die von der CPU unterstützten Befehlssätze und Fähigkeiten identifizieren, wie beispielsweise fpu, vme, de, sse2 und avx2. Dies ermöglicht es uns, festzustellen, ob eine bestimmte CPU-Funktion vorhanden und aktiviert ist.