Linux でカーネル機能がサポートされているかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux でカーネル機能がサポートされているかどうかを確認する方法を学びます。これには、CPU 機能を特定し、カーネル設定を検証するためのさまざまな方法を調査することが含まれます。

まず、cat /proc/cpuinfo コマンドを使用して、CPU のモデル、速度、サポートされている機能(フラグとしてリストされています)など、CPU に関する詳細情報を調べます。次に、zcat /proc/config.gz を使用してカーネル設定を検証する方法を学びます。最後に、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{{"Linux でカーネル機能がサポートされているかどうかを確認する方法"}} linux/grep -.-> lab-558863{{"Linux でカーネル機能がサポートされているかどうかを確認する方法"}} linux/gzip -.-> lab-558863{{"Linux でカーネル機能がサポートされているかどうかを確認する方法"}} end

cat /proc/cpuinfo で CPU 機能を確認する

このステップでは、cat /proc/cpuinfo コマンドを使用して CPU の機能を確認する方法を説明します。このコマンドは、システム内の各 CPU コアに関する詳細情報(モデル、速度、サポートされている機能など)を表示します。

/proc ディレクトリは、システムのプロセスやハードウェアに関する情報を提供する仮想ファイルシステムです。/proc/cpuinfo ファイルには、CPU に関する情報が含まれています。

CPU 情報を表示するには、ターミナルを開きます。デスクトップの左側にある Xfce Terminal アイコンをクリックすると開きます。

次に、以下のコマンドを入力して Enter キーを押します。

cat /proc/cpuinfo

このコマンドを実行すると、大量の情報が出力されます。いくつかの重要なフィールドを解説します。

  • processor:論理プロセッサ番号です。マルチコアシステムでは、各コアに独自のプロセッサ番号が割り当てられます。
  • vendor_id:CPU のメーカーを識別します(例:GenuineIntel または AuthenticAMD)。
  • cpu family:CPU のファミリーを示します。
  • model name:CPU モデルの詳細な説明を提供します。例:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
  • cpu MHz:CPU のクロック速度をメガヘルツ(MHz)で表示します。
  • cache size:CPU キャッシュのサイズを示します。
  • flagsfpuvmedesse2avx2 などの CPU 機能のリストです。これらのフラグは、CPU がサポートする命令セットと機能を示します。

出力は次のようになります(正確な詳細は 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

出力をスクロールして、すべての詳細を確認できます。

この情報は、パフォーマンスの問題のトラブルシューティング、ハードウェアの制限の特定、または単にシステムの機能を理解するのに役立ちます。

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 の出力を調査することで、システムのハードウェアとドライバの動作に関する貴重な洞察を得ることができます。

まとめ

この実験では、cat /proc/cpuinfo コマンドを使用して CPU の機能を確認する方法を調べました。このコマンドは、/proc ディレクトリ内の仮想ファイルである /proc/cpuinfo ファイルにアクセスし、各 CPU コアの詳細情報を表示します。これには、ベンダー、モデル名、クロック速度、キャッシュサイズ、およびサポートされている機能が含まれます。

cat /proc/cpuinfo の出力、特に flags フィールドを調べることで、CPU がサポートする命令セットや機能(fpuvmedesse2avx2 など)を特定することができます。これにより、特定の CPU 機能が存在し、有効になっているかどうかを判断することができます。