Virtual Machine Q&A

Hi there! Here is my Q&A page that teaches all about virtual machines in plain English so you don’t have to be a computer nerd to understand what the heck I’m talking about!

Virtual machines are typically portrayed as this really advanced, niche technology that novice computer users won’t be able to understand and won’t have any use for anyway. I have always strongly disagreed. In fact, I think they can be an invaluable learning tool that can help you become more comfortable with your computer and feel less helpless when it goes and does strange things to you! Read this page and tell me if you think I’m right!

What are virtual machines?

A Virtual Machine (VM) is essentially an imaginary computer, simulated entirely through software, that runs in a program on your real computer. This imaginary computer can run real computer programs that believe they are running on a real separate computer. Virtual machines typically each run in their own window that show their virtual computer screens, and you can interact with them and the programs running on them just like stuff that runs on your real computer.

Maybe that sounds a bit abstract – I find most people don’t really get it until they see it for themselves. A picture is worth a thousand words after all! So here’s a picture for you:

What you’re seeing here is a Macintosh computer that has two different virtual machines running on it at once. The one in the foreground is set up to use a really old version of Windows called Windows XP. The one in the background is running an even older version of Windows called Windows Me, but you can run new, modern software on virtual machines as well! You can create as many different virtual machines as you like, though you’ll need the storage space on your computer to fit them all, and you can only open so many at once based on how powerful you make your virtual machines and how much memory your real computer has. You can resize a virtual machine window or you can set it to full screen to have all the screen space you need to work with your virtualized programs.

What is a “host”? What is a “guest”?

These are just words people use to make talking about virtual machines easier. The host just refers to your real physical computer, and a guest is just a word for one of the virtual machines you have running on the host. It makes it faster to describe some things. For example, it’s a lot faster to say This virtual machine software supports Windows 98 guests but not hosts. than it is to say This virtual machine software won’t install on a computer running Windows 98, but if you install it on something else, you can create virtual machines and install Windows 98 inside of them.

Okay, so what’s the point of running virtual machines?

Virtual machines have lots of neat benefits! For one thing, they provide a great opportunity to experiment and educate yourself without the risk of messing up your real computer. You can try setting up and configuring a copy of Windows all by yourself to figure out how that works and not worry about doing the wrong things. You can walk away from that experience with a much better understanding of what’s happening on your real computer and will feel less powerless when your computer malfunctions on you because you’ll understand better what’s going on.

Virtual machines also provide a great opportunity to try out many different operating systems you’ve never seen before! An Operating System (OS) is the program that runs programs on a computer, such as Windows, macOS, or Linux. You can load up an operating system you’ve never had the chance to play with before on a virtual machine to see what it’s like without needing to do anything complicated to your real computer. You can also load up some really ancient operating system that otherwise can’t run on a modern computer anymore as a way of taking a trip down memory lane and experiencing computer history for yourself. And it can all happen from a single real computer sitting on your desk, so you don’t have to accommodate a whole pile of different physical computers, monitors, mice, and keyboards with desk space you probably don’t have!

Outside of learning, virtual machines let you run more programs too – ones you otherwise couldn’t! Maybe you have a Mac or Linux machine and want to run a Windows-only program. Well, you can do that by creating a virtual machine that runs Windows and then you can run the Windows-only program inside of it! Or maybe you are already running Windows, but have an old program you want to run that doesn’t work on a modern version of Windows anymore. In that case, you can load up a really ancient version of Windows in a virtual machine and run your old program that way. Then you don’t need a separate older computer to do that with anymore!

I’m a Mac user, but have Linux and Windows virtual machines that always remain open and fully up-to-date with the latest software improvements. I use that to keep tabs on what’s happening outside of the Mac world in order to keep my tech knowledge updated. It’s about learning for me, but having access to all the unique advantages, compatibility, and functionality of Windows, Linux, and macOS together is an added bonus!

But what are the drawbacks?

The biggest drawback would be when it comes to system requirements. Computing power can’t be magically created from nothing! You’re still limited by the hardware specs of your real computer, and virtual machines have to temporarily borrow a part of that power and memory while they are running in order to do things themselves. Nowadays, even the cheapest, lowest-end computers should be able to run virtual machines, but what kind of virtual machines? With a low-end budget box, you’d probably only be able to handle creating really simple machines with very limited memory for running really old software. Maybe that’s all you want to do with it though, and then maybe it’s not a problem after all. ๐Ÿ˜‰

