web-dev-qa-db-ja.com

「/ sys」ディレクトリの目的は何ですか?

しばらく前に、私はこれまで見たことのないこのディレクトリに気づきました、/sys。私は少し調べて、「現代のLinuxシステム」にはしばしばこのディレクトリがあり、デバイスを管理することを読みました。それが/ devの目的だと思いました。 this のページから引用したことを除いて、このディレクトリに関する多くの情報を見つけることができないようです。

/ sysは、システムのカーネルビューに関する情報を設定または取得するためにアクセスできる仮想ファイルシステムです。

私はしばらくの間Trustyを実行していますが、以前は気づいていなかったので、少し奇妙に感じます。誰かが私に記入してくれませんか?これと/ devの違いは何ですか? Ubuntuはいつこのディレクトリの使用を開始しましたか?ありがとう。

14
Chev_603

/sysoldです。 Linuxカーネルが2.6に到達する前に導入されました(2.4/2.5の分割があったときに戻ります)。 最初のUbuntuリリースでは2.6カーネルを使用すべてのバージョンのUbuntuには/sysがありました。

/devには実際のデバイスファイルが含まれます。カーネルが知っているすべてのデバイスへのアクセスを提供するわけではありません(たとえば、イーサネットデバイスなど- ネットワークインターフェイスが他のデバイスのように/ devにないのはなぜですか?なぜイーサネットデバイスがあるのですか? 「/ dev」に表示されませんか? )。デバイス自体へのインターフェースです-デバイスへの書き込み、デバイスからの読み取りなど。

/sysはカーネルへのインターフェースです。特に、/procのように、カーネルが提供する情報と構成設定のファイルシステムのようなビューを提供します。これらのファイルへの書き込みは、変更する設定に応じて、実際のデバイスに書き込む場合と書き込まない場合があります。一般的なユースケースですが、デバイスの管理だけではありません。

詳細は カーネルのドキュメント にあります:

Top Level Directory Layout
~~~~~~~~~~~~~~~~~~~~~~~~~~

The sysfs directory arrangement exposes the relationship of kernel
data structures. 

The top level sysfs directory looks like:

block/
bus/
class/
dev/
devices/
firmware/
net/
fs/

devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of
struct device. 

bus/ contains flat directory layout of the various bus types in the
kernel. Each bus's directory contains two subdirectories:

    devices/
    drivers/

devices/ contains symlinks for each device discovered in the system
that point to the device's directory under root/.

drivers/ contains a directory for each device driver that is loaded
for devices on that particular bus (this assumes that drivers do not
span multiple bus types).

fs/ contains a directory for some filesystems.  Currently each
filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./Fuse.txt for an example).

dev/ contains two directories char/ and block/. Inside these two
directories there are symlinks named <major>:<minor>.  These symlinks
point to the sysfs directory for the given device.  /sys/dev provides a
quick way to lookup the sysfs interface for a device from the result of
a stat(2) operation.

例えば:

  • ノートパソコンのモニターの明るさを設定する1つの方法は次のとおりです。

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • ネットワークカードのMACアドレスを取得するには:

    cat /sys/class/net/enp1s0/address
    
  • 現在のCPUスケーリングガバナーを取得するには:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    

等々...

26
muru