Добавить в корзинуПозвонить
Найти в Дзене

Низкоуровневые интерфейсы ядра Linux

В комментариях к заметке про Magic SysRq задали вопрос о том, что это за команды такие, которые отличаются одной буквой. Да, это действительно команды одного из низкоуровневых интерфейсов SysRq, которые состоят из одной буквы. Но рассмотрим весь этот механизм более подробно. В Linux существуют две виртуальные файловые системы /proc и /sys для низкоуровневого взаимодействия с ядром системы. Они существуют в оперативной памяти и создаются динамически при загрузке системы, при выключении или перезагрузке их содержимое полностью теряется. 1️⃣ Файловая система /proc изначально подразумевалась для отображения информации о процессах, но со временем стала включать в себя инструменты управления и диагностики ядра. Большая часть файловой системы доступна только для root и только на чтение, например, если мы хотим получить информацию о процессоре, то нам нужно прочитать файл /proc/cpuinfo, я думаю все знают команду: cat /proc/cpuinfo Но обычно для этих целей существуют высокоуровневые утилит

Низкоуровневые интерфейсы ядра Linux

В комментариях к заметке про Magic SysRq задали вопрос о том, что это за команды такие, которые отличаются одной буквой. Да, это действительно команды одного из низкоуровневых интерфейсов SysRq, которые состоят из одной буквы.

Но рассмотрим весь этот механизм более подробно. В Linux существуют две виртуальные файловые системы /proc и /sys для низкоуровневого взаимодействия с ядром системы. Они существуют в оперативной памяти и создаются динамически при загрузке системы, при выключении или перезагрузке их содержимое полностью теряется.

1️⃣ Файловая система /proc изначально подразумевалась для отображения информации о процессах, но со временем стала включать в себя инструменты управления и диагностики ядра.

Большая часть файловой системы доступна только для root и только на чтение, например, если мы хотим получить информацию о процессоре, то нам нужно прочитать файл /proc/cpuinfo, я думаю все знают команду:

cat /proc/cpuinfo

Но обычно для этих целей существуют высокоуровневые утилиты, которые читают те же самые файлы, но делают это проще и удобнее для пользователя.

На запись, кроме /proc/sysrq-trigger, доступна только директория /proc/sys, которая позволяет менять некоторые параметры ядра, пользовательский интерфейс для нее предоставляет утилита sysctl и в большинстве случаев лучше использовать ее.

2️⃣ Файловая система /sys появилась в ядре 2.6 как замена разросшейся /proc для работы с драйверами и оборудованием. Представляет ряд иерархических структур, группирующих устройства по физическому расположению, классам, шинам и т.п., а также инструменты управления некоторыми параметрами системы.

Точно также данная файловая система доступна преимущественно root и поддерживает чтение и запись параметров, которые точно также не сохраняются при перезагрузке.

Пример работы с низкоуровневыми интерфейсами оборудования можно посмотреть в нашей статье:

NVMe-over-TCP - практическое знакомство с технологией

👆 В целом работа с низкоуровневыми интерфейсами ядра не представляет особой сложности, но требует определенных знаний и навыков, при этом в повседневной эксплуатации она не требуется, а нужное взаимодействие выполняют высокоуровневые утилиты.

Но общие принципы устройства данных интерфейсов и работы с ними должен знать каждый Linux-администратор.