[vbox-dev] vm detection
Knut St. Osmundsen
bird at sun.com
Mon Jan 4 12:15:17 PST 2010
On Jan 2, 2010, at 7:15 PM, Frank Mehnert wrote:
> On Wednesday 30 December 2009, Stéphane Charette wrote:
>> On Wed, Dec 30, 2009 at 12:09, Larry Finger <Larry.Finger at lwfinger.net>
>>> For my edification, why does it matter?
>> Some extra installation steps we have to run when our appliance is
>> deployed in a virtual environment. I was hoping to have a single
>> easy-to-run check which can help determine between native and
>> virtualized environments.
>> Unless someone has an easier solution, I've decided to run
>> /usr/sbin/dmidecode and grep for certain keywords to tell the
>> difference. There are two problems I know about with doing it this
>> 1) greping for text strings isn't as "deterministic" as I'd like it to
>> be; running some instructions or calling some sort of API (if such a
>> solution existed) would make me feel a bit better
>> 2) vboxmanage can be used to customize the dmi strings, meaning that
>> "innotek GmbH" and "VirtualBox" may not even appear in the dmidecode
>> output; in my opinion, this solution is about on-par with checking the
>> organizational unique identifier in the MAC address
> Correct, dmidecode isn't the ideal solution, the information can
> be faked. Why not using 'lspci -d 80ee:beef'? That PCI is always
> present if the VM is running under VirtualBox. Of course this ID
> will eventually change but I don't have a better idea at the moment.
80ee:beef is the graphics device. While the graphics device probably won't change, unless we decide to change the vendor id at some point, I think the VirtualBox VMM device that the guest additions talks to (and VT-x currently relies upon for real-mode emulation) would be a slightly better choice for identifying the VirtualBox hardware. The PCI VendorID:DeviceID for this device is 80ee:cafe.
More information about the vbox-dev