Классическая модель доступа к драйверам
В файловой системе Unix существуют специальные объекты - файлы устройств. Как правило, они создаются в каталоге /dev, но могут сбыть созданы и в любом другом каталоге. Каждый специальный файл - это точка доступа к драйверу устройства. Если драйвер предоставляет операции чтения/записи, то файл устройства может быть открыт как обычный файл cat /dev/modem > /dev/null. Для выполнения других операций с устройством (например выдвижение лотка CDROM) требуется отправка команд драйверу через системный вызов ioctl(). Файлам устройств права доступа назначаются так же , как и обычным файлам.
ВНИМАНИЕ: сетевые карты не отображаются в файлы устройств в /dev. Все сетевые интерфейсы живут в своём пространстве имён.
Команда создания специального файла:
mknod <name> <type> <major> <minor>
Имя устройства не имеет значения для функционирования ОС и выбирается по некоторым мнемоническим правилам. Например, SCSI диск может иметь следующие имена:
Функциональность файла устройства определяется парой чисел major/minor, которые должны соответствовать номерам в некой таблице регистрации драйверов в ядре ОС. Назначение minor, обычно, определяется логикой работы драйвера. Для согласованного назначения номера major драйверам и специальным файлам существует несколько способов :
Традиционно свойства процессов и некоторые параметры ядра отображаются в Linux в каталог /proc через драйвер псевдофайловой системы procfs. Начиная с ядра 2.6 параметры ядра, связанные с драйверами устройств и файловых системам, были вынесены в каталог /sys и псевдофайловую систему sysfs.
/proc
Через файл /proc/cpuinfo можно получить информацию о физических процессорах, физических ядрах и гипертрединговых логических ядрах.
$ cat /proc/cpuinfo
...
model name : Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
....
cpu MHz : 1733.000
...
Через файл /proc/net/dev можно получить список сетевых интерфейсов и статистику по ним
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
eth0: 1767479002126 7440045654 0 209199 176227535 ...
lo: 809098010894 313483867 0 0 0 0 ...
/sys
Каталог содержит информацию об инициализированных устройствах, сгруппированную по разным критериям: типам устройств, шинам, диагностическим протоколам доступа и т.п. Одни и те же устройства могут быть показаны в разных каталогах через символические ссылки.
Заряд батареи
cat /sys/class/power_supply/BAT0/charge_full
cat /sys/class/power_supply/BAT0/charge_full_design
cat /sys/class/power_supply/BAT0/charge_now
Альтернативный путь к тем же данным
/proc/acpi/battery/BAT0/*
Утилиты acpi, acpitool отсутствуют в большинстве современных дистрибутивов.