Для чего нужен каталог «/ sys»?

16

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

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

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

Chev_603
источник
/sysсуществует уже более десяти лет .
Муру
1
Sidenote, возможно, будет полезен другим пользователям: каталоги / proc и / sys, являющиеся виртуальными файловыми системами, исчезнут после выключения компьютера. Если вы когда-либо устанавливали жесткий диск с Linux на другую ОС, вы увидите, что эти каталоги пусты.
Сергей Колодяжный

Ответы:

28

/sysэто старый . Он был представлен до того, как ядро ​​Linux достигло 2.6 (тогда, когда было разделение на 2.4 / 2.5). Поскольку в первом выпуске Ubuntu использовалось ядро ​​2.6 , каждая версия Ubuntu имела /sys.

/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
    

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

Мур
источник
@muru: Что делать, если я хочу удалить один из этих файлов, который занимает много памяти? Я написал драйвер устройства с ошибкой (может быть), который зацикливался и непрерывно записывал в какой-то файл в каталоге / sys / devices. Кроме того, если я случайно удалю неправильный файл, как это повлияет?
Бхавик Шах
2
@BhavikShah вы ничего не удалите отсюда - эти файлы на самом деле не существуют. Вам придется удалить соответствующий модуль.
Муру