Для чего нужен каталог "/sys"?
Некоторое время назад я заметил этот каталог, который я никогда раньше не видел, /sys
, Я немного исследовал и прочитал, что "современные системы Linux" часто имеют этот каталог и что он управляет устройствами. Я думал, что для этого был /dev. Кажется, я не могу найти много информации об этом каталоге, кроме того, что я упомянул, и это, процитированное с этой страницы:
/ sys - это виртуальная файловая система, к которой можно получить доступ для установки или получения информации о представлении системы ядром.
Я уже некоторое время пользуюсь Trusty и никогда раньше этого не замечал, поэтому я нахожу это немного странным. Кто-нибудь, пожалуйста, заполните меня? В чем разница между этим и /dev? Когда Ubuntu начала использовать этот каталог и почему? Благодарю.
1 ответ
/sys
старый Он был представлен до того, как ядро Linux достигло 2.6 (тогда, когда было разделение на 2.4/2.5). Поскольку в первом выпуске Ubuntu использовалось ядро 2.6, каждая версия Ubuntu имела /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
И так далее...