218

I've switched to using Arch Linux for most of my day to day work and don't need Windows for anything but gaming and the couple of apps that aren't ported to Linux like OneNote. My Linux distribution is hosted in VirtualBox with Windows as host, and I quite like it that way, snapshots are incredibly useful.

Let's say I were to pretty much never care about the Windows host and spend 95% of the time in the guest, what would I be missing out on?

Are there serious downsides?

Is performance severely affected and will installing straight onto the machine make my life much more amazing?

6
  • 36
    ...and there's an argument for using Free Software. Note that you could also turn things upside down and emulate Windows under Linux (or some other FOSS OS, say, OpenIndiana). Also, OneNote seems to be partly working under Wine.
    – sr_
    Commented May 11, 2012 at 8:56
  • 6
    Power consumption. I’d be interested to see how this is affected by running in a VM but my guess is that there is a visible difference, and that it may even be a big difference. Commented May 11, 2012 at 14:33
  • 5
    In addition to all of the excellent answers already provided, I would just say that with the current environment you could lose your Linux setup if your Windows ever becomes corrupted due to a virus or other Windows security hole. Just something to be aware of. Commented Oct 10, 2012 at 14:33
  • 2
    You mean aside from your Linux being systematically rebooted by Windows Update? And those restarts will take twice the time because you have two systems to boot. Commented Nov 25, 2016 at 10:25
  • 1
    I dual boot, however I am considering tu run Linux as guest because Windows drivers are much better for my machine. Under Linux, Wifi and SD are crippled, and USB is buggy. My main gripe with Windows is that it is resource intensive by default.
    – Rolf
    Commented Mar 21, 2019 at 17:00

17 Answers 17

154

Assuming you can get everything working, and you don't want to do resource intensive tasks such as playing games or doing large compiles, then I think you'll be fine.

There's some basic issues you will probably encounter:

  • guest time incorrect
  • guest screen size or color depth incorrect
  • can't access USB devices (printers, phones, etc.)

To fix this, you should install VirtualBox guest additions. See the VirtualBox Arch Linux guests guide for details.

To get some extra features, such as USB 2.0 and Intel PXE support, you can also install the VirtualBox extension pack.

After that, there's a few issues you should know about:

Obviously your Linux VM will be affected if your Windows system crashes too. Issues I've had happen recently:

  • Windows host crashes due to driver bug (blue screen)
  • Windows host reboots due to security update

When running a virtual machine the biggest performance hit will be to your disk I/O. If at all possible, put your VM on a separate disk and/or use a solid-state drive. Using a virtual SATA drive instead of a virtual IDE drive can help too.

4
  • 8
    While disk I/O may be an issue for large files, I do remember consistently experiencing incredibly faster many number of small files type of IO operations in guest OSes. I thought this could be because these file IO operations perhaps never really touch the real hard drive (cached by VirtualBox/VMWare etc. in RAM temporarily and written asynchronously to the VMs harddrive image file causing no delays inside the VM) or touch only a single file / location of the hard drive (namely, the VM harddrive image file) instead of many small real files.
    – Cetin Sert
    Commented Sep 18, 2012 at 1:31
  • 5
    "large compiles" actually still work faster in a VM than in Windows. This even for GCC on Linux vs MSVC on Windows.
    – rubenvb
    Commented Sep 23, 2012 at 14:43
  • 7
    @rubenvb The comparison is bare metal Linux versus Linux in a VM.
    – Mikel
    Commented Sep 23, 2012 at 15:27
  • @Mikel "There should be almost zero performance hit for CPU intensive tasks" Commented Jun 27, 2017 at 9:44
80

I teach a hands-on class on Linux, and unfortunately, by company policy I'm not allowed to reformat the class-provided laptops, so we're going by the VirtualBox guest approach.

Ignoring all performance concerns, here are some notes / problems I noticed:

1) Bridged mode and Wireless

Some wireless cards apparently have difficulty having "dual identities", which means that our routing / firewall / networking lessons go to hell. It's a known issue - most wireless drivers do not support bridging.

bridge | The Linux Foundation - It doesn't work with my Wireless card!

This means that if you're using a wireless interface, you have to do some extra work for the guest to have a "public" IP.

2) Desktop Integration

Save for a few wallbangers in design, the modern desktop environments are pretty well thought-out, and offer some conveniences that are lost when they don't have full access to the input/output, or to the device attach/disattach tool. For instance, the Vbox menu at the bottom gets really annoying if you have a window chooser or notifications there. And some machines use the Ctrl+Alt+cursor_key shortcut (switching workspaces) as to flip the display.

I mean, compare how easy it is to disattach a USB device in GNOME, vs the equivalent number of submenus / clicks in Windows, and I know which one I'd prefer any day.

3) USB "stealing"

Sometimes, windows just doesn't want to let go of a USB drive - telling virtualbox to attach it doesn't always work - most likely when windows is reading the contents for some reason or other. And then there are some USB drives that aren't straight-up storage devices, but do a mode switch-like action to make your drives accessible - those are annoying to attach to the Linux machine.

4) Stability

It's typically easier to "break" Windows than Linux, which is why you typically want to have Linux "protect" Windows instances, rather than vice versa. I already lost a couple of work days with the staff overwriting the wrong files and ending up breaking both our installation of Virtualbox and our Linux images.

5) Command Line Tools

On Linux at least, you have the option of mucking around with Vbox disk images using qemu-nbd and the network block device.

QEMU/Images - Wikibooks, open books for an open world - Mounting an image on the host

This lets you look at and modify the contents of the guest OS disk without having to boot it, for example, if you rendered it unbootable.

You could also do things like scripting backups of VDIs - or just their contents, or changing VirtualBox "profiles" via symlinks - a lot easier on bash.

2
  • 3
    I disagree on Stability. I always end up breaking my Linux, because I changed some configuration files, so I use Linux only in a VM. :-)
    – itmuckel
    Commented Jan 22, 2017 at 16:29
  • 7
    that probably has more to do with the fact that you actually muck around with your Linux install. If Windows users mucked around with their Windows even half as much as the average Linux user their Linux...
    – madumlao
    Commented Jan 24, 2017 at 10:39
28

Don't forget that a VM is an emulation. Your Unix system will never be as powerful in a VM than installed. Archlinux is made to fit your tastes, it is a distribution you can customize to it's maximum.
I used to make it run on a VM, though I thought about installing it definitely on my computer. Now my system boots in about 15 seconds, my builds are a looooot faster and everything is working better.
Archlinux is not that big, you can install it on a small partition (just make sure you have enough space for your programs on your root partition (I had to reformat my root partition because it was too small)). If you use Windows only for playing, you should consider that option =)

PS: Yes installing straight on your computer will make your life amazing. :P

4
  • 2
    There's usually no need to reformat. I've used GParted (also available as a live CD) to resize existing partitions (FAT,NTFS,EXT2/3/4), with no ill effects. Commented May 11, 2012 at 9:19
  • 64
    Emulation is a bit of an overloaded word. In one widely used sense, virtualisation is not emulation. Modern CPUs are designed for virtualisation -- code running in your VM is being handled natively by the CPU. The VM bridges IO efficiently -- because there's really not that much to do - read from here, write to there. You wanna experience emulation -- try running Linux in DOSBox or QEMU and see how much slower it is!
    – slim
    Commented May 11, 2012 at 15:07
  • 24
    Virtual machines on modern systems is not emulation. If anything the IO is emulated, but usually the drivers themselves are aware they are in a VM and there is little overhead.
    – MikeyB
    Commented May 11, 2012 at 15:07
  • 3
    Just made a mistake, thanks for the knowledge you give me ^^ I really thought it was like an emulation. (Thanks again) @Piskvor: Yeah that's what I meant, resize it. (not native english, I missunderstood reformat and resize)
    – Depado
    Commented May 14, 2012 at 8:50
25

There are three ways you could set up the two OSs:

  1. Windows host, Linux VM (as you have it).

  2. Linux host, Windows VM.

  3. Dual boot.

If you want to run Windows games I would not recommend option 2.

If you regularly want to use a Windows only program (that doesn't run well under Wine) during your Linux session then option 3 won't work well for you.

If you use non-game Windows stuff so rarely that rebooting isn't much of a chore then option 3 is the most efficient.

So, the question is: does your current set up annoy you? Or, is it good enough? The old real downside I can think of is the extended boot time and lower memory availability.

BTW, it is possible to set up a dual boot system where you can also boot the same Linux install inside a VM in Windows, but not the other way around (Linux detects hardware at boot time, but Windows has it's drivers hardcoded, once installed).

If you want a try-before-you-buy dual-boot set up then try out the Ubuntu "wubi" installer. (Yes, I know you're an Arch guy, but you're just trying it, right?) Wubi installs the disks as an image file within Windows, just like a VM, but it boots it as a host OS. There's no partition meddling, and you can uninstall it right from the Windows Control Panel, when you're done. The only down-side is that disk I/O performance is slightly reduced.

8
  • What do I need to google to figure out how to dual boot AND use the same ubuntu inside a VM in windows? If that is not too hard to do that would be PERFECT for my work situation.
    – Noah
    Commented Jan 30, 2015 at 16:14
  • 1
    It's possible, but not straight-forward. The main problem is that all your device drivers and settings would be different in each case, so you'd probably need two sets of config files. In short, it'd be a real pain to maintain. I don't know what keywords to Google.
    – ams
    Commented Jan 30, 2015 at 19:12
  • 1
    @arleslie Installing Ubuntu is not the hard part. The hard part is booting the same install in a VM. Not impossible, but beyond Wubi.
    – ams
    Commented Sep 13, 2015 at 13:13
  • 1
    In any case, the answer already mentions Wubi, so what's your point?
    – ams
    Commented Sep 13, 2015 at 13:15
  • 1
    @Noah are you looking for something like this? It's old (2009) but describes steps for a Windows/Linux dual-boot that starts a Linux virtual machine from inside Windows, and this virtual machine uses the 'same Linux' as the dual-boot. It directs to page 134 of the Virtual Box user manual and section 9.10 calls this raw hard disk access. Commented Sep 16, 2016 at 19:49
18

If you use this box mainly via SSH, there's a good chance that you're in the butter zone where it really doesn't matter much whether it's a VM or on real hardware. Many of the problems mentioned in other answers come up when you're trying to use the guest OS as a GUI desktop. Linux servers are very happy inside VMs; a huge chunk of the web hosting market is Linux in VMs.

I've run into just a few cases where I was forced to run a Linux server on real hardware, instead of in a VM:

Real Hardware Access

Sometimes you need to use some PCI card that the VM system can't virtualize. Say, a 4-channel MPEG-2 decoder. Some VM systems can give exclusive ownership of the card to the VM, such as via Intel's VT-d technology, but that's not without its problems:

  • There's a speed hit. It might matter.

  • Not all VM systems can do this, and you might not have the freedom to switch to one that can.

  • There may be inessential consequences, as with VMware ESXi 5, where giving a VM ownership of a card requires rebooting the host, and then prevents it from doing snapshots of that VM. (By inessential I mean that these problems could be solved, it just takes development time.)

Big Storage

Your VM system may not be able to create a virtual disk as large as the bare hardware allows for real disks. VMware ESXi 5, for instance, has a 2 TB virtual volume size limit. If you need a larger single volume inside the VM, you have to jump through hoops to work around the limitation:

  • You can push a RAID controller through to the VM with VT-d, but again, it has problems.

  • You can push a passel of 2 TB virtual volumes through to the VM and string them together with LVM, but you've bought yourself a passel of problems, too.

    For one thing, when (!) one of the physical disks dies, if you were using the guest OS on bare hardware, you could diagnose and fix it by using the provided management software, such as 3Ware's 3DM or tw_cli software. But try finding versions that will run on a VMware ESXi 5.0 host! Now you're forced to reboot so you can use the BIOS management interface.

    For another, the abstraction layer has disconnected the virtual volumes from the physical volumes, so the software RAID/LVM layer in the guest OS can't manage the disks efficiently. That layer may think it's being clever writing to disks in a round-robin fashion, but because they probably share some of the same physical disks, performance will take a hit because some disks are getting back-to-back writes.

  • You can create the volume on a real hardware system and export it to the VM via NFS, but there's a speed hit when you do that, too.

You may be able to counterbalance some of the above with virtualization advantages, such as the ability to pause a VM, move it to another host, and start it back up again seamlessly.

14

What graphical environment are you using in Linux? Most of the modern desktop environments (GNOME, KDE, Unity) are moving towards requiring hardware 3D acceleration support to work properly. Hardware acceleration support for graphics inside VMs is a relatively immature technology at the moment. VirtualBox has experimental support.

2
  • I'm currently running GNOME in 2d mode in fallback mode, which works fine for me. I also tried turning on 3d acceleration on the VM and had GNOME successfully work as well without much trouble. Arch has a pretty decent guide for how to support most VirtualBox features that seems to have done the trick. Commented May 11, 2012 at 10:11
  • 1
    Actually, the advent of llvmpipe means you won't necessarily need 3D hardware acceleration for much longer -- the GNOME 3.4 live CD (based on Fedora 17) runs gnome-shell just fine in VirtualBox with no guest additions. Performance suffers a little of course, as the rendering is done in software instead, but the results are still better than I ever managed trying to run gnome-shell with VirtualBox's accelerated OpenGL support.
    – calum_b
    Commented May 11, 2012 at 19:06
11

Basically everything will be working fine from internet to installing packages also for initializing hardware, however you will be paying the price for any failure of the windows machine.

1
  • Well how often does it fail, if you're working in the Linux VM most of the time?
    – smci
    Commented Jun 5, 2017 at 11:12
8

I use a similar configuration, and I find it incredibly useful simply because I can copy and move my work Linux VM between machines.

I have only found two significant downsides to using a VM.

  1. If the host is using a wireless network connection, a vpn is very unreliable in the guest
  2. Multi monitor setups generally suck in a VM.

Point number 2 can effectively be overcome by using VMWare and Unity - Unity being a VMWare feature that runs applications in windows on the host's desktop (not to be confused with Ubuntu Unity).

1
  • I've had no issue at all with 2. with VirtualBox and GNOME, after following the Arch Linux setup guide. Commented May 12, 2012 at 6:31
8

One thing you might want to consider is to make sure your hardware has been tested with the linux distro you are using. I ran into the issue that a distribution I used ran perfectly well in a VM, but was horribly unstable natively, due to a graphics card that wasn't fully tested with the distribution. Fedora for example has a list of hardware that has been tested fully. The fact is, no linux distribution is going to be 100% stable with state of the art hardware with new, buggy drivers. I tried to do what you did but ended up deleting my linux partition after several distributions would not run stable enough for me. In my opinion, unless you are doing anything that requires hardware acceleration, there is absolutely no need to run linux natively.

1
  • ^ This! People say "Windows can catch a virus" and "Linux is more stable" Truth is if you use Windows mainly as a host then you would not catch any viruses however with Linux there is a real chance of finding yourself in a world of pain due to driver shortcomings.
    – Rolf
    Commented Mar 21, 2019 at 17:10
7

My power consumption rises drastically whenever I start VirtualBox.

In my case, I run Linux as both host and guest, and I don't know if the host/guest OS makes a difference, or if this is inherent to either VirtualBox or the virtualization technique.

Using powertop I can see that the process "VBoxHeadless" is frequently the single largest consumer of power on my system.

If this is a desktop system, maybe this doesn't matter to you, but on my laptop, I want to turn VirtualBox off whenever I have no need for the guest system.

1
  • 2
    I had this issue too until I switched the kernel. Ubuntu at least comes with special kernel for running in virtual machine. The high resolution timer is the culprit for the CPU hogging, I believe, which is disabled in the special kernel versions. Now the CPU usage as reported by the host OS (Windows 7 at the moment) is comfortably low when idle.
    – FooF
    Commented Aug 7, 2012 at 6:51
6

If you are not using VMs for special purposes (e.g., need to clone VMs; copy/move between servers; have multiple different test environments; etc), I'd suggest installing linux as the primary OS for your 95% of activities, and then install windows as a VM from within linux for your 5% activity of windows activities. (Unless your 5% of windows activity is extremely CPU/memory intensive; like using photoshop or video editing.) If you have a linux as your primary OS it will have full access to all your memory and all your cpu cores. However, if its within a VM you can only assign a small fraction of memory CPU cores to it; generally at best half the resources of the machine can be assigned to a VM. So if you have an quad-core machine with 8 GB of RAM, but only assigned 1 core and 2GB to your VM, performance in the VM for 95% of stuff will suffer significantly.

Using a VM will be slower. For most stuff, virtualization nowadays is very good and the difference will not be noticeable (other than the noticeable drop in available CPUs/RAM to the VM); however if you need fancy hardware acceleration (e.g., for graphics) your VM may not translate to your card properly; so you may notice video/3-d rendering suffers significantly within the VM.

2
  • 3
    OP wants to use Windows for gaming. Running Windows inside a VM may make it too slow.
    – Mikel
    Commented May 11, 2012 at 20:26
  • @Mikel - On re-read I see that I originally missed the windows gaming bit.
    – dr jimbob
    Commented May 11, 2012 at 20:52
5

I can tell you that -in my experience- the contrary configuration is better. I mean host with linux and the guest with windows. This because of the performance and the stability. In this moment I am working in the office with a host windows and a guest linux (I need both of them) but in my personal laptop i have host with linux and guest with windows. And the performances is better in my laptop. Even when my personal laptop has less resources.

Anyway I can't see any problem (without a workaround) in your configuration. it's just a matter of taste.

2
  • +1 because of VMware, which is an absolute pig on Windows. It has to install a whole lot of stuff that exists out of the box on Linux, just to get its job done. I've had it make a hash of my networking a few times, for instance, whereas that's never happened to me with any VM system on Linux. VirtualBox is closers to a 1:1 match between platforms, but due to the superior command line environment, I still prefer running it on Linux, since VBox is such a verbose command system. Commented May 12, 2012 at 1:42
  • 2
    s/whit/with/g. whit means something else entirely. Commented May 13, 2012 at 0:20
4

I run Ubuntu in a VirtualBox VM, and I think the only issue I hit is that the OpenGL acceleration pass-through to the host is ropey.

3

I started off doing what you do, *nix in a virtual machine. This is great for trying it, but I suggest flipping it around. Windows can run surprisingly well in a VM. If you mainly use Linux, then why not make the host system use Linux?

Pros:

  1. More control over host issues(ie crashes/automatic reboots less likely with Linux)
  2. Linux uses less resources than Windows when idle (resources you could instead allocate to a virtual machine)
  3. Virtualbox, in my opinion, runs better on Linux. I've tried it both ways.
  4. Easy to setup awesome speed boosts to a virtual machine on linux. I use software RAID across 2 consumer harddrives to make a Windows XP VM boot into firefox in 8 seconds flat

Cons:

  1. Possible driver issues when running linux as a host
  2. 3D acceleration might be difficult to get going on Linux
  3. If you use Windows for playing games, a virtual machine may not be fast enough
2

There is absolutely no reason not to do so, as long as everything you want to do in the host and client works as you want.

I used this setup on my Sony PCG-Z505 with VMware from early 2000 until mid 2003. Host: Windows 98 and client SuSE Linux. The main reason for that setup were that I could use the imap server under Linux from the host Outlook Express while being mobile (I had that on my Desktop Linux machine before that with Win98 under Linux). The Linux client also would do do spam filtering etc in Linux. I also could login the servers at work using a ssh in a more familiar environment.

The VM host nicely shielded Linux from hardware problems. IIRC there were some problems with wireless, but most of the time I was on a wired connection at home or in the office. If not I would have Outlook Express pickup the mail and push it to the imap server, temporarily loosing spamfiltering while only on wireless.

I could not run this the other way around (as I did on my Desktop before that), because I normally ran Linux without graphics, otherwise things would not fit in memory. With Linux as a host I would have had to run it in graphics mode as well all the time, leaving too little memory under Windows 98 to run Word without swapping.

1

I also use this config (Ubuntu guest on Windows).

Pro:

  • No change to the initial windows, my company's IT department will support any windows related problem/crash.

Con:

  • Slow to start: need to start windows, then start the virtual machine.
  • No Wireless bridging.
1

I'm adding a note to the already existing (and excellent) answers: it is also possible to run Linux and Windows side by side.

The project Cooperative Linux is aimed at this:

Cooperative Linux is the first working free and open source method for optimally running Linux on Microsoft Windows natively. More generally, Cooperative Linux (short-named coLinux) is a port of the Linux kernel that allows it to run cooperatively alongside another operating system on a single machine.

and there are even Linux distros that run on it: TopologiLinux and andLinux.

Unfortunately it seems that these projects have been abandoned; latest release of coLinux is 3 years old, and latest release of both distros are 8 years old.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .