VirtualBox: Difference between revisions

From miki
Jump to navigation Jump to search
(→‎Bugtracker: Allow hot-plug addition / removal of screens (monitors) in guest OS)
(→‎Installation: Launch VirtualBox as another user)
Line 38: Line 38:
</source>}}
</source>}}
* Enable ''[http://en.wikipedia.org/wikiDynamic_Kernel_Module_Support Dynamic Kernel Module Support]'' to deal with Kernel Upgrade
* Enable ''[http://en.wikipedia.org/wikiDynamic_Kernel_Module_Support Dynamic Kernel Module Support]'' to deal with Kernel Upgrade
=== Launch VirtualBox as another user ===
* <font color="red">'''Limitation!'''</font> It seems that only one user can access '''PulseAudio''' (see [https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/433654]). This means that when launching VirtualBox as another user (other than '''root'''), it will not be possible to play sounds in the host anymore.
* Create user '''vbox''' ('''disabled''', uid '''7000''', group '''vboxusers''' + groups '''cdrom''', <s>'''audio''', </s>'''video''', '''plugdev''', '''fuse''', '''netdev'''). This user will store VirtualBox settings and disks, access bluetooth...
* If user '''vbox''' needs to access a partition directly (e.g. because using a raw drive), give '''RW access''' on the selected partition. For instance, to give RW access to partition <tt>/dev/sda2</tt>, create a new '''udev''' rule in file <tt>/etc/udev/rules.d/99-custom.rules</tt>:
{{pl2|<source lang="bash">
# Rules to change the ownership of /dev/sda2 to user "vbox" (vbox will boot /dev/sda2 in VirtualBox + follow least privilege principle)
# reference: http://www.reactivated.net/writing_udev_rules.html#ownership
KERNEL=="sda2", SUBSYSTEM=="block", OWNER="vbox"
</source>}}
* Allow users to launch VirtualBox through user ''vbox''. Add to <tt>/etc/sudoers</tt>:
{{pl2|<source lang="text">ALL ALL=NOPASSWD: /bin/su vbox -c /usr/bin/VirtualBox</source>}}
* Helper function to add to e.g. <tt>~/.bashrc</tt> :
{{pl2|<source lang="bash" enclose=prevalid>
function winbox() {
#First allow user vbox to connect to X11
xhost +SI:localuser:vbox
sudo su vbox -c /usr/bin/VirtualBox&
}
</source>}}


== Creating a New Virtual Machine ==
== Creating a New Virtual Machine ==

Revision as of 21:05, 1 June 2010

Installation

Reference instructions can be found here:

  • For VirtualBox 3.2.x:
    • Add the following lines to /etc/apt/sources.list (here for Ubuntu Lucid):
    • deb http://download.virtualbox.org/virtualbox/debian lucid non-free
    • Add the Oracle public key for apt-secure, then install
      wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
      sudo apt-get update
      sudo apt-get install virtualbox-3.2
      
  • For VirtualBox 3.1.x:
    • Add the following lines to /etc/apt/sources.list (here for Ubuntu Karmic):
    • deb http://download.virtualbox.org/virtualbox/debian karmic non-free
    • Add the Sun public key for apt-secure, then install
      wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -
      sudo apt-get update
      sudo apt-get install virtualbox-3.1
      

The group vboxusers is created during installation.

  • Users of the VirtualBox must be member of that group. New users can be added with
sudo usermod -a -G vboxusers username
  • The daemon for the network interfaces will be assigned to that group.

VirtualBox requires a kernel module vboxdrv.

  • The default location of the module is given by setting KDIR=[fullpath] in file /etc/default/virtualbox.
  • The kernel module can be compiled with
sudo /etc/init.d/vboxdrv setup

Launch VirtualBox as another user

  • Limitation! It seems that only one user can access PulseAudio (see [1]). This means that when launching VirtualBox as another user (other than root), it will not be possible to play sounds in the host anymore.
  • Create user vbox (disabled, uid 7000, group vboxusers + groups cdrom, audio, video, plugdev, fuse, netdev). This user will store VirtualBox settings and disks, access bluetooth...
  • If user vbox needs to access a partition directly (e.g. because using a raw drive), give RW access on the selected partition. For instance, to give RW access to partition /dev/sda2, create a new udev rule in file /etc/udev/rules.d/99-custom.rules:
# Rules to change the ownership of /dev/sda2 to user "vbox" (vbox will boot /dev/sda2 in VirtualBox + follow least privilege principle)
# reference: http://www.reactivated.net/writing_udev_rules.html#ownership
KERNEL=="sda2", SUBSYSTEM=="block", OWNER="vbox"
  • Allow users to launch VirtualBox through user vbox. Add to /etc/sudoers:
ALL	ALL=NOPASSWD: /bin/su vbox -c /usr/bin/VirtualBox
  • Helper function to add to e.g. ~/.bashrc :
function winbox() {
	#First allow user vbox to connect to X11
	xhost +SI:localuser:vbox
	sudo su vbox -c /usr/bin/VirtualBox&
}

Creating a New Virtual Machine

  • To boot a Virtual Machine directly from a physical disk partitions, see section Advanced storage configuration in Ch. 9 Advanced topics.

Booting Existing Windows XP from Physical Partition

Here I describe my attempt at booting the existing Windows XP partition on a Dell E6500.

1st attempt

  • In Windows, created a 2nd hardware profile called Virtual, copy of the original profile Profile 1
  • New VirtualBox machine:
    • Base Memory 1894MB
  • Using raw disk only with partition /dev/sda2 doesn't work
sudo VBoxManage internalcommands createrawvmdk -filename nxl670002-sda2.vmdk -rawdisk /dev/sda -partitions 2
This doesn't work! First Grub complained, then I tried to restore back the default WXP MBR (using either install-mbr or ms-sys but to no avail)

I created

  • Virtual machine NXL670002
    • Base Memory 1894 MB
  • Using raw disk with whole disk access/dev/sda
sudo VBoxManage internalcommands createrawvmdk -filename nxl670002-sda.vmdk -rawdisk /dev/sda
This works, Windows boots!
  • But hangs. In Safe Mode, it hangs after loading AGPCPQ.SYS.
  • Some related posts:
http://www.techspot.com/vb/topic21511.html
http://forums.virtualbox.org/viewtopic.php?f=7&t=19847
http://forum.driverpacks.net/viewtopic.php?id=3865
This post refers to problem with ACPI / APIC.

Miscellaneous work-around

  • Deleted the file ...\system32\drivers\agp440.sys and agp440.sys + agppcq.sys in dllcache (check [2], post from ChaosAddict, 20100210).
→ Now windows boot until login screen, but blue screen about IRQL_GREATER_R_EQUAL

2nd attempt

  • Started from base image. I compared all the drivers with a base XP + SP3 install. Disabled all additional drivers.
  • Booted in safe mode... hangs... hangs and hangs again.

3rd attempt

  • Started from base image again. Renamed some drivers (including agp440.sys + some others)
  • Disabled VT-x, disabled PAE, disabled multi-cpu, enabled IO APIC, disabled 2D accel.
  • Boot in safe mode... OK!
  • Boot in normal mode... ok!
  • Enabled back everything, boot in normal mode... ok!
  • Installed VirtualBox Additions... ok!
  • Restored all drivers, but agp440.sys... ok!
  • I can even boot in native!!!

Benchmarks

Settings:

  • Dell Latitude E6500, 4GB RAM.
  • VirtualBox 3.1.6.
  • System: 1536 MB RAM, IO APIC, 2 CPU with PAE/NX, VT-x + Nested Paging.
  • Video: 32 MB Video + 2D accel
  • Storage: PIIX4 ctrl, raw vmdk image /dev/sda
  • Audio: PulseAudio + ICH AC97
  • Network: Bridged Adapter
task U9.04-32 U9.04-32 U9.04-32 U9.10-32 U9.10-32 U9.10-32 U9.10-64 U9.10-64 U9.10-64 U9.04-32 U9.04-32 Native Native Native
grub →
hw profile
2.86 s 2.82 s 2.77 s 2.76 s 2.68 s 2.84 s 2.50 s 2.51 s 2.61 s 3.22 s 2.73 s 1.62 s 1.57 s 1.41 s
hw profile →
login screen
23.49 s 23.46 s 21.56 s 42.07 s 43.48 s 40.28 s 48.63 s 52.00 s 56.07 s 33.15 s 24.06 s 29.52 s 24.89 s 25.16 s
login screen →
pwd typed
17.69 s 12.94 s 12.62 s 9.83 s 9.69 s 8.56 s 15.41 s 9.85 s 9.31 s 9.68 s 8.75 s 9.88 s 8.42 s 8.99 s
pwd typed →
communicator
8.83 s 7.73 s 8.45 s 32.51 s 29.97 s 36.57 s 38.50 s 33.53 s 34.44 s 20.48 s 8.24 s 9.47 s 7.20 s 6.81 s

U9.04-32: Base Ubuntu 9.04 Jaunty i386 Live running on USB, 2.6.28-11-generic
U9.10-32: Base Ubuntu 9.10 Karmic i386 Live running on USB
U9.10-64: Base Ubuntu 9.10 Karmic AMD64 running from HDD, 2.6.31-20-generic
Native: Running Windows directly, no emulation

External references:

Interesting post about step-by-step configuration to run an existing Windows XP installation.
  • Two posts about disabling IO APIC:[3] and [4]. But apparently this doesn't really fix anything (also the poster has a old cpu, etc).

Bugtracker