Virtual machines are mostly meant to be used for running desktop applications like word processors or image editors. They’re not so good for 3D computer games unless those games are super old. 3D games and other 3D programs require support for something called 3D Acceleration. Most modern virtualization software will support 3D Acceleration but not for all guest operating systems. For example, you might be able to get 3D Acceleration in a virtual machine running Windows 11, but not one running Windows 2000. Even where 3D acceleration is available, it may not work right with all programs – with some just crashing or displaying ugly graphical glitches. And even if a program seems to otherwise work, it might just not run very nice and be choppy and slow! Modern virtualization software has made major strides over the years at making 3D acceleration faster, more compatible, and more widely available, but it’s still not great, and you still can’t expect to be able to run the latest and greatest AAA titles at a nice speed, or at all!

There’s a general loss of performance when running a virtual machine compared to how things run on a real computer, but other than with 3D games and other exceptionally demanding types of programs, it usually isn’t noticeable. Sometimes media playback can be a bit skippy, but that’s about it.

I have an Arm-based computer. Can I run virtual machines?

An Arm-based computer is a computer with an Arm processor that isn’t compatible with the same kind of software as a traditional x86-based computer. Most modern Windows PCs still use x86, but all modern Macs and some rare Windows PCs are Arm-based. For more information on Arm processors, you should check out my separate Arm Q&A!

You can do virtual machines on an Arm-based computer, but there are two big catches:

The first is that the binary translation functionality you can normally use to run x86-based programs doesn’t work with something as complicated as virtual machine software! That means you will need to use a virtual machine program that explicitly supports Arm computers, with an Arm build available to download. This isn’t an issue for Mac users, since all modern Macs are Arm-based, and so any virtual machine software that wants to run on Macs is going to have an Arm build available. For Windows users though, it’s a different story. Arm-based Windows PCs are still a very new, rare, and niche concept, and I don’t currently know of any virtual machine programs that support them. โ˜น๏ธ

The second problem is that virtual machine software doesn’t traditionally involve simulating a different processor on the virtual machine from that of your host. So if you have an x86-based computer, you’re only able to create x86-based virtual machines, and if you have an Arm-based computer, you’re only able to create Arm-based virtual machines. If you want to run something modern, that shouldn’t be an issue, since most operating systems these days support both kinds of computers, and you just need to download the correct version. But this is a show stopper if you have an Arm-based computer and want to run really old operating systems from back before support for Arm existed. For example, you wouldn’t be able to create a virtual machine that runs Windows XP, since Windows XP never came in an Arm build.

To try and get around this, some virtual machine software supports ’emulating’ a different processor on the virtual machine. This is really hard to do though and I don’t know of any software where this feature is mature yet. Expect reduced functionality, stability, and especially expect reduced performance!

What program should I use to run virtual machines?

There are many different programs out there for Windows and macOS. Let’s just talk about the most popular, polished, full-featured, user-friendly ones along with which host operating systems they can be installed on:

  • VMware Workstation Player (Windows/Linux, x86-only, Free for Non-Commercial Use) – VMware Workstation is very reliable, has pretty good performance with 3D games, and has by far the best range of compatibility with guest operating systems, especially the really really old ones!
  • VMware Fusion (macOS-only, Arm/x86, Free for Non-Commercial Use with Registration) – This is basically VMware Workstation for macOS. The reason why they give it a different name is because they give it a completely different interface that gives it more of a specific focus on creating Windows guests with heavy integration functionality with the host, but it’s really just the same program under the hood and you can do all the same things with it!
  • VirtualBox (Windows/Linux/Mac, x86-only, Free/Open-Source) – VirtualBox is slower, less reliable, and less compatible than VMware, but is preferred by many tech purists because there are no license restrictions like with VMware, making it truly unconditionally free. It also has a more secure future. VMware LLC was bought out by Broadcom and nobody really knows what that’s going to mean long term. ๐Ÿ˜
  • Parallels Desktop for Mac (macOS-only, Arm/x86, 100/120USD annual subscription) – Parallels Desktop is very expensive, but it offers by far the fastest, most reliable 3D support out of anything in this list, and much better host-guest integration features than VMware Fusion does. The only real downside is that it’s only really suited to running modern guest operating systems. It is available only by subscription, but you tend to need the new version every year for compatibility with the latest version of macOS anyway.

