Use Oracle's base box
Now, last year I wrote about how to create your own Vagrant Base Box: Oracle Linux 7 Update 5 is out: time to create a new Vagrant Base Box. So I could create my own, but already quite some time ago I found out that Oracle supplies those base boxes.They're made available at https://yum.oracle.com/boxes, and there are boxes for OL6, OL7 and even OL8. I want to use OL 7U7, and thus I got started with that one. It's neatly described at the mentioned link and it all comes down to:
$ vagrant box add --name <name> <url> $ vagrant init <name> $ vagrant up $ vagrant ssh
And in my case:
$ vagrant box add --name ol77 https://yum.oracle.com/boxes/oraclelinux/ol77/ol77.box $ vagrant init ol77 $ vagrant up $ vagrant ssh
Before you do that vagrant up, you might want to edit your vagrant file, to add a name for your VM:
BOX_NAME="ol77" VM_NAME="ol77" # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure("2") do |config| # The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. config.vm.box = BOX_NAME ... # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. # Example for VirtualBox: # config.vm.provider "virtualbox" do |vb| vb.name = VM_NAME # # Display the VirtualBox GUI when booting the machine # vb.gui = true # # # Customize the amount of memory on the VM: # vb.memory = "1024" end # ...
Otherwise your VM name in Virtual box would be someting like ol7_default_1235897983, something cryptic with a random number.
If you do a vagrant up now it will boot up nicely.
VirtualBox Guest Additions
The VirtualBox GuestAdditions are from version 6.12, while my VirtualBox installation already has 6.14. I found it handy to have a plugin that auto-updates it. My co-Oracle-ACE Maarten Smeets wrote about that earlier. It comes down to executing the following in a command line:vagrant plugin install vagrant-vbguest
If you do a vagrant up now, it will update the guest additions. However, to be able to do so, it needs to install all kinds of kernel packages to compile the drivers. So, be aware that this might take some time, and you'll need internet connection.
Server with GUI
The downloaded box is a Linux Server install, without a UI. This probably is fine for most of the installations you do. But I like to be able to log on to the desktop from time to time, and I want to be able to connect to that using MobaXterm, and be able to run a UI based installer or application. A bit of X-support is handy. How to do that, I found at this link.GUI support is one of the group packages that are supported by Oracle Linux 7, and this works exactly the same as RHEL7 (wonder why that is?).
To list the available packages groups are supported, you can do:
[vagrant@localhost ~]$ sudo yum group list There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Available Environment Groups: Minimal Install Infrastructure Server File and Print Server Cinnamon Desktop MATE Desktop Basic Web Server Virtualization Host Server with GUI Available Groups: Backup Client Base Cinnamon Compatibility Libraries Console internet tools Development tools E-mail server Educational Software Electronic Lab Fedora Packager Fonts General Purpose Desktop Graphical Administration Tools Graphics Creation Tools Hardware monitoring utilities Haskell Input Methods Internet Applications KDE Desktop Legacy UNIX Compatibility MATE Milkymist Network Infrastructure Server Networking Tools Office Suite and Productivity Performance Tools Scientific support Security Tools Smart card support System Management System administration tools Technical Writing TurboGears application framework Web Server Web Servlet Engine Xfce Done
(After having executed vagrant ssh.)
You'll find 'Server with GUI' as one of the options. This will install all the necessary packages to run Gnome. But, if you want to have KDE there's also package group for that.
To install it you would run:
[vagrant@localhost ~]$ sudo yum groupinstall 'Server with GUI' There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Resolving Dependencies --> Running transaction check ---> Package ModemManager.x86_64 0:1.6.10-3.el7_6 will be installed --> Processing Dependency: ModemManager-glib(x86-64) = 1.6.10-3.el7_6 for package: ModemManager-1.6.10-3.el7_6.x86_64 --> Processing Dependency: libmbim-utils for package: ModemManager-1.6.10-3.el7_6.x86_64 --> Processing Dependency: libqmi-utils for package: ModemManager-1.6.10-3.el7_6.x86_64 --> Processing Dependency: libqmi-glib.so.5()(64bit) for package: ModemManager-1.6.10-3.el7_6.x86_64 .... .... python-firewall noarch 0.6.3-2.0.1.el7_7.2 ol7_latest 352 k systemd x86_64 219-67.0.1.el7_7.2 ol7_latest 5.1 M systemd-libs x86_64 219-67.0.1.el7_7.2 ol7_latest 411 k systemd-sysv x86_64 219-67.0.1.el7_7.2 ol7_latest 88 k Transaction Summary ======================================================================================================================== Install 303 Packages (+770 Dependent packages) Upgrade ( 7 Dependent packages) Total download size: 821 M Is this ok [y/d/N]:
It will list a whole bunch of packages with dependencies that it will install. If you're up to it, at this point you would confirm with 'y'. Notice that there will be a bit over a 1000 packages installed, so it will be busy with that for a while.
This is because it will install the complete Gnome Desktop environment.
You could also do:
[vagrant@localhost ~]$ sudo yum groupinstall 'X Window System' 'GNOME'
That will install only the minimum, necessary packages to run Gnome. I did not try that yet.
If it finished installing all the packages, the one thing that is left, is to change the default runlevel, since obviously you want to start in the GUI by default. I think most in the cases, at least.
This is done by:
[vagrant@localhost ~]$ sudo systemctl set-default graphical.target
I could have put that in a provision script, like I've done before. And maybe I will do that.
Package the box
You will have noticed that it would have stamped quite some time to update the kernel packages for installing the latest Guest Additons and the GUI desktop. To prevent us from doing that over and over again, I thought it was wise to package the box into a ol77SwGUI box (Server with GUI). I described that in my previous article last year:vagrant package --base ol77_default_1575298630482_71883 --output d:\Projects\vagrant\boxes\OL77SwGUIv1.0.box
The result
This will deliver you a Vagrant Box/VirtualBox image with:
- Provider: VirtualBox
- 64 bit
- 2 vCPUs
- 2048 MB RAM
- Minimal package set installed
- 32 GiB root volume
- 4 GiB swap
- XFS root filesystem
- Extra 16GiB VirtualBox disk image attached, dynamically allocated
- Guest additions installed
- Yum configured for Oracle Linux yum server. _latest and _addons repos enabled as well as _optional_latest, _developer, _developer_EPEL where available.
- And as an extra addon: Server with GUI installed.
Update
I found that that the box from Oracle lacks Video Memory to run VM in GUI mode. Because GUI wasn't in the VM, it 8 MB was sufficient.I added the following to change the video memory:
config.vm.provider "virtualbox" do |vb| vb.name = VM_NAME # # Display the VirtualBox GUI when booting the machine # vb.gui = true # # # Customize the amount of memory on the VM: # vb.memory = "1024" # # https://stackoverflow.com/questions/24231620/how-to-set-vagrant-virtualbox-video-memory vb.customize ["modifyvm", :id, "--vram", "128"] end
Based on the hint found here on StackOverflow.
I also added this on my GitHub vagrant project.