Posts tagged guest

VirtualBox Guest Additions on Real Machine – PXE Boot

VirtualBox guest additions installs a video driver called vboxvideo. It allows for the machine to adjust its resolution to the dimensions of the application windows. It also allows for seamless mouse movement between the host machine and the virtual window. I manage a server that runs VirtualBox to host several machines. The host is located in an air conditioned server room separated from the main office by some distance. In the office I have a windows machine that typically boots to a Windows XP desktop. VirtualBox is installed with a guest configured to pxe boot from the server host.

I would like to boot an interface, using pxe, with guest additions functional. Apparently guest additions does not play nicely with the various VirtualBox kernel modules required for actual machines. I have enabled the vboxvideo module in lts.conf (/var/lib/tftpboot/ltsp/i386/lts.conf) and it does configure xorg.conf of the pxe client properly, but it does not seem to work. Maybe its because the host server uses the nvidia driver? The main /etc/X11/xorg.conf is configured with nvidia; I have tried it with vboxvideo, but that did not make sense to me so I quickly reverted the change.

How else would ltsp clients be configured; other than lts.conf?

VirtualBox Windows Vista – Host Network Bridge and Tap

This entire post is no longer applicable to the most recent version of VirtualBox. Here is a more recent post.

VirtualBox is well equipped for a Windows environment. Most of its features have a mechanism for automatic installation and setup. To get your guest OS, in Windows Vista, to have a real IP address from your router you first need a network bridge and tap. Open the VirtualBox manager:

VirtualBox manager screenshot

Then select a guest OS and open its settings. Then click the network tab:
VirtualBox manager network tab

Then click the add network tap button:
Add network tap button

It doesn’t matter what the name is :) Then adjust your guest OS networking adapter accordingly.

Enable host network

Now open your Windows Vista network configurations manager:

Microsoft Vista network configuration

This screenshot is what your network configurations should be after everything is done. To achieve this simply select both the VirtualBox tap, that was previously created, and bridge it to your LAN connection. Select both by click on each adapter while pressing the shift key. Then right click on either of the two highlighted icons and select “bridge”. This will automatically create a bridge between the tap and your real host networking adapter. Wham bam, now you can select a real static IP in your VirtualBox guest OS on a Windows Vista system :)

Update (12/4/2009); At the top of this post I say that the information here is outdated. You can view the post listed above if you want, but here are the pertinent screenshots also:

Here is a screen from Windows Vista. Go to the network tab of the virtual machine settings:

Network settings

Then select the attach to drop down menu:

Attach

Then change the attach to, drop down menu, to bridged adapter:

Bridged adapter

VirtualBox Seamless Mode – Windows Programs on a Linux Desktop

VirtualBox comes with the seamless mode option that can be enabled from the machine menu in a guest OS. If Microsoft Windows is the guest OS, and seamless mode is enabled, you will see the Windows taskbar above your Gnome or KDE task bar. You will not see the Windows desktop. Anything you run from the Windows taskbar will be in a window directly on your Linux desktop. Seamless mode is for all practical purposes seamless. All your guest OS applications are not run on a separate window, they are run in their own independent windows on the host OS desktop. It is truly a seamless blending of two operating system. To enbale seamless mode with a hotkey, press your globally defined hotkey and “L”. Take seamless mode to the next level (screenshot available)

VirtualBox Guest IP Address

UPDATE: VirtualBox host networking is much easier now, and is completely automated on both Windows and Linux.

There are two ways to interact with your guest operating system. You can either forward a port on the host machine, or you can have the guest operating system utilize dhcp to retrieve an IP address from your router. The following are three terminal commands, utilizing the VBoxManage command with a variety of options. To forward a port to your guest OS do the following; replace guestOS with your VirtualBox OS, port 2222 with the port on your host machine that you want to forward, and port 22 for the desired port on the guest OS:

VBoxManage setextradata guestOSname VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort 2222

VBoxManage setextradata guestOSname VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort 22

VBoxManage setextradata guestOSname VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol TCP

Now this method I find really really really cool !!! We are going to configure your VirtualBox guest OS to get a regular IP address from your routers DHCP server. By doing this you will be able to access your VirtualBox guest OS as you would any regular computer. Doing this really establishes a Virtual Operating System that truly and completely functions as a real computer. First install a couple of files via apt; the packages were in my Debian Etch repositories, therefore I have no doubt that they are in Ubuntu’s: sudo apt-get install bridge-utils uml-utilities The best part it its only a couple of command that can be thrown in a script that is automatically run on boot. Add the following lines to a script, you can name the file something like “virtualbridge.sh”:

#replace user with the main username that you use to login
sudo tunctl -t tap0 -u user
sudo chmod 666 /dev/net/tun
sudo /usr/sbin/brctl addbr br0 sudo /sbin/ifconfig eth0 0.0.0.0 promisc
sudo /usr/sbin/brctl addif br0 eth0 sudo /sbin/dhclient br0
sudo /usr/sbin/brctl addif br0 tap0 #replace tap0ipaddress with an unused local ipaddress
sudo ifconfig tap0 tap0ipaddress up
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp' #replace hostipaddress
sudo route add -host hostipaddress dev tap0 #also replace hostipaddress with the host ip address
sudo arp -Ds hostipaddress eth0 pub
#END of SCRIPT

Now configure your VirtualBox Guest OS to use the tap0 network interface. This can all be done graphically. Add these lines to a empty new text file and name it what you wish. Set it to be executable with a quick chmod 777 command. Add it to your sessions to be automatically run on user login. Also add your VirtualBox OS to boot on login; you can do this with:

#replace GuestOS with the desired GuestOS
VBoxManage startvm GuestOS

Now your script will run automatically on login, and the GuestOS will automatically boot. Viola, you now have a GuestOS that automatically boots, and is practically indistinguishable from a real computer complete with a real local ipaddress :)