VS Code Saved My Linux Mint VM

I’ve been a huge convert to Linux Mint and Ubuntu for several years now.  In the last year I went so far as to be running Linux as my bare metal OS on both my work laptop and home desktop.  I’ve never had an update for Mint or Ubuntu get so borked up that the UI refused to function properly…until now.

I live in my VMs, almost all of them running some flavor of Linux.  Between my various machines I must have a few dozen VMs for all manners of major and minor tasks.  That means some of them don’t get fired up very often.  One in particular caught my fancy a few days ago for me to try something out.  It was a pretty old VM, running Linux Mint 17.1.  While I was playing around I decided to use the UI update utility to make sure all the software was up to snuff.  It ran into some hiccups downloading a few packages so I went into the utility to point it to two new package repos.  Unfortunately that UI started crashing.  Then the buttons stopped rendering correctly.  I did a graceful shutdown to bring it back up and that’s where things go really off the rails.

VirtualBox 5 and Linux VMs are hit or miss nowadays when it comes to having 3D acceleration turned on, especially Cinnamon under 17.x.  Often things get corrupted and a simple restart fixes it, but this wasn’t the case.  Fortunately when Cinnamon gets unhappy it can just go into a default non-Cinnamon desktop which usually works fine enough to get things done, but I figured I’d just turn off 3D acceleration and everything would be fine.  Nope.  Cinnamon still failed to load.  OK, fine I’ll just do what I need in the other desktop.  Again, this is where things start going off the rails.

Somehow the partial patch had corrupted the system.  The default desktop had very errant behavior.  The pop-up menus failed to render.  Most of the icons were missing.  The file manager failed to load.  The update manager failed to load.  All of this spells doom because the only way to get to a terminal is through the right-click desktop menu (why they decided to do this I do not know).  No matter, I’ll just boot to the command line and to use command line apt to update again.  For whatever reason that VM refused to do so, no matter which key sequence I chose.  Without being able to get to a terminal or launch the update utility the machine was permanently broken.

If I couldn’t get to a terminal all was lost.  I decided to see if the one program I loaded the VM to use would still work even though the icon was lost.  Sure enough it did, although with a window border more reminiscent of KDE 1.x than anything modern.  Whatever, I’d get the one thing done before crushing this damn thing.  A few icons underneath of it was VS Code with an equally sad icon.  VS Code has a terminal window, could that be a potential route to fix things?

I clicked on the VS Code icon and a few seconds later there was full blown VS Code in my face.  It renders everything using the Chrome engine since it is built on Electron, which is often a cause for problems with 3D acceleration on, ironically.  Sure enough the terminal window worked.  A quick sudo apt-get update then sudo apt-get upgrade loaded a few hundred megabytes of updates and then a sudo shutdown -r now would hopefully bring things back…or it would kill it for good.  Sure enough the login window had an actually rendering button again.  Thank god!  Cinnamon started up beautifully again.  Again, thank god! I shut the VM down, turned 3D acceleration back on and everything continued to function.  This was perfect!

I still don’t know how the update manager messed itself up so badly and then borked the whole install.  I still don’t know why that VM refuses to drop down to the shell for me (this particular nit I’m going to work out though).  I still don’t know why the fall back desktop doesn’t have Terminal in one of the application menus.  It is incredibly ironic though that to solve this I ultimately ended up using a Microsoft IDE that is using a JavaScript engine and web browser rendering engine to fix the system.