Как уже было написано здесь, от man 2 stat
,
Поле st_dev описывает устройство, на котором находится этот файл. (The
Основные (3) и второстепенные (3) макросы могут быть полезны для декомпозиции идентификатора устройства
в этой области.)
Эти макросы не определены в POSIX, но реализованы в glibc, как можно увидеть, например, здесь:
https://github.com/jeremie-koenig/glibc/blob/master-beware-rebase/sysdeps/generic/sys/sysmacros.h
Реализация этих макросов на языке C:
#define major(dev) ((int)(((unsigned int) (dev) >> 8) & 0xff))
#define minor(dev) ((int)((dev) & 0xff))
Что вы можете легко сделать, например, Python тогда
>>> import os
>>> minor = int(os.stat("/lib").st_dev & 0xff)
>>> major = int(os.stat("/lib").st_dev >> 8 & 0xff)
>>> major, minor
(8, 1)
Основной идентификатор идентифицирует драйвер устройства, дополнительный идентификатор кодирует физический диск, а также раздел. В случае дисков SCSI основной идентификатор всегда равен 8. Разделы на первом диске имеют младший идентификатор от 1 до 15. Разделы на втором диске имеют младший идентификатор от 17 до 31 и т. Д. Справка: https://www.mjmwired.net/kernel/Documentation/devices.txt
* * Тысяча двадцать-одина Следовательно, * * тысяча двадцать-дв
>>> major, minor
(8, 1)
означает sda1
: sd
(основной 8 -> SCSI), a1
(дополнительный 1 -> первый диск, первый раздел).