Для чего “/sys” каталог?

Только что я заметил этот каталог, который я никогда не видел прежде, /sys. Я исследовал немного, и считайте, что "современные системы Linux" часто имеют этот каталог, и что он управляет устройствами. Я думал, для именно это был/dev. Я, может казаться, не нахожу большую информацию об этом каталоге, кроме того, что я упомянул, и это, заключенное в кавычки из этой страницы:

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

Я выполнял Надежного человека некоторое время теперь и никогда не замечал его прежде, который является, почему я нахожу его немного странным. Кто-то заполнил бы меня? Каково различие между этим и/dev? Когда Ubuntu начинала использовать этот каталог, и почему?Спасибо.

16
задан 14 March 2016 в 18:57

1 ответ

/sys старо. Это было представлено, прежде чем ядро Linux достигло 2.6 (назад, когда было разделение 2.4/2.5). Так как первый релиз Ubuntu использовал 2,6 ядра, каждая версия Ubuntu имела a /sys.

/dev содержит файлы существующего устройства. Это не обеспечивает доступ ко всем устройствам, о которых знает ядро (такие как устройства Ethernet, для одного - Почему находятся сетевые интерфейсы не в/dev как другие устройства?, Почему устройства Ethernet не обнаруживаются в "/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.

Например:

  • Один способ установить яркость монитора ноутбука:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • Получить MAC-адрес сетевой платы:

    cat /sys/class/net/enp1s0/address
    
  • Получить текущие регуляторы масштабирования ЦП:

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

И так далее...

28
ответ дан 23 November 2019 в 02:32

Другие вопросы по тегам:

Похожие вопросы: