Heya, I have been using virtual machines (VMs) semi-often for a while and wanted to share some resources and apps that made doing so a lot easier for me. I am not really an advanced user, I mainly use VMs for testing stuff in different Linux distros, or for running Android on my PC. It is a relatively easy way to try out new features of distros and operating systems that you don't have installed on physical hardware, and to see if you like the look and feel of one before potentially switching over. It is much less stressy to encounter (and hopefully overcome) serious problems in a VM, as opposed to running into them on your live system, and is a safe way to engage in trial and error or experiments. This post is mainly aimed at people interested in doing what I have described above as easily as possible, and while I personally use Debian derivitive Linux systems, some of the software mentioned throughout is cross-platform and cross-distro :)
Sections
- Enable virtualization in your computer's UEFI/BIOS
- Download and install virtualization software
- Download and install an operating system image (ISO)
Getting Started
Assuming you already have a working PC, you need to do/acquire three things in this section in order to run a VM. Results and performance may vary depending on the age and processing power of your PC, and the software used. To give you an idea of PCs that CAN run VMs, I have run VM software on my main PC, my Dell Optiplex Micro, and what was my laptop, but I expect that I could do so on my current main laptop also, especially with Boxes/KVM+QEMU. You will generally need to 'give' the VM a share of your PC's CPU cores and RAM, as well as space for a compressed 'virtual drive'. This is where your PC's hardware capabilities, processing power, and disk space become considerations as to whether or not you can run virtual machines. For a couple of very solid video guides, check out these two from ExplainingComputers; 'Running Windows in Linux: A VirtualBox Guide' and 'Running Linux in Windows: Learn Linux in a Virtual Machine'.
Enable virtualization in your computer's UEFI/BIOS
Unfortunately, every step of this process is unique to your PC model/manufacturer and CPU manufacturer, as they each have different menu layouts in their UEFI/BIOS, and different terminology for the same thing (virtualization). You can search online something like 'how to enable virtualization (manufacturer)' and usually find the relevant terms or perhaps a guide specificaly for your device, if lucky.
Accessing UEFI/BIOS: This is done while your PC is booting, and while the input is usually different between manufacturers, it is most commonly the ESC key or one of the F1-F12 keys. During boot, there is usually a screen with what button to press listed at the bottom, but this is easy to miss if your PC is booting quickly enough. Again, you should really search online something like "how to access uefi/bios (computer model)", or try and brute force it over multiple reboots tapping ESC, or running your finger back and forth across the F1-F12 keys (not ideal). SOME unfortunate computers have reeaaallly odd key combos required to access UEFI/BIOS, including holding 'Fn' ('function' key on laptops) + another key, or some tablet-like devices require specific timed presses of the power button + volume up or down. Once in the UEFI/BIOS, you may encounter the need for a password or other security blocks depending on how you acquired the PC and the manufacturer (this is common on devices sourced from businesses or education institutions), if just pressing 'Enter' with a blank password doesn't allow you access, you may have to contact whoever provided you the computer or wipe the entire thing (don't do that as a beginner).
Enabling Virtualization: Now that you are in your PCs UEFI/BIOS menu, you may need to press a key to switch to an 'Advanced mode/menu' that will give you access to more settings to configure. Just look around the top and bottom of the current menu until you see this, it is usually a F1-F12 key. Now, again the terminology used for enable virtualization setting is different depending on the processor (CPU) manufacturer. On PCs with Intel CPUs it is usually referred to as "Intel (VMX) Virtualization Technology", and on AMD CPUs it may be called "AMD Virtualization (AMD-V) technology" or "SVM Mode". This is usually located in a sub-menu labelled 'Advanced' and/or 'CPU Configuration'. Switch your relevant setting to 'Enabled' or 'On' and your PC will now allow virtualization!
Download and install virtualization software
This is specific to your use case and to your hardware/operating system. On Linux, I usually use my distro's package manager and/or a flatpak version of the software, but you can directly download some virtualization software from the developer's website. VirtualBox provides cross-platform direct downloads for Windows, Mac, and various Linux distros, but is also available in many Linux package managers (not base Debian's though, and i was unable to directly install the .deb download). Boxes however is a GNOME developed app that is only available on Linux systems, via system package or flatpak. And beyond this many Android virtualization apps like Bluestacks and LDPlayer are only available for Windows/Mac. See the Virtualization Software section below for more detail on some of these, it may help you decide which to install.
Download and install an operating system image (ISO)
This is personal choice depending on what you want/need to run in a virtual machine, and how you install will also depend on the software used. Some virtualization software will have an option to download common ISOs within them (this is the case with Boxes), otherwise these ISOs need to be directly downloaded/torrented.
Windows ISOs can be downloaded from their website; Windows 10 and 11 are officially available, while older iterations may need to be acquired elsewhere like the internet archive (either searching user uploaded archive content or archived download pages via the wayback machine) or massgrave (use at own risk).
Most Linux distro websites will direct you to their ISO downloads, many provide torrents as well or host their ISOs on larger sites like sourceforge.
Most Android emulators/virtualizers I have tried come with one or more Android images preinstalled (BlueStacks, LDPlayer, Waydroid). You can also run Android in regular PC virtualization software (VirtualBox, Boxes) via the Android-x86 ISO, which is actually my preferred way to do this as it works on Linux and is preconfigured with the play store (a pain to get working in Waydroid).
As for installing, any software should have options for choosing which ISO you want to install, and how much system resources to give to the VM (CPU cores, RAM, disk space). I typically stick with the defaults and adjust when necessary (4GB of RAM, 2-4 cores, and a 10-20GB virtual drive, is a good minimum for most desktop operating systems, can be increased if struggling).
Virtualization Software
This is a brief overview of some virtualization software, most of which I have tried and are relatively easy to setup and use. There are many more options available for virtualization software, with far more advanced features, but these are generally the best for simpler use cases like trying out different distros, and running system specific software (like windows or android apps). Also not all of these are technically 'virtualization' software, some are emulation and one is an ISO.
Boxes (KVM/QEMU)
'Boxes' is a very simple app developed by the GNOME team, that is only available for Linux systems. It essentially applies a graphical user interface on KVM/QEMU (Kernel-based Virtual Machine + Quick EMUlator) which is a very resource efficient method of virtualization available within Linux. From my experience it runs better than VirtualBox, was easy to install and readily available on way more distros, and despite my personal issues with GNOME's simplification of UI elements, in this case it makes this app easier to use than VirtualBox. Boxes also provides the ability to download some popular install images like Windows, Ubuntu, Debian, Fedora, and more. It is available via flatpak (distro agnostic software hub), and as a system package in many popular distros (I have found it in Linux Mint, Debian, antiX, and others). It is relatively popular amongst Linux users, so video guides should be easy to find online, plus they have their own documentation. I found it intuitive enough to use without a guide, but this was after becoming familiar with VM settings and terms while using VirtualBox.
VirtualBox
'VirtualBox' is a popular cross-platform virtualization software developed by Oracle. It has a lot of fancy features for more advanced users, but is simple enough for a beginner to stumble through learning (um literally me). It is available to download for Windows, MacOS (intel/apple silicon), and numerous Linux distros. Probably the most popular virtualization software, many video guides are available like these two already mentioned from ExplainingComputers; 'Running Windows in Linux: A VirtualBox Guide' and 'Running Linux in Windows: Learn Linux in a Virtual Machine'.
virt-manager
'virt-manager' aka 'Virtual Machine Manager' is a virtualization software developed by RedHat for Linux. It applies a graphical interface atop KVM/QEMU, and is available across most popular Linux distros as a system package. I have not used this software before but it appears to be along the same lines as VirtualBox and Boxes. Veronica Explains has a good beginner's guide video for using virt-manager in; 'QEMU/KVM for absolute beginners'.
Android-x86
'Android-x86' is not actually virtualization software, but an ISO developed to run Android in said software on an x86 PC. This is far and away the easiest and cleanest way I have encountered to run Android on a Linux PC (but it will run in VM software on Windows and Intel Macs too). The play store is already configured to work, so it is a simple solution if you really just need to run an official app for whatever reason. You can also run any open source third party apps from F-Droid and derivitives, but not Accrescent as they require Android 10+. That's probably the only downfall of Android-x86, that because it is a volunteer developed project they are slow to develop newer versions with more recent Android iterations (currently it runs Android 9). This is not necessarily a good solution if you are trying to run an app where you want notifications, as you would need to keep it open at all times. It is a decent solution for testing out apps or playing games though.
BlueStacks
'BlueStacks' is a very popular Android emulator, available for Windows and Mac. I haven't used this for a long time, but I don't recall any major issues when I did, and again it is extremely popular so there's plenty of troubleshooting advice online. Good for running games.
LDPlayer
'LDPlayer' is another popular Android emulator, available for Windows. I have run this in Wine+Bottles with success before, but that's kind of an unnecessary hat on a hat. I first encountered this when coming across a mobile game that 'had a windows version' too, and it was just LDPlayer configured to run that one game (PlayVille). That is what I got running in Wine/Bottles, but it downloaded a non-English version of LDPlayer and I had to add the 'CJK fonts' to get the characters to even show up in order to select options. Now looking online I can't even see that they offer that download anymore XD. Anyway, LDPlayer is interchangeable with BlueStacks basically.
Waydroid
'Waydroid' is a containerized way to run Android on Linux, but requires a Wayland desktop. I had the hardest time trying to work out how to do anything with this software, and their documentation is confusing, I got better guidance from random forum posts. It does not default to installing an Android image with play store/GAPPS enabled, but does have the option to do so. After that the play store still wouldn't work for me, and probably needs microG or something similar to fix that. Even on the base non-GAPPS image, it would crash constantly and some apps wouldn't work, it also sent my laptop fan off into the atmosphere so I just gave up on using this. Maybe it runs better on good hardware, idk, I just wanted to mention it here at least.
UserLAnd
'UserLAnd' is a compatibility layer app for running Linux on Android without root access. It provides install images within the app for a variety of distros. I just experimented with this once, installing Debian+LXDE on my Samsung Galaxy A11 following this guide video from Ruth Ake 'Linux On Android - Install Debian (No Rooting!)' (she has many other videos for different distros and installing Linux on Chromebooks too). This one isn't necessarily easy (unless following a step by step guide), it's just interesting so I wanted to mention it.
My Usage of VMs
I've written about this before in a my Running Windows Apps in Linux post. It was a bit out of place there, and I have been meaning to do a VM specific post like this for a while, so it is updated below.
Windows I still have not bothered to install a permanent Windows VM, because I haven't really needed to. There are some games I used to play occasionally that won't run on Linux, but I have kinda just gotten over it, and there isn't any other Windows exclusive software that I can't live without. I have tested a massgrave Windows 10 Enterprise IoT LTSC ISO for the 32 Bit support report, but that was just a proof of concept (that the base 32-bit Enterprise version could be changed to IoT with an activation code post-install).
Linux Mint Xfce One of the first things I used VirtualBox for was to test out Xfce before I switched to that from Cinnamon. I wanted to see how I could customize it and what issues I might encounter before actually wiping my PC, and this was a simple solution to that. This was when Mint 22.1 was releasing, so I was going to be prompted to upgrade anyway. I really like Xfce and the way it presents information clearly to you, even little things like having the full name of apps + a brief description underneath in the Applications menu. Also the info boxes when you hover over an app icon on your taskbar or desktop are very descriptive. Nothing wrong with Cinnamon, it was just a bit too minimalist for me at the time, but I like the layout of the upcoming menu update. Also through this testing I was able to work out how to resize the notification tray icons when increasing the panel height (this is not automatic like in Cinnamon and other DEs).
Android x86 I wanted to emulate Android for a few things; testing all those youtube front ends with F-Droid in this post, testing alternate app sources in this post, and in the future testing a bunch of play store virtual world games without filling my actual phone and giving all my data away. Android x86 comes with play store included so it needs no further configuration post install. I also decided to use it over Waydroid in these instances because I wanted it totally separate/contained visually from my main system. While Waydroid is containerized, it puts the apps into your application menu while running by default including the basic clock, calendar, gallery etc. I just found that to be a bit too visually messy.
ZorinOS Core I installed this just to see differences for some guide posts, and as an Ubuntu-based tester for stuff I don't want to install on my main system sometimes. Zorin has snaps enabled, so it's closer to Ubuntu than Mint is. The Zorin OS Core .ISO takes forever to download for me, as it is a direct download from their website, or a closer mirror which didn't make any difference for me. It also failed to fully download a few times, just from how large of a direct download it is, but it did continue downloading when clicking 'retry' in my browser. They don't seem to offer a torrent like Mint does. Also they've switched to using Brave as the default browser, which they configure to take some of the telemetry and other crap out. But if you don't want to use Brave it is a pain to remove, especially for a beginner because you have to remove the repo as well. ExplainingComputers had a recent video overview of this; from 11:34 the 'Web Browser' chapter of 'Zorin OS 18: Linux for Windows 10 Users' explains the process of removing Brave, with the commands listed in the video description.
Ubuntu I used this initially as a tester for Ubuntu-based stuff, but it was pretty slow at times and nearly filled up the virtual hard drive after a few uses. Also I just hate the interface of standard GNOME, I prefer having clear information easily accessible which does not fit in with gnome's minimalist design style. Also there were software centre issues right out of the gate; I had to download a plugin and the .deb version of GNOME software manager to enable Flatpaks, and the included 'App Centre' snap store can't update itself while running (needed a command line fix).
Debian + OpenBox I have tested this to start getting used to not having a desktop environment at all, as well as a super simple window manager like OpenBox. Just experimenting with regards to home server stuff, seeing if I can actually tolerate and work within a full command line interface with OpenBox being a bridge between CLI and a lightweight DE. So far it's fine, but I don't think it's worth changing something that is working fine for me right now. Also my server PC already runs at 10W when idle any improvement would be negligible. ALSO Debian is a good desktop environment tester in general, on install it gives you the option of GNOME, Xfce, KDE Plasma, LXQt, MATE, some include LXDE also, or none (command line only). You can install any or all of desktops and switch between them from the login screen (display manager). I haven't done this in a VM, but on my laptop that had Debian 12. It can be a bit messy with each DE installing it's own suite of text editor, video and audio apps, different terminal emulators etc. But this shouldn't be an issue in a VM, you can just wipe it and start again. Since testing this I went ahead with installing Debian 13 with OpenBox and LXQt on my server PC, which works well. The quirks of OpenBox are solved by switching over to LXQt briefly.
Q4OS 32-bit I have recently tried this out just to test some stuff for the 32 Bit support report. Q4OS is actually a pretty good distro with great onboarding, and is a good showcase of the Trinity desktop environment. It looks and feels like Windows XP-7 with random elements from each of them, but can be themed to look more specifically like 7, Vista, XP, or even 9X. Trinity is a fork of an older iteration of KDE from around 2010.
Thanks for reading! hope some of this stuff helps :)