I have a friend thats setting up linux (ubuntu) on his machine. He has a windows installation. I personally use mac as my primary OS, but I’ve had a linux partition on my machine as well, and I’m having a slightly hard time giving him good advice as to what solution he should choose when setting up linux (I don’t even know how I would partition a disk on a windows machine to prep it for dual booting).
My question is quite simple: What are the pros/cons of WSL vs. Dual Booting vs. Virtualbox, both with regards to setup and with regards to usage?
WSL: If your friend is a dev and needs Linux cli utilities, use this. Dual Boot: If your friend wants to daily drive Linux, use this. Shrink Windows NTFS partition within Windows then install Linux to blank space. Virtualbox: Testing ground for dual boot, your friend can familiarise themselves with Linux safely using a VM.
This is what I was going to say.
- If they’re a dev WSL is a godsend for development.
- If they are looking to move away from windows, dual boot or live cd/thumb drive are good ways to test things out.
I never got around to using WSL for dev stuff, sadly. I was stuck on Windows 7 until December 2019 and have had a Mac for work ever since. For personal stuff I just use the MSYS environment included in Git for windows (it has bash and a few other things). If I ever got a Windows laptop for work again I’d probably put the time in to learn WSL.
WSL Pros: easy to use and to install Cons: it still runs on top of Windows and some hardware functions are not available. Also, terminal-only
Virtualbox Basically the same as WSL but it could be slower being a layer2 hypervisor
Dual booting Pros: a full-fledged Linux OS Cons: Harder to install and to mantain.
These are three super different things that fill entirely different uses. It’s like asking if you should use a car, a boat, or an airplane. If you just wanna mess around then probably VirtualBox unless you only want terminal stuff to mess around, then you’d want WSL.
Windows as a daily driver, want to do some development / docker usage based on Linux - WSL. Also you can if I remember correctly only run windows containers on windows as well as linux containers. You cant run windows containers on a linux host
You want to daily drive Linux but sometimes swap back to windows for some specific purpose (like specific games or applications that proton doesnt work with), Dual Boot
Only reason I would use virtualbox over WSL is if I need to work with a fully fledged Linux OS. I havent needed to do this since WSL though
To prep for dual booting, simplest is to have windows installed first then use the graphical installer from Linux distro which lets you select a partition to split, resize and setup GRUB etc. Very easy to do. BACK YOUR SHIT UP THOUGH
If you are going to dual boot and your computer has room for 2 drives. The way I would recommend doing it is to add a second drive for Linux, and disconnect to windows drive from the computer. Do a normal linux install. And then add the windows drive back in. Then you can set one of the drives as the default boot device and if you want to boot to the other just open the Boot options on boot.
This keeps things totally separated and you can even remove one of the drives later if you want to single boot.
In my book WSL and VM share the same downside in that you’re only abstracting Linux functionality in relation to the hardware.
Linux really shines when it has full access to the actual hardware as opposed to asking it’s environment nicely if it’s allowed to do something.
For example, I routinely need to change my IP address to talk to specific networks and network hosts, but having to step over the virtualisation or interpretation layer to do so is just another step, thus removing the advantage of running linux in the first place.
Sure, VMs and dual booting have their uses, but the same uses can be serviced by an actual linux install while also being infinitely more powerful.
I played around with WSL for a while, but you notice really quickly that it is not the real thing. I’ve used virtual box for some use cases, but that too feels limiting ad all of the hardware you want to fully control is only abstracted.
I would say that unless he has a really good reason why he wouldn’t want to go for dual boot, then he should do just that.
I’d love it if VirtualBox emulated some really basic 3D cards (Voodoo 3, Radeon 9800) so I could do some old school gaming. I have a few old Windows games that won’t run under Wine.
Depends on their specific needs, so they should probably jump into some Linux community and ask for themselves.
My anecdotal evidence includes vastly different experiences.
I have a friend who hates Linux desktop and exclusively uses it for running dev related stuff via WSL.
Another who uses Linux desktop primarely, but dualboots Windows for certain games.
And I am on Linux single boot and rarely use KVM (without GPU) for running my CNC or other software.
For a person with not much familiarity with Linux, and just wants to check things out, I would recommend starting out with a VM. WSL is good, but that is not the “Linux experience”. Moreover, if they are not already familiar with the command line, it may be a bit intimidating. The same goes for dual booting. It’s more technical, and it’s more appealing to just jump back into Windows when things go wrong on Linux. VM approach though, gives you a sandboxed space where you can smoothly get familiar and comfortable with Linux before making the final switch. That’s my personal opinion for beginners.
Dual boot
WSL is pretty good these days. Dual boot with Windows is still a pretty risky move with how easily Windows will overwrite your boot loader. I usually recommend you pick one os or the other rather than dual boot, so I’m in favor of WSL or virtualbox. Personally, I have never cared for needing to reboot just to switch operating systems. I tend to stick with one and the second one does nothing but take up disk partition space.
WSL lets you run both simultaneously without rebooting. Virtualbox lets you do the same with extra setup. Virtualbox makes it easier to do GUI setups than WSL does, and the network configuration is a little more obvious.
The best option is to get a second machine so you can run both. If that’s not an option, virtualbox is the better choice for learning. If you just want a Linux environment on your existing setup (similar to using a Mac) then WSL is usually good enough