VirtualBox: Difference between revisions
Jump to navigation
Jump to search
(→Installation: Launch VirtualBox as another user) |
|||
Line 62: | Line 62: | ||
== Booting Existing Windows XP from Physical Partition == |
== Booting Existing Windows XP from Physical Partition == |
||
Reference: http://www.virtualbox.org/wiki/Migrate_Windows |
|||
Host Setup |
|||
Here I describe my attempt at booting the existing Windows XP partition on a Dell E6500. |
|||
* Dell Latitude E6500 (with virtualization instructions) |
|||
* VirtualBox '''3.2.0''', Ubuntu '''10.04 Lucid Lynx''' |
|||
* Base Memory '''1536 MB''', '''2''' cpus, VT-x/AMD-V '''enabled''', Nested Paging '''enabled''' |
|||
* Video memory '''48 MB''', '''2''' monitors, 3D accel '''enabled''', 2D accel '''enabled''' |
|||
* Audio host driver '''PulseAudio''', controller '''ICH AC97''' |
|||
* Network '''PCnet-FAST III''', '''bridged''', '''eth0''' |
|||
Guest Setup |
|||
* Windows XP SP3 |
|||
⚫ | |||
=== 1st attempt === |
|||
* In Windows, created a 2nd hardware profile called '''Virtual''', copy of the original profile '''Profile 1''' |
|||
* First, as described in [http://www.virtualbox.org/wiki/Migrate_Windows], '''delete <tt>agp440.sys</tt>''' (or rename) from <tt>C:\Windows\system32\drivers</tt>. This driver will conflict with the virtual video card installed by VirtualBox and will make it crash. |
|||
* New VirtualBox machine: |
|||
* Next, create the raw disk as a vmdk volume. Update the MBR code to remove GRUB. <font color="red">Repeat this every time the partitions change</font>: |
|||
** Base Memory '''1894MB''' |
|||
{{pl2|<source lang="bash" enclose="prevalid"> |
|||
⚫ | |||
sudo dd if=/dev/sda of=opensource.mbr bs=512 count=1 |
|||
⚫ | |||
sudo apt-get install mbr # For command "install-mbr" |
|||
:This doesn't work! First Grub complained, then I tried to restore back the default WXP MBR (using either '''[http://ubuntuforums.org/archive/index.php/t-339433.html install-mbr]''' or '''[http://www.arsgeek.com/2008/01/15/how-to-fix-your-windows-mbr-with-an-ubuntu-livecd/ ms-sys]''' but to no avail) |
|||
sudo install-mbr -i n -p D -t 0 opensource.mbr |
|||
I created |
|||
⚫ | |||
* Virtual machine '''NXL670002''' |
|||
</source>}} |
|||
** Base Memory '''1894 MB''' |
|||
* Boot the virtual machine with the raw disk above. When Windows is launched, install the '''VirtualBox guest additions'''. |
|||
* Using raw disk with whole disk access<tt>/dev/sda</tt> |
|||
sudo VBoxManage internalcommands createrawvmdk -filename nxl670002-sda.vmdk -rawdisk /dev/sda |
|||
This is done! When booting Windows natively, the ''VirtualBox guest additions'' will detect that VirtualBox is not running and will disable itself. |
|||
: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://www.techspot.com/vb/topic21511.html |
||
: http://forums.virtualbox.org/viewtopic.php?f=7&t=19847 |
: http://forums.virtualbox.org/viewtopic.php?f=7&t=19847 |
||
: http://forum.driverpacks.net/viewtopic.php?id=3865 |
: http://forum.driverpacks.net/viewtopic.php?id=3865 |
||
:: This post refers to problem with ACPI / APIC. |
|||
'''Miscellaneous work-around''' |
|||
* Deleted the file <tt>...\system32\drivers\agp440.sys</tt> and <tt>agp440.sys</tt> + <tt>agppcq.sys</tt> in <tt>dllcache</tt> (check [http://ubuntuforums.org/showthread.php?t=769883&page=27], 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 <tt>agp440.sys</tt> + 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 <tt>agp440.sys</tt>... ok! |
|||
* I can even boot in native!!! |
|||
== Benchmarks == |
== Benchmarks == |
Revision as of 21:42, 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
- Enable Dynamic Kernel Module Support to deal with Kernel Upgrade
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
Reference: http://www.virtualbox.org/wiki/Migrate_Windows
Host Setup
- Dell Latitude E6500 (with virtualization instructions)
- VirtualBox 3.2.0, Ubuntu 10.04 Lucid Lynx
- Base Memory 1536 MB, 2 cpus, VT-x/AMD-V enabled, Nested Paging enabled
- Video memory 48 MB, 2 monitors, 3D accel enabled, 2D accel enabled
- Audio host driver PulseAudio, controller ICH AC97
- Network PCnet-FAST III, bridged, eth0
Guest Setup
- Windows XP SP3
Let's say the Windows partition is on partition /dev/sda2.
- First, as described in [2], delete agp440.sys (or rename) from C:\Windows\system32\drivers. This driver will conflict with the virtual video card installed by VirtualBox and will make it crash.
- Next, create the raw disk as a vmdk volume. Update the MBR code to remove GRUB. Repeat this every time the partitions change:
sudo dd if=/dev/sda of=opensource.mbr bs=512 count=1
sudo apt-get install mbr # For command "install-mbr"
sudo install-mbr -i n -p D -t 0 opensource.mbr
sudo VBoxManage internalcommands createrawvmdk -filename nxl67002-sda2-mbr.vmdk -rawdisk /dev/sda -partitions 2 -relative -mbr opensource.mbr
- Boot the virtual machine with the raw disk above. When Windows is launched, install the VirtualBox guest additions.
This is done! When booting Windows natively, the VirtualBox guest additions will detect that VirtualBox is not running and will disable itself.
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
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
- Enhancement - #6854 - Allow hot-plug addition / removal of screens (monitors) in guest OS