o número de série do hdparm é lixo

2
Estou tentando ler o modelo e número de série de uma unidade usando "hdparm -I / dev / sda" e eu acho em alguns sistemas (por exemplo: máquinas virtuais VMware) o número de série e modelo muitas vezes retornam lixo (ver abaixo). E o lixo parece mudar com o tempo quando repito o comando. Existe uma maneira de dizer ao hdparm para não gerar este lixo? (ou seja, não mostrar nada se não conseguir ler os dados)

/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
    
por TSG 24.01.2015 / 18:06

1 resposta

2

hdparm -I /dev/sdX

Este comando executa um "dispositivo de identificação", que é um protocolo ATA específico que solicita as informações de identificação do firmware do dispositivo. No caso de uma unidade física, você poderia, por exemplo, conectar um analisador de barramento entre o adaptador de barramento host de seu computador e a própria unidade e ver a solicitação de identificação atravessar a interface SATA e os dados de resposta da unidade.

No caso de uma máquina virtual, a libata está falando com o firmware do disco rígido (por meio de um HBA virtual) que está sendo emulado como um dispositivo virtual. As informações do dispositivo de identificação retornadas do hdparm dependem de como o dispositivo virtual implementou a resposta para esse comando ATA. O comando hdparm não sabe que está falando com um dispositivo virtual. Só sabe como executar o comando através da libata e como analisar a estrutura de dados que é retornada.

Nesse contexto, talvez faça mais sentido ver se existe uma maneira de definir os campos "lixo" do seu dispositivo virtual para os valores que você escolher.

Se você estiver usando o VirtualBox, veja isto: link

Alternativamente, se você quiser apenas remover caracteres binários da saída, você pode canalizá-lo através de tr:

sudo hdparm -I /dev/sda | tr -cd '-6'

    
por 11.02.2015 / 23:04