Есть ли способ определить, является ли хост, на котором выполняется скрипт, гостевой виртуальной виртуальной машиной VirtualBox? В идеале я ищу кроссплатформенный способ. Я бы подумал, что это почти невозможно, если, возможно, что-то в Guest Additions не обеспечивает этого.
2 ответа
2
Поискал и под Linux, dmidecode | less
производит:
# dmidecode 2.10
SMBIOS 2.5 present.
5 structures occupying 256 bytes.
Table at 0x000E1000.
Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
Vendor: innotek GmbH
Version: VirtualBox
И эквивалент Windows (спасибо Andrew Koester за указатель)
C:\> wmic bios get smbiosbiosversion
SMBIOSBIOSVersion
VirtualBox
Существует аналог Solaris, но я не могу его протестировать, потому что у меня есть доступ только к машинам Sparc. Но, для полноты, вот оно: /usr/sbin/smbios
1
В Windows вы можете запросить информацию о BIOS с помощью WMI. http://msdn.microsoft.com/en-us/library/aa394077%28VS.85%29.aspx
Я не верю, что вы найдете кроссплатформенное решение, по крайней мере, не пройдя весь путь вниз и не прочитав его напрямую из памяти низкого уровня. (В этом случае вас может заинтересовать исходный код dmidecode)