В настоящее время у меня проблемы с определением, установлен ли бит гипервизора (31 бит) в значение true, используя CPUID в командной строке.
Я использую следующую команду cpuid -1 -r
для получения шестнадцатеричных данных, как показано на скриншоте ниже.
Я не знаю, как точно получить битовое значение гипервизора из этого списка шестнадцатеричных значений.
Мы будем благодарны за любую помощь в решении этой проблемы.
Я бы просто использовал текстовое представление, заданное по умолчанию cpuid
:
cpuid -1 | grep 'hypervisor guest status'
Если вы действительно хотите использовать необработанные значения, вам нужно отфильтровать CPUID # 1, а затем проверить, что ECX
больше или равно 0x80000000:
cpuid -1 -r | grep '^ 0x00000001.*ecx=0x[89a-f]'
Если это дает результат, бит установлен, в противном случае - нет; вы также можете использовать статус выхода grep
.