Я пытаюсь прочитать модель и серийный номер с диска, используя «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
hdparm -I / dev / sdX
Эта команда выполняет «идентификацию устройства», который представляет собой специальный протокол ATA, который запрашивает идентификационную информацию из прошивки устройства. В случае физического диска вы можете, например, подключить анализатор шины между адаптером главной шины вашего компьютера и самим дисководом и увидеть, как запрос идентификации проходит через интерфейс SATA и отвечающие данные с диска.
В случае виртуальной машины libata обращается к прошивке жесткого диска (через виртуальный HBA), которая эмулируется как виртуальное устройство. Информация об устройстве, возвращаемая hdparm, зависит от того, как виртуальное устройство реализовало ответ на эту команду ATA. Команда hdparm не знает, что она обращается к виртуальному устройству. Он знает только, как выполнить команду через libata и как анализировать возвращаемую структуру данных.
В этом контексте, возможно, имеет смысл посмотреть, есть ли способ установить для полей «мусора» вашего виртуального устройства любые значения, которые вы выберете.
Если вы используете VirtualBox, см. Это: https://www.virtualbox.org/manual/ch09.html#changevpd
В качестве альтернативы, если вы просто хотите удалить двоичные символы из вывода, вы можете передать его через tr:
sudo hdparm -I / dev / sda | tr -cd '\ 11 \ 12 \ 15 \ 40- \ 176'