The artifact of this project is a manually packaged .box
file with Ubuntu
Budgie 17 installed1.
Actually, the box is already packaged for you and distributed on Vagrant's website.
This GitHub project is used as an issue tracker as well as a notepad on how exactly the box was prepared.
I've added stuff like Oracle's Guest Additions and the vagrant
user account
(password vagrant
). I've also taken the liberty to change the appearance of
the distribution as to more closely resemble Solus 3; the original
Budgie distribution. For example, the space-stealing Plank dock has
been removed and the app icons are put back where they belong, in the taskbar.
Only software packages necessary to get the VM running has been installed, i.e., no bloat. You will get a VM that is pritty much a bare Ubuntu Budgie 17 as originally intended, except it will look a hell of a lot better.
1 The semantical concept captured here is elsewhere described as a "minimal" and/or "base" box. I refrain from using either term since 1.67 GB with a full office suite installed et cetera is hardly "minimal" nor am I convinced that all use-cases of this box are to derive yet another box as implied by the word "base". We are building a box. Period.
Make sure you have Vagrant installed, VirtualBox installed together with the Extension Pack, then, in theory, all you should have to do in order to get a Virtual Machine up and running with Ubuntu Budgie 17 is:
vagrant init pristine/ubuntu-budgie-17-x64
vagrant up
Be warned: A few noteworthy issues exist with products in the ecosystem we depend on.
For starters, Vagrant < 2.0.2 can't configure a hostname and network on Ubuntu
17.10 (see this issue). net-tools
and ifupdown
have been added to
the box for backward compatibility with older Vagrant versions.
The added packages do not fully solve the problem. The first vagrant up
call
does not crash and Internet will work during the first user session, but the VM
will not be accessible using the new hostname or static IP until after a VM
restart. Plus, what normally is a Wi-Fi icon in the bottom right corner of the
screen will be switched to a spinning circular icon. The icon will reset to
normal after a few minutes.
Another issue is that VirtualBox's 3D acceleration is like broken and if enabled, will probably make the machine so slow it's not going to be usable anymore. Don't enable it. See this issue.
Create a new VM instance. Name it ubuntu-budgie-17
. Select type Linux
,
version Ubuntu (64-bit)
. Set memory size to 4096 MiB
.
Smack in a dynamically allocated disk with max size 40 GB
, type VMDK
.
Notes:
Open settings. Enable a bidirectional clipboard.
Floppy disk?? There's nothing to be discussed here. Get rid of that shit.
Use two CPUs (no particular reason). Click "OK" to save the new settings and close the dialog.
Do not go into "Display" and enable 2D- or 3D acceleration. 2D acceleration is for Windows guests only [source] and 3D acceleration is broken [GitHub issue].
Using the terminal on your host machine, bump the video memory to 256 MiB
:
VBoxManage modifyvm ubuntu-budgie-17 --vram 256
Notes:
C:\Program Files\Oracle\VirtualBox
.Mount the OS installation's ISO file (grab it here). Click on the little CD icon to the right in the next picture. Then select "Choose Virtual Optical Disk File...".
The file I mounted was named: ubuntu-budgie-17.10.1-desktop-amd64.iso
.
Start the VM and follow suit.
On this particular screen, I had to drag the window to the left in order to reveal the "Continue" button lol.
Password = vagrant
.
Once the installation is done, the happy path would be to make a clean restart and boot into a fresh OS. Alas, after numerous hackathons, I must conclude that this is impossible without ultra weird disk read failures and hangs. So, KISS: power off the machine using VirtualBox and then unmount the installation medium.
Boot up the VM and open a terminal (Tilix), run:
sudo apt update
sudo apt full-upgrade -y
If the upgrade crash because a lock file is being in use, then it's probably
cuz unattended-upgrades
is running in the background. It's possible to
circumvent this obstacle by manually deleting lock files /var/lib/dpkg/lock
and /var/cache/apt/archives/lock
. I could never cheat the system, however.
Deleting the lock files never made me able to fully complete the upgrade without
additional problems. My advice is to wait a few minutes (actually, more like
5-10 minutes) and then try again (more info).
After the upgrade completes, restart. If you don't restart, there will be a lot of problems lol. Especially so if the kernel was upgraded.
Next, run:
wget https://github.com/martinanderssondotcom/box-ubuntu-budgie-17-x64/raw/master/prepare1.sh
sudo sh prepare1.sh
One of the things this script does is to install Oracle's Guest Additions. This software stack will not - reportedly - install successfully. Something like this will be visible somewhere in the output of the script:
VirtualBox Guest Additions: modprobe vboxsf failed
According to this message, the Linux kernel module vboxsf
failed to install
and this guy is sort of responsible for shit related to "shared folders".
Luckily, this message appears to be a false flag. lsmod
would, after a fresh
reboot, list vboxsf
. Plus, as will become evident later, Vagrant's shared
folder feature does work. So, I'd say it's safe to ignore the message.
The setup script we executed (one of two parts/scripts in total) removed the dock app "Plank". This dock is still visible because we haven't restarted the machine after running the script. Either, 1) restart or 2) manually quit the dock (Ctrl + right mouse button to bring up the menu). I chose number 2.
If we did restart, and then opened the Chromium web browser, it would also become evident that Chromium insists on asking the user for a password to unlock a "keyring".
Turns out that when our OS user logs in automagically, the "login" keyring is not automagically unlocked and Chromium, who uses this keyring to store passwords and what not, will simply harass the user for the user password. Once for each OS session; which kind of annihilate any utility we got out from the autologin feature in the first place. Big annoyance!
One of all involved parties has from a security point-of-view, fuct up. A rule of thumb when it comes to security design is to not piss in the user's face. When productivity is hindered by security, the user will simply find his way to disable the security and be at an even greater risk than what was first intended. Of course, that is exactly what we shall do by removing the password.
Open the "Passwords and Keys" GUI app. Change the login keyring's password from
vagrant
to blank. [source]
Open "Budgie Desktop Settings".
In the Style page, set the following:
Adapta-Eta
Papirus
off
hell no
on
In the Desktop page, enable the Trash desktop icon.
In the Fonts page, set the following:
Noto Sans UI Bold 10
Noto Sans UI Regular 10
Noto Sans UI Regular 10
Hack Regular 10
In the Autostart page, remove Caffeine Indicator.
In the Top Panel page, Settings tab, set the following:
Bottom
off
Same page, Applets tab.. rearrange the taskbar nightmare into something more soothing.
Notes:
Unpin the LibreOffice Writer app launcher icon and pin Tilix (terminal).
At this point, the desktop looks almost like the finished product. The script we ran a bit earlier did make the taskbar just a tiny bit transparent which is not noticeable before a restart. Similarly, the tremendously nonsensical and bloated Caffeine Indicator is still visible in the taskbar before a restart.
But, we don't need to restart for the benefit of this box setup.
Increase audio volume to max.
Open the "Budgie Welcome" app and check "Show this dialog on startup".
Open a terminal and run:
wget https://github.com/martinanderssondotcom/box-ubuntu-budgie-17-x64/raw/master/prepare2.sh
sudo sh prepare2.sh
rm prepare?.sh
history -c
Shut down the machine (or let Vagrant do that automagically when running the next command).
On the host machine, download this Vagrantfile and put it in the working directory. Then run:
vagrant package --base ubuntu-budgie-17 --output ubuntu-budgie-17.box --vagrantfile Vagrantfile
mkdir test-vm
cd test-vm
vagrant init ../ubuntu-budgie-17.box
Add a customized hostname to the generated Vagrantfile and also some random network settings. For example:
config.vm.hostname = 'xxx'
config.vm.network 'private_network', ip: '192.168.66.66'
Run:
vagrant up
Make sure:
Run (you might wanna run the commands in the next section first!):
vagrant destroy -f
vagrant box remove ../ubuntu-budgie-17.box
cd..
rm test-vm -r
Go to this page and upload the box file.
Here's a few commands needed for the description(s):
budgie-desktop --version
lsb_release -r
uname -r
sudo VBoxService --version