Living Remote – Eating dogfood, Part 2 – Running VM’s in a “Thin Client” operating system. What??!? and WHY??!?

By Fredrik Brattstig @virtualbrat

Title picture borrowed from https://nypost.com/article/why-some-dry-dog-foods-can-be-bad-for-your-pet/ (Getty Images, Shutterstock)

It’s time to get part 2 done in this series on how I live my daily professional life, at home, as a Technology Evangelist @IGEL Technology.
In the first part, https://virtualbrat.com/2021/12/06/living-remote-eating-dogfood-part-1/ I described my home office set up, my primary work tool, the Lenovo t470p running IGEL OS. This Laptop, that has a age of soon five years, runs IGEL OS as a champion! I’m using a handful of IGEL OS Custom Partitions on the machine, to allow me to do Microsoft Teams and Zoom meetings. I have Microsoft EDGE browser installed, though, I live most of my days using a Microsoft AVD session. It gives me a good sense of the usability of IGEL OS and Microsoft AVD/Windows 365 and I enjoy it greatly! The biggest benefit for me is – I do not need to care about backups, if my 5 year old laptop turns 11 years and the power supply die of high age, I can jump so any other IGEL OS device and just continue working… And as of this machine is a Laptop, with LTE WWAN adapter, I can work anywhere.

But now, lets look at a bit more advanced concept for a “thin client” operating system – Using it to run a Type 2 hypervisor. And WHY??!?
Lets start with the WHY??!? – In my role I do a lot of demo and lab tasks. Demo – showing potential customers/partners etc how IGEL OS works, how powerful the IGEL UMS management is etc. And when it comes to my LAB, which I will describe in Part 3, I’m testing a lot of new stuff, that eventually render into a blog here at virtualbrat.com. While on travels it makes good sense to be able to run a complete event – having the booth infrastructure running on a laptop. I tend to use cloud services, but it is always good to have a spare option, right. Its called Field Experience 🙂

Did you know that IGEL OS has VirtualBox (https://www.virtualbox.org/) as a optional feature? You simply select the optional feature, and VirtualBox gets installed. As i have 32 GB of RAM in my laptop, and I want to use multiple virtual machines, in many cases at the same time and want to be able to control them in a regular VirtualBox manner, I had to do some config changes though. First of all, running virtual machines requires a lot of storage. Luckily I have a 512 GB NVME disk in my laptop. But wait – IGEL OS installs and reserves 16GB of the disk, the rest is not available? There are multiple ways of adding storage volumes to IGEL OS, but I made it very simple for me: I burned the GParted live-iso (https://gparted.org/) to a USB stick, booted on that USB stick and created a new partition and formatted the partition with a file system readable by IGEL OS. So, after that I have a partition on my IGEL OS disk that is about 460 GB of size. To get that newly created partition to appear in IGEL OS, you just need to configure the IGEL Setup (or UMS Profile), to enable Storage Hotplug at Devices->Storage Devices->Storage Hotplug – voila, my VBoxMachines partitions show up in IGEL OS on every boot up and has loads of addressable hard disk space:

Disk space check using “df”

A check on disk space for my VM’s shows that I have some 400+GB to play with. Now, how will I go ahead and get VirtualBox app running? First we need to do some forensics on VirtualBox… VirtualBox has to run in “root” context. VirtualBox has a configuration file in .xml format, that hosts the settings of the application, plus it holds a record of all configured Virtual Machines (VM) and where they are located in the file system. It is named VirtualBox.xml and is located in /root/.config/VirtualBox/. As we all know, IGEL OS is a read-only file system, and the VirtualBox installation is in a read-only location, so we will need to create a config .xml-file and store it in a writable area. This is one of the things with the VBoxMachines partition, it can hold any kind of data. So, basically what I did was to start VirtualBox once, to get the basic configuration file. Using regular routines in VirtualBox, I set the default location for my VM’s and the standard config that I appreciate to have. When that was done, I closed VirtualBox and copied the .xml file to my writable partition /media/VBoxMachines/config/. By using file links, I now link the writable .xml file to the read-only file system, making changes to the VirtualBox configuration to be saved. So:

IGEL Setup->System->Firmware Customization->Custom Commands->Desktop->Final Desktop Command AND IGEL Setup->System->Firmware Customization->Custom Commands->Reconfiguration->After Reconfiguration i added:
ln -sf /media/VBoxMachines/config/VirtualBox.xml /root/.config/VirtualBox/VirtualBox.xml

This makes the settings to VirtualBox persistent.
VirtualBox also needs to have some kernel modules loaded, that can be done in runtime using modprobe The modules needed are called vboxdrv and vboxnetflt so by adding these lines after the above config, will automatically load those on startup of IGEL OS.

modprobe vboxdrv
modprobe vboxnetflt

It’s also possible to automatically load in the VirtualBox Extension pack by using the following code. (Keep in mind that you will need to have a license for your Extension pack if you are about to use this for production use).

vboxmanage extpack install --accept-license=%license_hex% /media/VBoxMachines/download/Oracle_VM_VirtualBox_Extension_Pack-6.1.26.vbox-extpack

This is actually what is needed to be done at boot-up to make VirtualBox to be executed with full functionality and to be functional in a user friendly way. Summarizing the config in IGEL Setup:

IGEL Setup->System->Firmware Customization->Custom Commands->Desktop->Final Desktop Command AND IGEL Setup->System->Firmware Customization->Custom Commands->Reconfiguration->After Reconfiguration i added:
ln -sf /media/VBoxMachines/config/VirtualBox.xml /root/.config/VirtualBox/VirtualBox.xml
vboxmanage extpack install --accept-license=%license_hex% /media/VBoxMachines/download/Oracle_VM_VirtualBox_Extension_Pack-6.1.26.vbox-extpack
modprobe vboxdrv
modprobe vboxnetflt

As I wrote earlier, VirtualBox needs to run in root context to allow hardware interaction and so on. I just open up a terminal, log in as root and type virtualbox and off we go! Performance is great and all works very well!
The below video shows VirtualBox running on IGEL OS and firing up a IGEL UMS Server (running in Ubuntu Server) and two IGEL OS Virtual Machines.

This is why I’m running Virtual Machines in IGEL OS, as it makes me able to demo and lab on configurations and features. And, while in Zoom or Teams meetings, I can share the desktop where the VM’s run and have demos done for the audience.

Another thing that i tend to use: In Zoom, you can share content and desktop etc, but you can also share content from 2nd camera and this is exceptional, because that gives me the possibility to use a HDMI grabber from physical IGEL OS endpoints. The HDMI grabber “converts” the HDMI (or DisplayPort) output to a USB-camera stream and allow IGEL OS to use a HDMI video stream as a web camera feed. This is very useful when presenting demo’s, or recording high performance videos. Example’s of HDMI grabbers that I use is the Elgato CamLink 4K or the Magewell USB Capture 4K

By that, part 2 is over, See you again in part 3, where I will try do describe my experiences of being on the road with IGEL OS and tell my experiences of public speaking and on stage resenting with IGEL OS . See you soon!

/Fred