Question

I'm a developer and my typical environment is to use is a Linux guest OS running inside VirtualBox on a Windows host. Most software companies don't allow developers to install Linux bare metal on their machines. The Windows host/Linux guest solution is a good compromise.

My new workplace is different. They'll let me use any kind of set up I like. I'd still like to use a VirtualBox as I can simply import my existing VM to save the hassle of setting up my entire development environment from scratch.

Is there any reason I should not use a Linux host/Linux guest arrangement?

Was it helpful?

Solution

Using a Linux-on-Linux virtual machine is perfectly fine and can make sense for better configuration management.

For example, you can keep a fairly stable, lean, and secure host system like Debian and go wild with different tools within a VM – before doing something that could go wrong like updating a distro or installing experimental drivers, you can back up the VM image.

The drawback would be that hardware-related things are more difficult in the VM, but whether that matters depends on your work. And the general inconvenience of introducing another tool (virtualization) where none is needed.

But you should not reuse a VM from your previous employer. There's a substantial chance you might leak confidential information that way. Definitely set up the new development environment from scratch, but consider scripting it this time for better reproducibility.

An anecdote on why using a VM could be sensible. This year I worked on a project that dealt with low-level system programming. The software was known to work on a specific libc version. I didn't use a VM and worked on the same system I used for other tasks like writing emails. Unfortunately, my Linux distro was reaching it's end of life – but I couldn't update without breaking the project! This lead to a situation where I was mayyybe running a slightly out of date and insecure system for a few weeks. Using a VM would have prevented this – I could have kept the host system up to date and developed the project in an isolated environment. The next time I need a development system with a particular configuration (rather than a testing or production system that can be more easily managed with Docker), I'll definitely spin up a VM.

Licensed under: CC-BY-SA with attribution
scroll top