Note that you don’t have to pick just one program. You can install more than one and create different virtual machines in each. Be aware though you might have problems with crashes if you run virtual machines from different programs at the same time. I haven’t had this problem lately though, at least on my Mac.

How do I create and configure a new virtual machine?

The exact steps to create a new virtual machine are naturally going to vary depending on which virtual machine software you use, but all of them involve using a wizard (screens where you click “Next” a bunch of times) to answer a bunch of information about your virtual machine. So here’s a generic explanation of the kinds of things you’ll be asked about and how you might want to answer:

  • Automatic/Manual Configuration – VMware and Parallels normally take care of configuration for you so you don’t have to know the answers to different questions. I don’t recommend it because it may not make something you are happy with, and the questions aren’t really that hard. But it’s up to you! Maybe you’ll want automatic configuration for your first virtual machine to get your hooves wet and then you can always do more customizing next time!
  • Name – This can be whatever you want. You can call the virtual machine “Soggy Waffles” if that’s what makes sense to you! The name is for display purposes only.
  • Operating System – Virtual machines are often set to imitate different kinds of hardware that will work better for different guest operating systems based on what you set up here, so you should set it to whatever operating system you plan to install on the virtual machine. If the exact operating system you plan to install isn’t available in the list, just select whatever option is closest, or just pick something at random and see what happens! ๐Ÿ˜ƒ
  • Operating System Install Media (ISO) – This is a file that contains software for installing an operating system. The virtual machine wizard may offer to download one for you or may ask you to locate one on your computer. A virtual machine is useless without an operating system installed on it, but you can always choose to install an operating system later once the virtual machine is created. If you choose the install media now, your virtual machine software will often be able to install the operating system with it for you, choosing setup options it thinks you’ll like best. I personally hate it when it does this, so to get around that, I always create the virtual machine empty and then select the install media later. But that’s just my own pet peeve. ๐Ÿ˜
  • Processor Cores – You can choose how many of your real computer’s “cores” can be used by the virtual machine. A larger number of cores lets more advanced programs run faster inside the virtual machine, but too many can slow down your real computer. I recommend you give your virtual machine at least two cores, or just leave it at whatever default it suggests. In most cases you probably won’t notice any difference no matter what you set this to, so don’t worry too much about it.
  • Memory/RAM – This one is important! It’s talking about how much memory the virtual machine will have for programs running inside of it to work with. Giving the virtual machine more memory means you can run more programs at once, or run more complicated programs, and different operating systems will have different minimum system requirements for memory. But the more memory you give a virtual machine, the more memory it takes up on your real computer while it’s running, and your real computer only has so much memory to give it. For running Linux, I wouldn’t recommend going below 2GB (2048MB) of Memory. For running Windows 11, you’ll need at least 4GB (4096MB) of memory. Doubling these numbers would be ideal. You’ll have to just see what you can get away with. If everything suddenly runs really slow when you turn on the virtual machine or things crash, you’ll have to reduce the virtual machine’s memory for your computer to be able to run it. Generally, you won’t be able to get away with giving the virtual machine more than half the RAM you have on your real computer. You can see how much RAM your real computer has by opening the Settings app and going to System > About (Windows 11) or clicking the Apple logo at the top left corner of your screen and selecting “About This Mac” (macOS).
  • Hard Disk Size – You need to create a virtual hard disk file that will act as the virtual machine’s hard drive and will store all the 1s and 0s that normally go on a real hard drive. The larger size you set for the hard disk, the more stuff you’ll be able to fit inside the virtual machine, but the more space the virtual machine files will likely take up on your real computer. Most virtual machine software sets this frustratingly low by default. If you have the space for it, I recommend setting it to at least 64GB for a modern guest operating system. 128GB would be better.
  • Hard Disk Dynamic Expansion / Allocate All Space Now – Normally, virtual hard disk files take up as much space as their configured size. So if you create a 128GB virtual hard disk, it will take up 128GB of space on your real hard disk! Ouch! A “Dynamically Expanding” hard disk will only take up as much space as the stuff stored on it. So if you create a 128GB hard disk and store 20GB of stuff on it, it will only take up just over 20GB on your real computer. Obviously it’s better when files take up less space, but you do get a small performance boost if you don’t make the disk dynamically expanding (often labeled as “Allocate All Space Now”). I personally recommend dynamic expansion be turned on unless you have performance problems.
  • Hard Disk Store as Separate Files – Some really old storage mediums are formatted in a way that they can’t store files that are 4GB or larger. Since a virtual hard disk file is usually bigger than that, this means you wouldn’t normally be able to copy your virtual machine to one of these really old storage mediums. By splitting up the virtual hard disk into a bunch of smaller files, you can work around this problem, though it results in a folder full of a bunch of different files that can look messy. Unless you plan on moving this virtual machine around a lot using old flash drives, I’d recommend storing the virtual hard disk as one big file to make it easier to work with, but it shouldn’t make much of a difference either way.

Where can I get ahold of operating system install media for use in my virtual machines?

As explained with the last question, you are going to need install media in order to install an operating system on the virtual machine, called an ISO file. It’s essentially the 1s and 0s that would normally be on a real optical disc if you were installing an operating system on a real computer, but in this case, it’s all virtualized as a file ending in .iso. Your virtual machine software may let you choose from a number of free operating systems it can download for you. Otherwise, you’ll need to specify the location of an ISO file you’ve downloaded to your computer manually.

Most operating systems you might want to use offer ISO downloads for free on their web sites. Even Windows, where you need a commercial license to access full functionality, still offers ISO files you can use to download and install the base product for free. Note that if you have an x86-based computer (nearly all Windows PCs), you will want to download the ISO that will be labeled either “x86_64”, “x64”, or “AMD64” (they all basically mean the same thing). On the other hand, if you have an Arm-based computer (all modern Macs), then you will want to download the ISO that will be labeled “Arm”, “Arm64” or “AArch64” (again, these basically mean the same thing). Note how confusingly similar “Arm64” and “AMD64” look. Don’t let that trip you up! ๐Ÿ˜’

Below are some popular operating systems with links to where you can download them:

  • Windows 11 (Arm/x86) – This is the newest version of Microsoft Windows, the second most popular operating system in the world, and the most popular one by far for traditional desktop/laptop computers.
  • Windows 10 (x86-only*) – This is the previous revision of Microsoft Windows from before Windows 11 came out. It is still supported by Microsoft until October of 2025.
  • Ubuntu (Arm/x86) – This is the most popular version of Linux and is recommended for beginners who are curious about Linux and want to experiment with it. Annoyingly, the Arm-compatible installer is tucked away on a separate page.
  • openSUSE (Arm/x86) – This is another version of Linux which competes with Ubuntu, though it is less popular. Iโ€™m linking it here because itโ€™s my personal favorite! ๐Ÿ’œ

(*Note: Although Windows 10 is available with Arm builds, these Arm builds can’t run on virtual machines, which is why I’ve labeled Windows 10 as effectively x86-only.)

For really old historic operating systems like Windows 95 or Windows XP, you can check out what is available over at the Internet Archive‘s Software Library. Only Windows Vista and later offer proper support for x86_64, but for older versions of Windows, x86_32 builds (often labeled as “x86” or “32-bit”) should work just fine on any x86 computer. For Arm computers, there are no Arm-compatible builds of these older versions of Windows at all.

Can I run macOS as a guest inside a virtual machine?

That depends on what your real computer is. If it’s an Apple Silicon Mac (all Macs released in 2021 or later), then it’s quite doable. If you are wanting to try out macOS on a Windows or Linux computer, your options are not great.

Functionality exists with modern Macs specifically for virtualizing macOS. Programs are able to make use of this to allow you to create and run macOS virtual machines. A simple, free program that can do this VirtualBuddy which has a pretty friendly interface. There are a few limitations though. The version of macOS you run on the virtual machine has to be macOS 12 “Monterey” or newer, and to be able to successfully log in to an iCloud account (which is needed to access some features like the App Store), the virtual machine needs to run macOS 15 “Sequoia” or newer.

As for running a macOS guest on a non-Macintosh host, this is super hard to do. You may be able to find some prebuilt virtual machines available online that have a hacked copy of an old version of macOS preinstalled inside them, but this is really unlikely to be stable or full-featured. With the decline of “hackintosh”, the only real way to experience and learn about macOS these days is by purchasing a real Macintosh computer, and that’s too bad. โ˜น๏ธ

How do I use an ISO file to install an operating system in my virtual machine?

As said in an earlier question, you can often choose an ISO file when creating the virtual machine to have many of the install choices made for you. You can also “insert” the ISO file into the virtual CD-ROM drive on an existing virtual machine that doesn’t already have an operating system on it. To do this, start up the virtual machine (it will complain it has no operating system, but just ignore it), and then look for an option within the virtual machine window’s interface. It may be found in a menu bar or be indicated with a little icon of a CD. Once the ISO file is “inserted”, you need to select to Reset/Restart the virtual machine so that it can start up from the program on the ISO.

Naturally, different ISOs for different operating systems are going to show you a different interface, but they all operate similarly. You’ll go through screen after screen, answering questions and clicking “Next” a bunch of times until it has all the information it needs to do the installation. Then you wait around while progress bars fill up and the virtual machine restarts and asks you some more questions, and eventually you’ll be able to get to the desktop.

While the exact phrasing and order of the questions will vary, you’ll usually be asked the same set of them in one way or another. Here’s what those questions are and how to answer them:

  • Display Language – Set this to whatever will work for you. Maybe you want it to match your host, or maybe you want to experiment with a different display language. Obviously it’s not a good idea to set this to a language you can’t actually understand unless you are feeling particularly adventurous. ๐Ÿ˜‰
  • Keyboard Layout – Keyboard layouts define which key prints out which letter or symbol on your keyboard. While you have letters painted on your keys to reflect the keyboard layout they assume you’ll use with it, the keyboard layout is ultimately a software setting and it doesn’t have to reflect what the paint on your keys says. Since your virtual machine has its own operating system, its keyboard layout setting is separate. You’ll typically want this to match the keyboard layout you use on your host computer.
  • Time Zone – Choose the time zone that matches your location. Modern operating systems tend to synchronize their time with the Internet and adjust for daylight savings time automatically based on the current time zone, so you will want to make sure the time zone is correct. But you can always change it later.
  • Hardware Clock Set to UTC – Computers have an internal clock that helps them keep track of the time even when they are powered off. There’s a disagreement in standards here though as to whether the stored time should be interpreted as UTC (Universal Time Coordinated – what time it would be if the world did not have timezones) or whether the time stored should be assumed to be local time. Windows normally assumes the stored time is the local time, while Mac and Linux machines normally assume the stored time is UTC. Since this is a virtual machine, you’ll want this setting to match your host to help the time stay in sync. So if you have a Windows host, that normally means setting it to local time, and if you have a Mac host, that normally means setting it to UTC. The Windows installer won’t ask you about this and will just force local time, but don’t worry if you are on a Mac, because your virtual machine software should know how to compensate!
  • Product Key – Paid, commercial operating systems will ask you for your product key. With modern versions of Windows, you don’t actually need to enter this and can just select “I don’t have a product key” to run Windows with limited functionality – more than adequate for just experimenting with virtual machines. On older versions of Windows (Windows Me/2000 or earlier), any key you can find online that the installer will accept should work – you may have to try several.
  • Install Location – This probably the most confusing question. The installer you’re running believes it’s running on a real computer that typically has a single empty hard drive connected to it. You’ll need to tell the installer to install the operating system on this single empty hard drive. For Windows, you can just select “Disk 0 Unallocated Space”.
  • User Account – Just like with a real computer, your operating system will have a user account associated with it. The user name and password you choose don’t have to match your real computer’s info, but it’s probably less confusing if they do. Windows 11 won’t let you create a local user account and requires you to connect the machine to an online Microsoft Account instead. If you don’t want this, there are workarounds but they’re beyond the scope of this page. ๐Ÿ˜•

For any other questions you might be asked, don’t be scared to use some common sense or guesswork. Don’t be afraid to experiment. What makes this such a great learning environment is that if you don’t like how this works out, you can always just delete the virtual machine and make another one!

Do operating systems running in virtual machines work properly right out of the gate?

For the most part, the operating system should work right away as soon as the installation is finished and you make it to the desktop. But some important functionality will be broken until you install additional support software. The broken functionality may or may not include:

  • 3D Acceleration – The ability to run 3D graphics at a decent speed, or at all.
  • Audio Support – The ability to hear sounds played inside the virtual machine.
  • Mouse Pointer Integration – The ability to just easily move your mouse cursor in and out of the virtual machine window. Without this, you typically have to click on the virtual machine window to “lock” your cursor inside it, and then press a special key combination (such as Ctrl+Alt) to “release” and control your host mouse pointer again.
  • Higher Screen Resolutions – Everything may be big and blown up and blocky without the support software installed.
  • Higher Color Depth – Colors might look simple and ugly without the support software installed. This is mostly a thing on very old versions of Windows.
  • Guest Screen Resizing – The ability to resize the virtual machine window and have the screen space inside the virtual machine automatically reshape itself to match.
  • Performance Improvements – The virtual machine might run more slowly without the support software.
  • Shared Folders – Explained in the next question. ๐Ÿ˜‰

The support software, called “Virtual Machine Additions” in VirtualBox, “VMware Tools” in VMware, or “Parallels Tools” in Parallels, is usually installable by selecting an option in the menu bar while the virtual machine is running. This will insert a special virtual CD into the virtual machine’s CD drive, and you’ll be able to double-click on it from inside the virtual machine to run the support software installer. It should install just like most computer programs, where you answer questions and click next a bunch of times. After you install the support software, you will likely need to restart the virtual machine for all features to work.

Know though that this support software is only available for a limited number of guest operating systems, depending on the virtual machine software you use. Since trying to run a virtual machine without the support software is usually a pretty bleh experience, this is the main thing keeping you from running whatever you want in virtual machines. VMware for example has a version of its support software available for Windows 98, but Parallels and VirtualBox don’t, so even though you can create a Windows 98 virtual machine on Parallels and VirtualBox, the experience is pretty miserable. Even VMware’s support software for Windows 98 doesn’t support some features, like 3D acceleration or Shared Folders – they only support that for modern operating systems.

How do I transfer files to and from my virtual machines?

There are a number of ways you can do this:

The easiest way, if the virtual machine software supports it, is to just click and drag files in and out of the virtual machine window. This will only work though if you can install the support software and it can often be a bit unpredictable where the file will actually end up.

Another option is to use “Shared Folders” that let you map a folder on your real computer as a drive letter (Windows guests) or mount point (Linux guests) inside the virtual machine. Modern virtual machine software often has an option to use this technology to automatically make your personal folders (Documents, Music, Pictures, Downloads) the same on both the virtual machine and your real computer!

If the Shared Folders feature isn’t an option (getting them to work can be a bit flakey on Linux guests), you can also just share a folder over the network just like you can do with two real computers. If your networking in the virtual machine is set to “Bridged”, then it pretends to be a separate computer on the same network as your real computer. If networking in the virtual machine is set to “Shared” or “NAT”, then all your running virtual machines exist as their own inner network in behind your real computer, preventing other real computers on your network from accessing them directly. Either way, networking between the host and guest should work for anything that uses it, such as Windows File Sharing.

Finally, it’s possible to move entire external storage devices, like USB flash drives or optical discs, between the host and guest, using functionality available in all popular virtual machine programs. You can “capture” USB devices that are plugged into your physical computer so that they appear connected to the guest rather than the host. You can create a virtual CD-ROM drive that is set to use whatever disc is in your real CD-ROM drive – at least if your computer still has one.

Conclusion

This should be enough to get you started playing with virtual machines. I really recommend everybody try this at some point even if you aren’t the geeky type – it will help you become a lot more comfortable with your real computer!

I plan to offer step-by-step guides for setting up specific kinds of virtual machines in the future. For now, if you get stuck and need any help, don’t be afraid to contact me directly about it or ask in the comment section below! You’ll be helping me too, because your questions will help give me more ideas for what to add to this page! ๐Ÿ‘๐Ÿป