VirtualBox: Difference between revisions
No edit summary |
Corrected the main download link |
||
| (58 intermediate revisions by 6 users not shown) | |||
| Line 2: | Line 2: | ||
|- | |- | ||
!Download Source: | !Download Source: | ||
| http:// | | http://download.virtualbox.org/virtualbox/{{VirtualBox-Version}}/VirtualBox-{{VirtualBox-Version}}.tar.bz2 | ||
|- | |||
!Download Guest Additions: | |||
| http://download.virtualbox.org/virtualbox/{{VirtualBox-Version}}/VBoxGuestAdditions_{{VirtualBox-Version}}.iso | |||
|} | |} | ||
---- | ---- | ||
{{Package-Introduction|VirtualBox is a general-purpose full virtualizer for x86 hardware. Targeted at server, desktop and embedded use, it is now the only professional-quality virtualization solution that is also Open Source Software.|http://www.virtualbox.org/wiki/VirtualBox}} | |||
VirtualBox is a general-purpose full virtualizer for x86 hardware. Targeted at server, desktop and embedded use, it is now the only professional-quality virtualization solution that is also Open Source Software. | |||
== Dependencies == | == Dependencies == | ||
VirtualBox only supports x86 and x86_64. | {{Note|VirtualBox only supports x86 and x86_64.}} | ||
=== Required === | === Required === | ||
* [[Which]] | |||
* [[Dev86]] | * [[Dev86]] | ||
* [[ | * [[ACPICA]] | ||
* [[LibXSLT]] | * [[LibXSLT]] | ||
* [[ | * [[Qt4]] | ||
* [[libIDL]] | * [[libIDL]] | ||
* [[X Window System]] | |||
* [[SDL]] | * [[SDL]] | ||
* [[ALSA]] | * [[ALSA]] | ||
* [[NSPR]] | |||
=== Optional === | === Optional === | ||
* [[GCC-3.3]] | * [[PulseAudio]] | ||
* [[Python]] | |||
* [[GCC-3.3]] (Required for command 'kmk' while compiling) | |||
== Creating the vboxusers Group == | == Creating the vboxusers Group == | ||
| Line 37: | Line 43: | ||
sed -i "s@/usr/X11R6@${XORG_PREFIX}@g" $(grep -lr /usr/X11R6 *) && | sed -i "s@/usr/X11R6@${XORG_PREFIX}@g" $(grep -lr /usr/X11R6 *) && | ||
./configure -- | sed -i "/PKG_CONFIG_PATH=.*qt4/d" configure --disable-qt3 && | ||
./configure --disable-qt3 --disable-python --disable-pulse \ | |||
--with-qt4-dir=${QT4DIR} && | |||
source env.sh && | source env.sh && | ||
kmk | kmk | ||
Install VirtualBox: | |||
cd out/linux.*/release/bin && | |||
install -m755 -d -v /opt/VirtualBox && | |||
cp -av * /opt/VirtualBox | |||
Build the kernel module: | Build the kernel module: | ||
cd | cd src && | ||
make | make | ||
| Line 50: | Line 63: | ||
make install | make install | ||
If you downloaded the Guest Additions ISO install that with the following command: | |||
install -m644 -v ../../../../../VBoxGuestAdditions_{{VirtualBox-Version}}.iso \ | |||
/opt/VirtualBox/additions/VBoxGuestAdditions.iso | |||
Execute the following command to ensure that all the files are owned by root. | |||
chown -Rv root:root /opt/VirtualBox | |||
If you built VirtualBox against [[Qt4]] execute the following command to make VirtualBox Suid root: | |||
chmod u+s /opt/VirtualBox/VirtualBox | |||
If you built against [[Qt3]] execute the following command to make VirtualBox Suid root and create a link to the proper path: | |||
chmod u+s /opt/VirtualBox/VirtualBox3 | |||
ln -sfv /opt/VirtualBox/VirtualBox{3,} | |||
== Multilib == | |||
=== 64Bit === | |||
Compile VirtualBox: | |||
sed -i "s@/usr/X11R6@${XORG_PREFIX}@g" $(grep -lr /usr/X11R6 *) && | |||
sed -i "/PKG_CONFIG_PATH=.*qt4/d" configure && | |||
sed -i "/LIBQT4=/s@/lib@&64@" configure && | |||
sed -i "/LIBX11/s@/lib @/lib64 @" configure && | |||
sed -i "s/VBOX_LIBPATH32_X11/VBOX_LIBPATH_X11/" src/VBox/Additions/x11/xclient/Makefile.kmk && | |||
PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" ./configure --disable-qt3 \ | |||
--disable-python --disable-pulse \ | |||
--with-qt4-dir=${QT4DIR} && | |||
source env.sh && | |||
kmk | |||
Install VirtualBox: | Install VirtualBox: | ||
cd . | cd out/linux.*/release/bin && | ||
install -m755 -d -v /opt/VirtualBox && | install -m755 -d -v /opt/VirtualBox && | ||
cp -av * /opt/VirtualBox | cp -av * /opt/VirtualBox | ||
Build the kernel module: | |||
cd src && | |||
make | |||
Install the kernel module: | |||
make install | |||
If you downloaded the Guest Additions ISO install that with the following command: | |||
install -m644 -v ../../../../../VBoxGuestAdditions_{{VirtualBox-Version}}.iso \ | |||
/opt/VirtualBox/additions/VBoxGuestAdditions.iso | |||
Execute the following command to ensure that all the files are owned by root. | |||
chown -Rv root:root /opt/VirtualBox && | |||
If you built VirtualBox against [[Qt4]] execute the following command to make VirtualBox Suid root: | |||
chmod u+s /opt/VirtualBox/VirtualBox | |||
If you built against [[Qt3]] execute the following command to make VirtualBox Suid root and create a link to the proper path: | |||
chmod u+s /opt/VirtualBox/VirtualBox3 | |||
ln -sfv /opt/VirtualBox/VirtualBox{3,} | |||
== Configuring == | == Configuring == | ||
| Line 70: | Line 141: | ||
cat > /etc/udev/rules.d/90-vboxdev.rules << "EOF" | cat > /etc/udev/rules.d/90-vboxdev.rules << "EOF" | ||
KERNEL==" | KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660" | ||
EOF | |||
Create a helper script that will start VBoxSVC and then execute the specified client: | |||
cat > /opt/VirtualBox/VBox.sh << "EOF" | |||
#!/bin/sh | |||
INSTALL_PATH="/opt/VirtualBox" | |||
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}${LD_LIBRARY_PATH+:}${INSTALL_PATH}" | |||
export USER=$(whoami) | |||
if [ ! -c /dev/vboxdrv ]; then | |||
echo "/dev/vboxdrv does not exist. Load the kernel module then try again." | |||
exit 1 | |||
fi | |||
if [ ! -r /dev/vboxdrv -o ! -w /dev/vboxdrv ]; then | |||
echo "User $USER can not read and/or write to /dev/vboxdrv." | |||
exit 1 | |||
fi | |||
echo "/dev/vboxdrv exists and $USER can access it." | |||
SERVER_PID=$(ps -U $USER | grep VBoxSVC | awk '{ print $1 }') | |||
if [ "$1" = "shutdown" ]; then | |||
if [ -n "$SERVER_PID" ]; then | |||
echo "Terminating VBoxSVC with PID $SERVER_PID." | |||
kill -TERM $SERVER_PID | |||
else | |||
echo "VBoxSVC Not Currently Running." | |||
fi | |||
exit 0 | |||
fi | |||
if [ ! -x "$INSTALL_PATH/VBoxSVC" ]; then | |||
echo "$INSTALL_PATH/VBoxSVC does not exist! Can not continue." | |||
exit 1 | |||
fi | |||
APP=$(which $0) | |||
APP=${APP##/*/} | |||
if [ ! -x "$INSTALL_PATH/$APP" ]; then | |||
echo "$INSTALL_PATH/$APP does not exist!" | |||
exit 1 | |||
fi | |||
case "$APP" in | |||
VirtualBox|VBoxManage|VBoxSDL|VBoxVRDP) | |||
EXEC_APP="$INSTALL_PATH/$APP" | |||
;; | |||
*) | |||
echo "Unknown application - $APP." | |||
;; | |||
esac | |||
if [ -z "$SERVER_PID" ]; then | |||
rm -rf /tmp/.vbox-$USER-ipc | |||
echo "Starting VBoxSVC for $USER." | |||
"$INSTALL_PATH/VBoxSVC" --daemonize | |||
fi | |||
SERVER_PID=$(ps -U $USER | grep VBoxSVC | awk '{ print $1 }') | |||
if [ -z "$SERVER_PID" ]; then | |||
echo "VBoxSVC failed to start! Can not continue" | |||
exit 1 | |||
fi | |||
echo "VBoxSVC is running for user $USER with PID $SERVER_PID." | |||
echo "Starting $EXEC_APP." | |||
exec "$EXEC_APP" "$@" | |||
EOF | |||
A script similar to the one above is shipped with the binary version. | |||
Link the binaries we want to run to the script: | |||
for file in VirtualBox VBoxManage VBoxSDL VBoxVRDP; do | |||
[ -f "/opt/VirtualBox/$file" ] && ln -sfv "../../opt/VirtualBox/VBox.sh" "/usr/bin/$file" | |||
done | |||
Create a desktop file: | |||
cat > /usr/share/applications/VirtualBox.desktop << "EOF" | |||
[Desktop Entry] | |||
Encoding=UTF-8 | |||
Version={{VirtualBox-Version}} | |||
Name=InnoTek VirtualBox | |||
GenericName=Virtual Machine | |||
Type=Application | |||
Comment=Run several virtual systems on a single host computer | |||
Exec=VirtualBox | |||
TryExec=VirtualBox | |||
Path= | |||
Icon=/opt/VirtualBox/VBox.png | |||
Categories=Application;Emulator;System | |||
EOF | EOF | ||
[[Category:Emulators]] | |||
Latest revision as of 14:29, 26 July 2013
| Download Source: | http://download.virtualbox.org/virtualbox/4.2.16/VirtualBox-4.2.16.tar.bz2 |
|---|---|
| Download Guest Additions: | http://download.virtualbox.org/virtualbox/4.2.16/VBoxGuestAdditions_4.2.16.iso |
Introduction to VirtualBox
VirtualBox is a general-purpose full virtualizer for x86 hardware. Targeted at server, desktop and embedded use, it is now the only professional-quality virtualization solution that is also Open Source Software.
Project Homepage: http://www.virtualbox.org/wiki/VirtualBox
Dependencies
Required
Optional
- PulseAudio
- Python
- GCC-3.3 (Required for command 'kmk' while compiling)
Creating the vboxusers Group
groupadd -g 29 vboxusers
Users that are going to use VirtualBox should be added to this group.
Non-Multilib
Compile VirtualBox:
sed -i "s@/usr/X11R6@${XORG_PREFIX}@g" $(grep -lr /usr/X11R6 *) &&
sed -i "/PKG_CONFIG_PATH=.*qt4/d" configure --disable-qt3 &&
./configure --disable-qt3 --disable-python --disable-pulse \
--with-qt4-dir=${QT4DIR} &&
source env.sh &&
kmk
Install VirtualBox:
cd out/linux.*/release/bin && install -m755 -d -v /opt/VirtualBox && cp -av * /opt/VirtualBox
Build the kernel module:
cd src && make
Install the kernel module:
make install
If you downloaded the Guest Additions ISO install that with the following command:
install -m644 -v ../../../../../VBoxGuestAdditions_4.2.16.iso \
/opt/VirtualBox/additions/VBoxGuestAdditions.iso
Execute the following command to ensure that all the files are owned by root.
chown -Rv root:root /opt/VirtualBox
If you built VirtualBox against Qt4 execute the following command to make VirtualBox Suid root:
chmod u+s /opt/VirtualBox/VirtualBox
If you built against Qt3 execute the following command to make VirtualBox Suid root and create a link to the proper path:
chmod u+s /opt/VirtualBox/VirtualBox3
ln -sfv /opt/VirtualBox/VirtualBox{3,}
Multilib
64Bit
Compile VirtualBox:
sed -i "s@/usr/X11R6@${XORG_PREFIX}@g" $(grep -lr /usr/X11R6 *) &&
sed -i "/PKG_CONFIG_PATH=.*qt4/d" configure &&
sed -i "/LIBQT4=/s@/lib@&64@" configure &&
sed -i "/LIBX11/s@/lib @/lib64 @" configure &&
sed -i "s/VBOX_LIBPATH32_X11/VBOX_LIBPATH_X11/" src/VBox/Additions/x11/xclient/Makefile.kmk &&
PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" ./configure --disable-qt3 \
--disable-python --disable-pulse \
--with-qt4-dir=${QT4DIR} &&
source env.sh &&
kmk
Install VirtualBox:
cd out/linux.*/release/bin && install -m755 -d -v /opt/VirtualBox && cp -av * /opt/VirtualBox
Build the kernel module:
cd src && make
Install the kernel module:
make install
If you downloaded the Guest Additions ISO install that with the following command:
install -m644 -v ../../../../../VBoxGuestAdditions_4.2.16.iso \
/opt/VirtualBox/additions/VBoxGuestAdditions.iso
Execute the following command to ensure that all the files are owned by root.
chown -Rv root:root /opt/VirtualBox &&
If you built VirtualBox against Qt4 execute the following command to make VirtualBox Suid root:
chmod u+s /opt/VirtualBox/VirtualBox
If you built against Qt3 execute the following command to make VirtualBox Suid root and create a link to the proper path:
chmod u+s /opt/VirtualBox/VirtualBox3
ln -sfv /opt/VirtualBox/VirtualBox{3,}
Configuring
The kernel module needs to be loaded for VirtualBox to function. Make sure it gets loaded on boot:
echo "vboxdrv" >> /etc/sysconfig/modules
Also lets create a udev rule so that /dev/vboxdev can be accessed by the users in the vboxusers group.
cat > /etc/udev/rules.d/90-vboxdev.rules << "EOF" KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660" EOF
Create a helper script that will start VBoxSVC and then execute the specified client:
cat > /opt/VirtualBox/VBox.sh << "EOF"
#!/bin/sh
INSTALL_PATH="/opt/VirtualBox"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}${LD_LIBRARY_PATH+:}${INSTALL_PATH}"
export USER=$(whoami)
if [ ! -c /dev/vboxdrv ]; then
echo "/dev/vboxdrv does not exist. Load the kernel module then try again."
exit 1
fi
if [ ! -r /dev/vboxdrv -o ! -w /dev/vboxdrv ]; then
echo "User $USER can not read and/or write to /dev/vboxdrv."
exit 1
fi
echo "/dev/vboxdrv exists and $USER can access it."
SERVER_PID=$(ps -U $USER | grep VBoxSVC | awk '{ print $1 }')
if [ "$1" = "shutdown" ]; then
if [ -n "$SERVER_PID" ]; then
echo "Terminating VBoxSVC with PID $SERVER_PID."
kill -TERM $SERVER_PID
else
echo "VBoxSVC Not Currently Running."
fi
exit 0
fi
if [ ! -x "$INSTALL_PATH/VBoxSVC" ]; then
echo "$INSTALL_PATH/VBoxSVC does not exist! Can not continue."
exit 1
fi
APP=$(which $0)
APP=${APP##/*/}
if [ ! -x "$INSTALL_PATH/$APP" ]; then
echo "$INSTALL_PATH/$APP does not exist!"
exit 1
fi
case "$APP" in
VirtualBox|VBoxManage|VBoxSDL|VBoxVRDP)
EXEC_APP="$INSTALL_PATH/$APP"
;;
*)
echo "Unknown application - $APP."
;;
esac
if [ -z "$SERVER_PID" ]; then
rm -rf /tmp/.vbox-$USER-ipc
echo "Starting VBoxSVC for $USER."
"$INSTALL_PATH/VBoxSVC" --daemonize
fi
SERVER_PID=$(ps -U $USER | grep VBoxSVC | awk '{ print $1 }')
if [ -z "$SERVER_PID" ]; then
echo "VBoxSVC failed to start! Can not continue"
exit 1
fi
echo "VBoxSVC is running for user $USER with PID $SERVER_PID."
echo "Starting $EXEC_APP."
exec "$EXEC_APP" "$@"
EOF
A script similar to the one above is shipped with the binary version.
Link the binaries we want to run to the script:
for file in VirtualBox VBoxManage VBoxSDL VBoxVRDP; do [ -f "/opt/VirtualBox/$file" ] && ln -sfv "../../opt/VirtualBox/VBox.sh" "/usr/bin/$file" done
Create a desktop file:
cat > /usr/share/applications/VirtualBox.desktop << "EOF" [Desktop Entry] Encoding=UTF-8 Version=4.2.16 Name=InnoTek VirtualBox GenericName=Virtual Machine Type=Application Comment=Run several virtual systems on a single host computer Exec=VirtualBox TryExec=VirtualBox Path= Icon=/opt/VirtualBox/VBox.png Categories=Application;Emulator;System EOF