VirtualBox 5.0 and Crouton Fedora 24
Recently I had to install VirtualBox onto my Chromebook which is running the latest version of Crouton Fedora with Fedora 24 which you can get from Github.
Installing VirtualBox in the original Crouton with Ubuntu/Debian is very easy because one of the Crouton developers
divx118 (huge props to him) builds
.deb packages with kernel headers, so you don’t have to compile the entire kernel yourself to get the VirtualBox modules running.
Installing VirtualBox on Crouton Fedora is also very easy because it can use the mentioned prebuilt packages, but there are a few extra steps needed.
Modifying the cmdline to enable module sideload and VT-x
We have to tell the ChromeOS kernel that we want to load extra modules ourselves and that we want to enable virtualization. There is a very nice script by
divx118 which does this for us:
Execute this from crosh shell (not Fedora shell):
cd ~/Downloads wget https://raw.githubusercontent.com/divx118/crouton-packages/master/change-kernel-flags sudo sh ~/Downloads/change-kernel-flags
and reboot (power off then on). Afterwards check to see if
disablevmx=off parameters are present by executing
Drop to Fedora shell and install the following packages:
sudo dnf install binutils gcc make patch libgomp glibc-headers glibc-devel dpkg wget
We have to unbind the
/lib/modules folder so we don’t accidentally overwrite ChromeOS kernel modules, which would mean that you have to recover from an USB drive and lose all your data. Do the following from the Crouton Fedora shell:
sudo su cd ~/Downloads wget https://raw.githubusercontent.com/divx118/crouton-packages/master/rc.local cp rc.local /etc/rc.local chmod +x /etc/rc.local
and exit the chroot and reenter it for rc.local to do it’s thing.
Get kernel headers and extract them
Do the following:
# get kernel headers from divx118 repo sudo su cd ~/Downloads/ mkdir vbox cd vbox wget https://github.com/divx118/crouton-packages/raw/master/pool/main/l/linux-source-3.8.11/linux-headers-3.8.11_20160501_amd64.deb wget https://github.com/divx118/crouton-packages/raw/master/pool/main/l/linux-source-3.8.11/linux-image-3.8.11_20160501_amd64.deb # unpack them dpkg-deb -R ./linux-headers-3.8.11_20160501_amd64.deb . dpkg-deb -R ./linux-image-3.8.11_20160501_amd64.deb . # set kernel path for vbox installer: export KERN_DIR=/root/Downloads/vbox/usr/src/linux-headers-3.8.11/
You can see what your kernel version and architecture is by issuing
uname -a to the shell. In my case, my Toshiba Chromebook 1 is on kernel
x86_64 architecture. Substitute the files for your kernel/architecture. You can find additional packages here:
Be careful to use raw github links instead of the http ones which would result in getting a webpage instead of the .deb file.
Last thing is to “trick” the kernel packages to use gcc6 which we installed earlier instead of gcc5 with:
cp /root/Downloads/vbox/usr/src/linux-headers-3.8.11/include/linux/compiler-gcc5.h /root/Downloads/vbox/usr/src/linux-headers-3.8.11/include/linux/compiler-gcc6.h
and you are good to go!
sudo su cd /etc/yum.repos.d/ wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo dnf install VirtualBox-5.0 -y
DNF will tell you if kernel modules compiled successfully and point you to the log file if they haven’t.
Have fun and contact me if you run into issues!