Вопрос или проблема
Экспериментирую с mknod
и мне нужно ссылаться на старший и младший номер.
$ lsblk --all --noheadings --output "NAME,MAJ:MIN" --raw /dev/loop0
loop0 7:1
loop0 259:0
loop0 259:1
Старший номер идентифицирует драйвер, связанный с устройством.
8: SATA
259: Устройство Loop
252: NVME
Младший номер используется только драйвером, указанным старшим номером; другие части ядра его не используют и просто передают его драйверу. Часто драйвер управляет несколькими устройствами (как показано в списке); младший номер предоставляет способ, чтобы драйвер различал их.
Нашел за 5 секунд через Google: https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch03s02.html
Кажется, у меня все еще недостаточно репутации, чтобы комментировать, поэтому мне придется изложить свою точку зрения как ответ …
@artem в основном прав в том, что старший номер идентифицирует драйвер; однако он мог ошибиться в назначении драйвера/номера.
Устройства Loop: 7
ЗАРЕЗЕРВИРОВАНО ДЛЯ ДИНАМИЧЕСКОГО НАЗНАЧЕНИЯ: 252
Устройства NVME: 259
.
Ответ или решение
В Linux мире важным аспектом работы с устройствами является правильное понимание и использование понятий "мажорный" и "минорный" номера, особенно когда речь идет о работе с командами низкого уровня, такими как mknod
. Эти номера критически важны для правильного взаимодействия операционной системы с аппаратными устройствами.
Значение мажорного и минорного номеров
-
Мажорный номер (Major Number):
- Целевая задача: Этот номер используется для идентификации драйвера, связанного с устройством. Каждое устройство, подключенное к системе, управляется драйвером, который связывает программное обеспечение с аппаратными интерфейсами.
- Примеры мажорных номеров:
7
— Зарезервирован для loop-устройств, которые имитируют аппаратное устройство, чтобы позволить использовать файлы как блоковые устройства.259
— Используется для NVME-устройств, работающих с высокоскоростными интерфейсами передачи данных.- Мажорный номер
8
часто соответствует SATA-устройствам.
-
Минорный номер (Minor Number):
- Целевая задача: Служит для уникальной идентификации конкретного устройства, управляемого тем же драйвером, что и его мажорный номер. То есть, он используется для различения нескольких устройств под управлением одного драйвера.
- Минорные номера различаются в зависимости от конкретного драйвера и типа устройств. Например, у loop-устройства с мажорным номером 7 минорный номер
0
может относиться к первому loop-устройству,1
– ко второму и так далее.
Применимость в реальной практике
Когда вы работаете с mknod
, указание мажорного и минорного номеров позволяет создать специальный файл устройства, который будет корректно взаимодействовать с конкретным драйвером. Например, команда mknod /dev/mydevice b 259 0
создаст новое блоковое устройство, идентифицируемое драйвером NVME.
Практические советы
- Актуальность данных: Мажорные номера могут отличаться в зависимости от версий ядра и конфигурации системы. Проверяйте текущие значения в документации вашей операционной системы.
- Диагностика и настройка: Используйте
lsblk
илиls -l /dev
для диагностики уже настроенных устройств и правильной идентификации их мажорных и минорных номеров. - Безопасность: При работе с устройствами через
mknod
и другие низкоуровневые команды важно соблюдать осторожность, так как неправильная настройка может привести к потере данных или ошибкам в системе.
В заключение, умение различать и правильно использовать мажорные и минорные номера является фундаментальной компетенцией при управлении устройствами в Linux, что способствует более надежной и эффективной работе с системными ресурсами.