Simply put: Nested virtualization allows a virtual machine (VM) to be a host for further VMs. If you wanted to run VMware inside a VM, you would need this feature. But you would also do well to consider it if you were developing Android apps inside a VM and wanted to use the Android Emulator with hardware acceleration (= virtualization). Continue reading
In its default config XenServer 6.5 will not permit you to use your host server’s primary GPU in a VM as a passthrough device. That’s reasonable in most cases, as reusing this GPU leaves the dom0 without output. However, passing through the device works nonetheless in many cases – your mileage may vary.
To convince XenServer to let you freely assign the GPU to VMs add this line to the file /etc/udev/rules.d/05-udev-early.rules:
Reboot the server, that’s it.
I had trouble getting audio to work on a Ubuntu 15.04 system with Intel chipset audio (Intel Corporation 9 Series Chipset Family HD Audio Controller). Trying to run the ALSA mixer would look like this:
$ alsamixer cannot open mixer: No such file or directory
The fix was to edit /etc/modprobe.d/alsa-base.conf at the very end of the file (changes bold):
# Keep snd-usb-audio from beeing loaded as first soundcard options snd-usb-audio index=0 options snd-hda-intel index=-2
I modified the index value for the snd-usb-audio module to zero and added a line for the snd-hda-intel module. Afterwards the mixer would start as expected.
I’m a big fan of what can achieved with commodity hardware for free or little cost using virtualization platforms such as XenServer. Sure, ‘real’ server hardware has benefits. It is optimized to excel in certain disciplines. But ordinary gray box PCs are immensely flexible and for a scientist like me who plays with hardware configurations all the time, they are great. (They also save you money if you have the space for non-rack hardware btw.)
One thing where ‘real’ server hardware shines is remote management. Ordinary PCs typically do not have that. But most of the time they have a feature called Wake-on-LAN. This allows powering them up by sending a specially crafted ‘magic’ packet over the Ethernet. Fortunately, XenServer has built-in support to send those packets within a pool of servers and the Windows GUI XenCenter makes using that feature very convenient. Continue reading
The Android Emulator is part of Google´s Android SDK and allows you to run a virtualized Android system within a window on your desktop. With the normal behavior write access to the system partition of that Android is prohibited. That can be changed using the adb tool:
$ ~/android-sdk-linux/platform-tools/adb remount
While this temporarily permits changes to /system until the next reboot, any changes will be gone when you close the emulator. If you want the Android Emulator to remember whatever you did to /system, place a copy of system.img in ~/.android/avd/avdname.avd/ and call it system-qemu.img:
$ cp ~/android-sdk-linux/system-images/android-21/google_apis/x86_64/system.img ~/.android/avd/avdname.avd/system-qemu.img
Note that the paths in this are examplary and depend on which Android version you wish to use and how you name you virtual device.