Как узнать, работаю ли я на виртуальной машине VMWARE (из Linux)?
Вопрос
У меня есть сервер VMWARE ESX.На этом сервере у меня работают виртуальные машины Redhat.Мне нужен способ программного тестирования, работаю ли я на виртуальной машине.В идеале я хотел бы знать, как это сделать в Perl.
Решение
Смотрите ответ на "Обнаружить виртуализированную ОС из приложения?".
Другие советы
Вы не должны на 100% зависеть от какого-либо метода, поскольку это недокументированные функции/ошибки — они работают на некоторых хост-операционных системах и некоторых решениях виртуализации, но нет гарантии, что они продолжат работать;действительно, весь смысл виртуализации в том, чтобы быть настолько неотличимым от настоящего металла, насколько это возможно.Имея это в виду, Синяя таблетка Красная таблетка (что упоминается в принятом ответе на этот похожий вопрос) вроде работает...на данный момент.
У VMWare есть несколько SDK, в том числе SDK для Perl.
Я думаю (в зависимости от версии esx) можно проверить MAC-адрес сетевой карты.Виртуальным машинам, работающим в сетевом адаптере VMWare, будет назначена строка производителя, присвоенная VMWare, а не физический MAC-адрес сетевого адаптера.(Мы пытались подделать MAC-адрес виртуальной машины на сервере лицензий, но новые версии не позволят вам это сделать.) Кроме того, это не гарантирует, что вы не работаете на физическом компьютере с подделанным сетевым адаптером, чтобы он выглядел как VMWare, но в любом случае это было бы странно в большинстве случаев.
Выполните следующую команду:
lspci | grep VMware
Должно быть показано что-то вроде этого:
00:0f.0 VGA-совместимый контроллер:Адаптер VMware SVGA II
00:11.0 Мост PCI:Мост VMware PCI (версия 02)
00:15.0 Мост PCI:Корневой порт VMware PCI Express (версия 01)