342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
||||||||||||||||
1 | ||||||||||||||||
Получить Serial Number диска08.02.2022, 17:12. Показов 1337. Ответов 7
Метки нет (Все метки)
Здравствуйте!
Возможно ли путём одного вызова ioctl() извлечь из SATA-диска его Serial Number или Model Number, как их возвращает команда
args[1] = args[3] - NSECTOR (начальный сектор), обычно 1. При этом некоторые команды чтения вызывают сообщение об ошибке, например, ATA_OP_READ_PIO ATA_OP_READ_VERIFY и другие, ATA_OP_IDENTIFY и ATA_OP_CHECKPOWERMODE1 выполняются, но ничего осмысленного не возвращают. А как добиться желаемого или где прочитать об этом? То, что описано выше, я нашёл в исходном коде hdparm, но подробно в нём не разбирался, т.к. мне требуется только два параметра.
0
|
08.02.2022, 17:12 | |
Ответы с готовыми решениями:
7
Как определить Serial number жеского диска? Serial number Bios HDD serial number usb serial number |
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
|
08.02.2022, 20:39 [ТС] | 3 |
Разумеется, запускал от root. М.б., надо применить другой тип команды? Один я успел попробовать, не помогло.
Надо бы почитать описания по самим дискам, где что находится и как получить доступ. Я ещё не сделал этого.
0
|
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
|
08.02.2022, 22:17 [ТС] | 5 |
У нас диски подключаются по SATA, и HDD и SSD, hdparm читает все и даже SSD, подключённый через USB-бокс.
Сегодян я пробовал на HDD. Добавлено через 18 минут Забыл сказать, что мне это нужно именно для SSD в USB-боксе, т.к. для дисков, подключённых по SATA непосредственно, Serial Number и Model NUmber можно прочитать из /sys и я так и делаю. Попробую ещё HDIO_GET_IDENTITY. Кажется, в конце дня я пробовал то ли её, то ли похожую, но не получилось.
0
|
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
|||||||||||
09.02.2022, 14:36 [ТС] | 6 | ||||||||||
Оказалось, что я правильно вводил команду и аргумент
Но это работает с дисками, подключёнными по SATA, но не работает с диском в USB-боксе, для него надо использовать HDIO_DRIVE_TASKFILE, это сдожно и с этим я ещё не разобрался.
0
|
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
||||||
11.02.2022, 20:16 [ТС] | 7 | |||||
Оказалось, что надо использовать не HDIO_DRIVE_TASKFILE, а команду SG_IO. Я долго не мог этого понять,
даже когда по совету из поддержки запустил hdparm в strace, т.к. SG_IO - это также константа, определённая через define. Когда, наконец, сообразил, оказалось, что к ней непонятно как стрится команда. Для
длина команды может быть, например, 6 байтов, а в hdparm передаются команда длиной 16 байтов такая: "\x85\x08\x0e\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x40\xec\x00" и первый байт - это не код операции SCSI, а некая константа внутри hdparm. Не знаю, как ядро воспринимает это, но почему-то это работает. 0xec - это код команды для диска. Наверное, всё это работает через USB-контроллер, диск находится в USB-боксе. Эта команда формируется при вызове в зависимости от параметров диска и довольно сложным образом.
0
|
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
||||||
19.02.2022, 18:03 [ТС] | 8 | |||||
Я также вырезал из hdparm часть, реализующую выполнение вызова
так что теперь для получения серийного номера SSD в USB-боксе мне не требуется вызывать hdparm и разбирать её вывод. Для дисков, непосредственно подключённых по SATA, у меня этот номер и название модели читаются из каталога /sys обычным пользователем. Вот для hdparm или вырезанной из неё части требуются права root.
0
|
19.02.2022, 18:03 | |
19.02.2022, 18:03 | |
Помогаю со студенческими работами здесь
8
VMware hard drive serial number Как в С++ Билдере прочитать HDD Serial Number? Как найти Serial Number для unity 4.3.4? Получение serial number CPU/HDD asm Serial number usb device (Windows 7) mini-filter Использование двух виртуальных машин с одинаковыми HDD Serial Number Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |