How to Install Latest VirtualBox 6.0 in Linux

VirtualBox is an open source cross-platform virtualization software, it can be installed on any operating system and enable you to install and run multiple guest operating systems on same computer.

For example, if you install it on your Linux system, you can run Windows XP operating system under it as a Guest OS or run Linux OS on your Windows system and so on. This way, you can install and run as many as guest operating systems as you like, the only limit is disk space and memory.

Recently Oracle has released latest stable version of Virtualbox 6.0.0, the newest version of Virtual box comes with so many major changes and new features added to it.

Whats new in Virtualbox 6.0

  • Added support for exporting a virtual machine to Oracle Cloud Infrastructure.
  • A much improved HiDPI and scaling support, along with superior detection and per-machine configuration.
  • A Major rework of user interface with smooth and easy setup of virtual machines.
  • A new file manager allows user to manage the guest file system and copy files between host and guest.
  • A major update of 3D graphics device emulation on Linux guests.
  • vboximg-mount utility for hosts enables users to access the content of guest disks on the host.
  • Added support for using Hyper-V on Windows host.

You can see the complete new change log details about VirtualBox 6.0 on their Official Changelog Page.

This guide explains how to install VirtualBox 6.0 on RHEL, CentOS and Fedora systems using VirtualBox’s own repository with YUM and DNF (for Fedora 22+ releases) tool.

This guide also explains how to install VirtualBox 6.0 on Debian, Ubuntu and Linux Mint systems using VirtualBox’s own repository with APT-GET or APT command.

Installing VirtualBox 6.0 in RHEL/CentOS and Fedora

If you’ve any earlier version of Virtualbox installed, remove that before installing latest version.

# yum remove VirtualBox*
# dnf remove VirtualBox*  [On Fedora 22+]

Adding VirtualBox Repository

Next add the VirtualBox own repository to install latest VirtualBox 6.0 on following systems.

For RHEL/CentOS 7/6/
# cd /etc/yum.repos.d/
# wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
For RHEL/CentOS 5
# wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -Uvh epel-release-5-4.noarch.rpm
For Fedora 24-29
# cd /etc/yum.repos.d/
# wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

Install Dependency Packages for VirtualBox

VirtualBox uses vboxdrv kernel module to control and allocate physical memory for execution of guest operating systems. Without this module, you can still use the VirtualBox to create and configure virtual machines, but they will not work.

So, to make VirtualBox fully functional you will need to update your system first, then install some additional modules like DKMS, kernel-headers and kernel-devel and some dependency packages.

# yum update
# yum install binutils qt gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms

Install VirtualBox 6.0

Once you’ve installed all the needed dependency packages, you can install latest version of VirtualBox using following command.

# yum install VirtualBox-6.0

Rebuild Kernel Modules for VirtualBox 6.0

The below command will automatically create vboxusers group and user and also search and automatically rebuild required kernel modules.

------------- Fedora 22+ and CentOS/RHEL 7 ------------- 
/usr/lib/virtualbox/vboxdrv.sh setup
 
------------- Fedora 18-16 and CentOS/RHEL 6/5 ------------- 
/etc/init.d/vboxdrv setup
## OR ##
service vboxdrv setup

If the above build process fails, you will get a warning messages similar to below.

vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel kernel-devel-4.19.0-1.el7.elrepo.x86_64

Then you need to first check your installed kernel and then install needed kernel-devel using following commands.

# uname -r
# yum install kernel-devel-CURRENT_KERNEL

Note: replace CURRENT_KERNEL with string you get from uname -r.

Now run the build setup again.

# /usr/lib/virtualbox/vboxdrv.sh setup

Next, replace user_name in the following command with your own user name.

# usermod -a -G vboxusers user_name

Troubleshooting

If you get any error message like KERN_DIR or if your kernel source directory not detected automatically by build process, you can set it by using following command. Make sure you change kernel version according to your system as shown in red color.

## RHEL / CentOS / Fedora ##
KERN_DIR=/usr/src/kernels/4.19.0-1.el7.elrepo.x86_64

## Export KERN_DIR ##
export KERN_DIR

Installing VirtualBox 6.0 in Debian, Ubuntu and Linux Mint

First, uninstall any earlier version of Virtualbox if any.

$ sudo apt-get remove virtualbox-*

Next, install latest VirtualBox 6.0 version using official Virtualbox repository. To add the repository, use the following command as shown.

$ sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install virtualbox-6.0

Starting VirtualBox 6.0

Simply execute following command to start it from the terminal or use launcher from menu to start.

# VirtualBox
VirtualBox 6.0 Screenshots on CentOS 7
VirtualBox 6.0 Running on CentOS 7

VirtualBox 6.0 Running on CentOS 7

Create Virtalbox New Guest Machine

Create Virtalbox New Guest Machine

Installing VirtualBox Extension Pack

If you need some additional functionality such as VirtualBox RDP, PXE, ROM with E1000 support and USB 2.0 Host Controller support, etc. You need to download and install the VirtualBox Extension Pack using following wget command.

# # wget http://download.virtualbox.org/virtualbox/6.0.0/Oracle_VM_VirtualBox_Extension_Pack-6.0.0.vbox-extpack

To install the extension pack, you must have Virtualbox 6.0 installed, once you downloaded vbox-extpack open with Virtualbox as shown below.

If it doesn’t work out, then open Virtaulbox –> Preferences –> Extensions and browse for the vbox-extpack to install it.

Install Virtualbox Extension Pack

Install Virtualbox Extension Pack

Read Also: How to Enable USB in VirtualBox

Updating VirtualBox

If you want to update the VirtualBox with latest version in the future, you can simply run the following command to update it.

On RHEL/CentOS/Fedora
# yum update VirtualBox-6.0
On Ubuntu/Linux Mint
# apt-get install VirtualBox-6.0

Remove VirtualBox

If in case you want to remove VirtualBox completely, just use the following command to remove it completely from your system.

On RHEL/CentOS/Fedora
# cd /etc/yum.repos.d/
# rm -rf virtualbox.repo
# yum remove VirtualBox-6.0
On Ubuntu/Linux Mint
# apt-get remove VirtualBox-6.0

You can also Download VirtualBox 6.0 for other Linux, Windows and Mac OS X platforms.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Ravi Saive

I am Ravi Saive, creator of TecMint. A Computer Geek and Linux Guru who loves to share tricks and tips on Internet. Most Of My Servers runs on Open Source Platform called Linux. Follow Me: Twitter, Facebook and Google+

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

134 Responses

  1. megatr0n says:

    Thank you so much. I got this setup on Centos7. So far no problems.

  2. Guy says:

    Thanks Ravi, got it installed, per your instructions. Now it’s off to installing a Windows 7 virtual machine. (I may be back – soon)

  3. Guy says:

    Installing VirtualBox 6.0 in Debian, Ubuntu and Linux Mint does not work in Linux Mint 19. Can anyone tell me how to get VirtualBox 6.0 installed?

    • Ravi Saive says:

      @Guy,

      Have you followed instructions provided in the article for Linux Mint? If not, follow below instructions.

      Install VirtualBox 6.0 on Linux Mint 19 and Linux Mint 18.

      $ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
      $ echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bionic contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
      $ sudo apt-get update
      $ sudo apt-get install -y virtualbox-6.0
      
  4. Ruth says:

    Hi,

    I am also stuck on installing this. I have a centos7 and tried to install virtualbox. I started by downloading the virtualbox.repo and added it into my repositories.

    But as soon as I type `yum update` I get a massive error:

    [[email protected] yum.repos.d]# yum install VirtualBox-5.1
    Loaded plugins: fastestmirror, ovl
    virtualbox/7/x86_64/signature | 181 B 00:00:00
    Retrieving key from https://www.virtualbox.org/download/oracle_vbox.asc
    virtualbox/7/x86_64/signature | 1.1 kB 00:00:00 !!!
    Traceback (most recent call last):
    File “/usr/bin/yum”, line 29, in
    yummain.user_main(sys.argv[1:], exit_code=True)
    File “/usr/share/yum-cli/yummain.py”, line 370, in user_main
    errcode = main(args)
    File “/usr/share/yum-cli/yummain.py”, line 179, in main
    result, resultmsgs = base.doCommands()
    File “/usr/share/yum-cli/cli.py”, line 583, in doCommands
    return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds)
    File “/usr/share/yum-cli/yumcommands.py”, line 445, in doCommand
    return base.installPkgs(extcmds, basecmd=basecmd)
    File “/usr/share/yum-cli/cli.py”, line 983, in installPkgs
    txmbrs = self.install(pattern=arg)
    File “/usr/lib/python2.7/site-packages/yum/__init__.py”, line 4825, in install
    mypkgs = self.pkgSack.returnPackages(patterns=pats,
    File “/usr/lib/python2.7/site-packages/yum/__init__.py”, line 1074, in
    pkgSack = property(fget=lambda self: self._getSacks(),
    File “/usr/lib/python2.7/site-packages/yum/__init__.py”, line 778, in _getSacks
    self.repos.populateSack(which=repos)
    File “/usr/lib/python2.7/site-packages/yum/repos.py”, line 347, in populateSack
    self.doSetup()
    File “/usr/lib/python2.7/site-packages/yum/repos.py”, line 157, in doSetup
    self.retrieveAllMD()
    File “/usr/lib/python2.7/site-packages/yum/repos.py”, line 88, in retrieveAllMD
    dl = repo._async and repo._commonLoadRepoXML(repo)
    File “/usr/lib/python2.7/site-packages/yum/yumRepo.py”, line 1479, in _commonLoadRepoXML
    result = self._getFileRepoXML(local, text)
    File “/usr/lib/python2.7/site-packages/yum/yumRepo.py”, line 1256, in _getFileRepoXML
    size=102400) # setting max size as 100K
    File “/usr/lib/python2.7/site-packages/yum/yumRepo.py”, line 1031, in _getFile
    **kwargs
    File “/usr/lib/python2.7/site-packages/urlgrabber/mirror.py”, line 448, in urlgrab
    return self._mirror_try(func, url, kw)
    File “/usr/lib/python2.7/site-packages/urlgrabber/mirror.py”, line 425, in _mirror_try
    return func_ref( *(fullurl,), opts=opts, **kw )
    File “/usr/lib/python2.7/site-packages/urlgrabber/grabber.py”, line 1197, in urlgrab
    return self._retry(opts, retryfunc, url, filename)
    File “/usr/lib/python2.7/site-packages/urlgrabber/grabber.py”, line 1086, in _retry
    r = apply(func, (opts,) + args, {})
    File “/usr/lib/python2.7/site-packages/urlgrabber/grabber.py”, line 1191, in retryfunc
    _run_callback(opts.checkfunc, obj)
    File “/usr/lib/python2.7/site-packages/urlgrabber/grabber.py”, line 1054, in _run_callback
    return cb(obj, *arg, **karg)
    File “/usr/lib/python2.7/site-packages/yum/yumRepo.py”, line 1728, in _checkRepoXML
    self.gpg_import_func(self, self.confirm_func)
    File “/usr/lib/python2.7/site-packages/yum/__init__.py”, line 6418, in getKeyForRepo
    self._getAnyKeyForRepo(repo, repo.gpgdir, repo.gpgkey, is_cakey=False, callback=callback)
    File “/usr/lib/python2.7/site-packages/yum/__init__.py”, line 6337, in _getAnyKeyForRepo
    if hex(int(info[‘keyid’]))[2:-1].upper() in misc.return_keyids_from_pubring(destdir):
    File “/usr/lib/python2.7/site-packages/yum/misc.py”, line 599, in return_keyids_from_pubring
    for k in ctx.keylist():
    gpgme.GpgmeError: (7, 32870, u’Inappropriate ioctl for device’)

    Can you maybe help me?

    • Ravi Saive says:

      @Ruth,

      To fix, open and edit the file /etc/yum/pluginconf.d/rhnplugin.conf and change enabled to 0 and then do.

      # yum clean all
      # yum list
      
  5. Rutwik Bharadwaj says:

    Please have a look at /var/log/vbox-install.log to trace why the build process failed

    Run the following commands to build the kernel modules correctly : ( I am using RHEL -7)

    # systemctl status vboxdrv.service
    # yum install -y kernel-devel-3.10.0-693.el7.x86_64
    # systemctl status vboxdrv.service
    # systemctl start vboxdrv.service
    # systemctl status vboxdrv.service
    # service vboxdrv start
    # /usr/lib/virtualbox/vboxdrv.sh setup
    

    YOU ARE ALL SET TO GO.

  6. naman says:

    Hey i am stuck installing VirtualBox please help!
    What should i do getting this vboxdrv.sh: failed: modprobe vboxdrv failed. Please use ‘dmesg’ to find out why.

    Below mentioned is my /var/log/vbox-install.log file-
    make KBUILD_VERBOSE=1 SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 CONFIG_MODULE_SIG= -C /lib/modules/3.10.0-514.el7.x86_64/build -j4 modules
    arch/x86/Makefile:96: stack-protector enabled but compiler support broken
    Makefile:641: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
    make[1]: gcc: Command not found
    make[1]: warning: -jN forced in submake: disabling jobserver mode.
    test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
    echo >&2; \
    echo >&2 ” ERROR: Kernel configuration is invalid.”; \
    echo >&2 ” include/generated/autoconf.h or include/config/auto.conf are missing.”;\
    echo >&2 ” Run ‘make oldconfig && make prepare’ on kernel src to fix it.”; \
    echo >&2 ; \
    /bin/false)
    mkdir -p /tmp/vbox.0/.tmp_versions ; rm -f /tmp/vbox.0/.tmp_versions/*
    make -f scripts/Makefile.build obj=/tmp/vbox.0
    gcc -Wp,-MD,/tmp/vbox.0/linux/.SUPDrv-linux.o.d -nostdinc -isystem -I./arch/x86/include -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -std=gnu89 -O2 -m64 -mno-mmx -mno-sse -mno-red-zone -mcmodel=kernel -maccumulate-outgoing-args -Wframe-larger-than=2048 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -pg -include /tmp/vbox.0/include/VBox/SUPDrvMangling.h -I/lib/modules/3.10.0-514.el7.x86_64/build/include -I/tmp/vbox.0/ -I/tmp/vbox.0/include -I/tmp/vbox.0/r0drv/linux -I/tmp/vbox.0/vboxdrv/ -I/tmp/vbox.0/vboxdrv/include -I/tmp/vbox.0/vboxdrv/r0drv/linux -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING -DSUPDRV_WITH_RELEASE_LOGGER -Wno-declaration-after-statement -DCONFIG_VBOXDRV_AS_MISC -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS -fno-omit-frame-pointer -fno-pie -DMODULE -D”KBUILD_STR(s)=#s” -D”KBUILD_BASENAME=KBUILD_STR(SUPDrv_linux)” -D”KBUILD_MODNAME=KBUILD_STR(vboxdrv)” -c -o /tmp/vbox.0/linux/.tmp_SUPDrv-linux.o /tmp/vbox.0/linux/SUPDrv-linux.c
    /bin/sh: gcc: command not found

  7. Lahcen z says:

    thanks, so quick so helpful ..

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.