7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2024年01月版】 /sys メモ 【中年エンジニアのためのLinuxメモ】

Last updated at Posted at 2024-01-07

はじめに

/sys って仮想ファイルシステムで、いろいろシステム情報入ってる、ぐらいしかわからんから、調べてみる

/sys とは

  • Linuxの /sys ディレクトリは、システムファイルシステム(sysfs)の一部
  • カーネルオブジェクトに関する情報とインターフェースを提供する特殊なファイルシステム
  • Linuxカーネルが実行時にデバイスやドライバーなどのカーネルオブジェクトに関する情報を、ユーザースペースに公開するための手段として機能する
  • FHS(Filesystem Hierarchy Standard) で定義されている

/sys で公開されている情報

主に以下の情報が公開されている。

  • デバイス情報

    • /sysディレクトリは、システムに接続されている各デバイスに関する詳細な情報を含んでいる
    • デバイスの種類、状態、設定などが含まれる
  • ドライバーとのインタラクション

    • ユーザーは /sys を通じてドライバーと対話できる
    • 特定のデバイス機能を有効または無効にするために、ファイルを読み書きすることができる
  • カーネルパラメータの調整

    • カーネルの動作を制御するためのパラメータも /sys を通じてアクセス可能
    • システム管理者はランタイム中にカーネルの動作を微調整できる
  • 階層構造

    • /sys ディレクトリは階層的な構造をしている
    • デバイス、バス、ドライバーなどによって整理された階層構造が公開されている
  • 仮想ファイルシステム

    • /sys は実際のファイルではなく、カーネルデータ構造へのインターフェースを提供する仮想ファイルシステム
    • ここに存在するファイルは実際のディスクスペースを消費していない

デバイスツリー

  • /sys ディレクトリの階層構造は、Linuxカーネルのデバイス、バス、ドライバーなどのオブジェクトを反映している
  • これらのオブジェクトは、デバイスツリーと呼ばれる構造で整理されている
  • システムのハードウェア構成とカーネルの内部状態を表す

/sysの主要なサブディレクトリ

/sys/block

  • ブロックデバイス(ハードドライブ、SSDなど)に関連する情報を含んでいる
  • 各ブロックデバイスはサブディレクトリとして表示され、その中にはデバイスの特性や統計情報が含まれる

/sys/bus

  • システムのバス(例:PCI, USBなど)に関する情報を提供する
  • バスごとにサブディレクトリがあり、接続されているデバイスやドライバーに関する情報が含まれる

/sys/class

  • デバイスを機能や種類別に分類したディレクトリ
  • 例えば、/sys/class/net にはネットワークインターフェースに関する情報が、/sys/class/sound にはオーディオデバイスに関する情報が含まれる

/sys/dev

  • デバイスをメジャー番号とマイナー番号で分類したディレクトリ
  • このディレクトリを通じて、特定のデバイスファイルに対応するカーネルオブジェクトへアクセスできる

/sys/devices

  • システム上のすべてのデバイスについての詳細な情報が含まれる
  • デバイスは物理的な接続構造に基づいて階層的に配置されている

/sys/firmware

  • ファームウェアやBIOSなどの、システムファームウェアに関連する情報が含まれている

/sys/kernel

  • カーネル固有の設定や統計情報が含まれている
  • 例えば、デバッグ情報やカーネルモジュールに関するデータなどが含まれる

/sys/module

  • ロードされているカーネルモジュールに関する情報が含まれる
  • 各モジュールはサブディレクトリとして表現され、設定オプションや状態情報が含まれる

/sys から情報を取得しているコマンド

lsusb

USBデバイスに関する情報を表示するコマンド。このコマンドは、/sys/bus/usb/devices/ から情報を取得している。

lspci

PCIデバイスに関する情報を表示するコマンド。このコマンドは、/sys/bus/pci/devices//sys/bus/pci/ から情報を取得している。

lsblk

ブロックデバイス(ハードドライブ、SSDなど)のリストを表示するコマンド。このコマンドは、/sys/block/ から情報を取得している。

udevadm

udevデバイスマネージャーに関連する情報を表示するコマンド。このコマンドは、/sys ディレクトリの情報を利用してデバイスに関する詳細を表示する。

lshw

ハードウェア構成の詳細な情報を表示するコマンド。このコマンドは、/sys ディレクトリの情報を利用してハードウェアに関する詳細を表示する。

/sys を使ったトラブルシューティング

以下のトラブルシューティングなどができるが、専用コマンドを使う方が楽かも。

ネットワークインターフェースの問題診断

/sys/class/net/ ディレクトリ内を調べることで、ネットワークインターフェースの状態(有効/無効)や統計情報を確認できる。
例えば、/sys/class/net/eth0/carrier をチェックして物理的な接続状態を確認したり、/sys/class/net/eth0/statistics/rx_bytes で受信したバイト数を調べることができる。

USBデバイスの問題診断

/sys/bus/usb/devices/ には、接続されているUSBデバイスの情報が含まれている。
デバイスが正しく認識されていない場合、このディレクトリ内の情報を用いて、デバイスの状態や接続状況を確認できる。

ストレージデバイスのパフォーマンス監視

/sys/block/ ディレクトリには、システムのストレージデバイス(ハードドライブ、SSDなど)に関する情報が存在する。
例えば、/sys/block/sda/statファイルには、デバイスの読み書き操作や転送状況に関する情報が含まれており、パフォーマンスの監視に利用できます。
CPUの状態確認

/sys/devices/system/cpu/ 内では、CPUの状態や性能に関する情報が含まれている。
例えば、/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq で現在のCPU周波数を調べたり、/sys/devices/system/cpu/cpu0/online で特定のCPUコアが有効かどうかを確認できる。

カーネルモジュールの状態確認

/sys/module/ ディレクトリには、ロードされているカーネルモジュールに関する情報が含まれている。
このディレクトリを通じて、特定のモジュールがロードされているか、その設定値を確認することができる。

参考リンク

Wikipedia sysfs
man sysfs
Filesystem Hierarchy Standard

さいごに

さくっと理解しておきたい

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?