Серийный номер 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'