Серийный номер hdparm является мусором

Я пытаюсь прочитать модель и серийный номер с диска с помощью "hdparm -I /dev/sda", и на некоторых системах (например, виртуальных машинах VMware) серийный номер и модель часто возвращают мусор (см. Ниже). И мусор, кажется, со временем меняется, когда я повторяю команду. Есть ли способ сказать hdparm не выводить этот мусор? (т.е. ничего не показывать, если он не может прочитать данные)

/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ATA device, with non-removable media
�������@�����@�����@:       ����
        Serial Number:      ����@�����@����
        Firmware Revision:  ��O��
Standards:
        Likely used: 2
Configuration:
        CHS addressing not supported
        LBA    user addressable sectors:  116676416
        Logical/Physical Sector size:           512 bytes
        device size with M = 1024*1024:       56970 MBytes
        device size with M = 1000*1000:       59738 MBytes (59 GB)
        cache/buffer size  = unknown

1 ответ

Решение

hdparm -I /dev/sdX

Эта команда выполняет "идентификацию устройства", которая является конкретным протоколом ATA, который запрашивает идентификационную информацию из встроенного программного обеспечения устройства. В случае физического диска вы можете, например, подключить анализатор шины между адаптером шины вашего компьютера и самим диском и увидеть запрос идентификации, проходящий через интерфейс SATA и отвечающие данные с диска.

В случае виртуальной машины libata обращается к встроенному ПО жесткого диска (через виртуальный HBA), которое эмулируется как виртуальное устройство. Информация идентификации устройства, возвращаемая из hdparm, зависит от того, как виртуальное устройство реализовало ответ на эту команду ATA. Команда hdparm не знает, что она разговаривает с виртуальным устройством. Он знает только, как выполнить команду через libata и как проанализировать возвращаемую структуру данных.

В этом контексте, возможно, имеет больше смысла посмотреть, есть ли способ установить поля "мусора" вашего виртуального устройства на любые значения, которые вы выберете.

Если вы используете VirtualBox, посмотрите это: https://www.virtualbox.org/manual/ch09.html

В качестве альтернативы, если вы просто хотите удалить двоичные символы из вывода, вы можете передать их через tr:

sudo hdparm -I / dev / sda | tr-cd '\ 11 \ 12 \ 15 \ 40- \ 176'

Другие вопросы по тегам