Что представляют собой major и minor в lsblk?

Вопрос или проблема

Экспериментирую с 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. Эти номера критически важны для правильного взаимодействия операционной системы с аппаратными устройствами.

Значение мажорного и минорного номеров

  1. Мажорный номер (Major Number):

    • Целевая задача: Этот номер используется для идентификации драйвера, связанного с устройством. Каждое устройство, подключенное к системе, управляется драйвером, который связывает программное обеспечение с аппаратными интерфейсами.
    • Примеры мажорных номеров:
      • 7 — Зарезервирован для loop-устройств, которые имитируют аппаратное устройство, чтобы позволить использовать файлы как блоковые устройства.
      • 259 — Используется для NVME-устройств, работающих с высокоскоростными интерфейсами передачи данных.
      • Мажорный номер 8 часто соответствует SATA-устройствам.
  2. Минорный номер (Minor Number):

    • Целевая задача: Служит для уникальной идентификации конкретного устройства, управляемого тем же драйвером, что и его мажорный номер. То есть, он используется для различения нескольких устройств под управлением одного драйвера.
    • Минорные номера различаются в зависимости от конкретного драйвера и типа устройств. Например, у loop-устройства с мажорным номером 7 минорный номер 0 может относиться к первому loop-устройству, 1 – ко второму и так далее.

Применимость в реальной практике

Когда вы работаете с mknod, указание мажорного и минорного номеров позволяет создать специальный файл устройства, который будет корректно взаимодействовать с конкретным драйвером. Например, команда mknod /dev/mydevice b 259 0 создаст новое блоковое устройство, идентифицируемое драйвером NVME.

Практические советы

  • Актуальность данных: Мажорные номера могут отличаться в зависимости от версий ядра и конфигурации системы. Проверяйте текущие значения в документации вашей операционной системы.
  • Диагностика и настройка: Используйте lsblk или ls -l /dev для диагностики уже настроенных устройств и правильной идентификации их мажорных и минорных номеров.
  • Безопасность: При работе с устройствами через mknod и другие низкоуровневые команды важно соблюдать осторожность, так как неправильная настройка может привести к потере данных или ошибкам в системе.

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

Оцените материал
Добавить комментарий

Капча загружается...