VirtualBox Compilation: Difference between revisions
Merge-delete (talk | contribs) (add missing step + few minor changes) |
Merge-delete (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 13: | Line 13: | ||
=== Source packages === | === Source packages === | ||
* VirtualBox - get it here: [http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0.2.tar.bz2 http://download.virtualbox.org/virtualbox/ | * VirtualBox - get it here: [http://download.virtualbox.org/virtualbox/4.0.2/VirtualBox-4.0.2.tar.bz2 http://download.virtualbox.org/virtualbox/x.y.z/VirtualBox-x.y.z.tar.bz2] where x.y.z stands for version numbers (eg. 4.0.2) | ||
* PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from [http://www.pulseaudio.org http://www.pulseaudio.org] | * PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from [http://www.pulseaudio.org http://www.pulseaudio.org] | ||
* makeself - get it here: [http://megastep.org/makeself/ http://megastep.org/makeself/] | * makeself - get it here: [http://megastep.org/makeself/ http://megastep.org/makeself/] | ||
Line 35: | Line 35: | ||
$ ./configure --nofatal --disable-hardening --disable-docs | $ ./configure --nofatal --disable-hardening --disable-docs | ||
</pre> | </pre> | ||
<code>--nofatal</code> configure won't stop on non-fatal errors; it usually fails on <code>makeself | <code>--nofatal</code> configure won't stop on non-fatal errors; it usually fails on <code>makeself</code> variable | ||
<code>--disable-hardening</code> - set | <code>--disable-hardening</code> - automatically set few symbolic links so you can run VirtualBox binaries from bin/ directory of your build environment; '''don't''' use this switch if you're building package for redistribution | ||
<code>--disable-docs</code> - for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it | <code>--disable-docs</code> - for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it | ||
Line 82: | Line 82: | ||
<pre> | <pre> | ||
$ kmk | $ kmk | ||
</pre> | |||
Build VirtualBox kernel module | |||
<pre> | |||
$ cd out/linux.x86/release/bin/src | |||
$ make | |||
$ su | |||
<password> | |||
$ make install | |||
$ cd .. | |||
</pre> | |||
Load kernel module (as root) | |||
<pre> | |||
$ modprobe vboxdrv | |||
</pre> | |||
Now you can start VirtualBox front-end from local bin/ directory | |||
<pre> | |||
$ ./VirtualBox | |||
</pre> | </pre> |
Latest revision as of 13:33, 10 April 2011
VirtualBox is a general-purpose full virtualizer for x86 hardware, targeted at server, desktop and embedded use. It comes in two editions
- Open Source Edition (OSE) - open-source licensed under GPLv2
- Personal Use and Evaluation License (PUEL) - closed-source with additional features (USB support, Remote desktop support, ...)
Disclaimer
This tutorial applies to slackware-current (-current after stable versions 13.1) and VirtualBox 4.0.x OSE
Prerequisites
See this list
Below lies additional, not obvious or not mentioned prerequisites.
Source packages
- VirtualBox - get it here: http://download.virtualbox.org/virtualbox/x.y.z/VirtualBox-x.y.z.tar.bz2 where x.y.z stands for version numbers (eg. 4.0.2)
- PulseAudio - no SlackBuild available (note: applies to 09-01-2010); download sources from http://www.pulseaudio.org
- makeself - get it here: http://megastep.org/makeself/
Slackware packages
- jdk
- gcc-java
SlackBuilds
- iasl - contained in SlackBuild acpica
Compilation
Unpack sources somewhere
tar xjvf VirtualBox-x.y.z.tar.bz2 -C build/ cd build/VirtualBox-x.y.z_OSE/
Run configure script which will generate Makefile.kmk and env.sh scripts
$ ./configure --nofatal --disable-hardening --disable-docs
--nofatal
configure won't stop on non-fatal errors; it usually fails on makeself
variable
--disable-hardening
- automatically set few symbolic links so you can run VirtualBox binaries from bin/ directory of your build environment; don't use this switch if you're building package for redistribution
--disable-docs
- for some reason, build fails when building documentation. If you don't mind using online documentation it's safe to disable building it
Update build environment variables with auto-generated script
$ source ./env.sh
Now it's time to compile sources, but there are few pitfalls
Troubleshooting & Pitfalls
PAM
Slackware doesn't ship PAM, so you have to change one line in Config.kmk to disable it
if1of ($(KBUILD_TARGET), linux solaris) # VBOX_WITH_PAM = 1 VBOX_WITH_PAM = endif
Note: It's really blank space, 0 doesn't work as logical False
Java path
Inside Config.kmk there is block with few possible locations of JDK binaries. Unfortunately, JDK in Slackware has different path, so you have to add right path.
ifeq ($(KBUILD_TARGET),linux) ifeq ($(origin VBOX_JAVA_HOME),undefined) # Add correct detection for you distro after the /usr/../java-6-sun line. # Slackware JDK resides in /usr/lib/jdk1.6.0_23 (JDK 1.6 update 23; type what version suits you) VBOX_JAVA_HOME := $(firstword $(wildcard \ $(PATH_DEVTOOLS)/linux.x86/jdk1.6.0_21 \ /usr/lib/jvm/java-6-sun \ /usr/lib/jvm/java-6-openjdk \ /usr/lib/jdk1.6.0_23 \ /usr/lib/jvm/sun-jdk-1.6 \ ) /usr/lib/jvm/java-6-sun) endif endif
Build
Everything should be prepared by now. Type following command to build VirtualBox
$ kmk
Build VirtualBox kernel module
$ cd out/linux.x86/release/bin/src $ make $ su <password> $ make install $ cd ..
Load kernel module (as root)
$ modprobe vboxdrv
Now you can start VirtualBox front-end from local bin/ directory
$ ./VirtualBox