I've met more than a couple of programmers who are otherwise so computer illiterate that you pretty much have to walk them over and sit them down in front of a text editor.
Most people around here seem to have somewhat decent system-admin skills, but there's also lots of students and even professionals who just haven't messed around with virtualization very much.
I'm pretty good at using VMWare to set up Linux systems in Windows, but I haven't tried the opposite yet. Sure, I could probably figure it out, but it's nice to have this guide to fall back on if something goes wrong.
> I've met more than a couple of programmers who are otherwise so computer illiterate
I have not witnessed this myself but I have heard countless stories from friends/colleagues in the same vein - there seems to be indeed a big gap between one's coding abilities and the overall computing knowledge.
I think turning off mouse integration in virtualbox helps with the tablet issues. I use virtual box for Photoshop and light wave 3d, and the mouse integration feature always upset how the program read the cursors coordinates. You just have to remember to use the keyboard shortcut to turn it on again before trying to move your mouse back to a host program.
I was doing something similar but end it up ditching the whole thing since I'm running CS6 on Wine without any problems (except a buggy lasso tool):
https://gist.github.com/4610671
It checks for the VM state and waits the system to be ready, so you can turn off the vm if you want. Feel free to adapt to your needs.
When you're installing it will say it's not working...but check the HDD light because it's actually installing files so when it stops blinking your installation is ready.
Thanks, muellerwolfram. This guide is excellent and dear to me as someone once stuck in the exact same position described in the opening paragraph. Indeed, flitting between operating systems was so natural that even now I instinctively want to take issue with your "dual boot sucks" but if I could use one OS for everything (and I do mean "everything", other OS emulation included) then I would, so quite simply: you are right.
For what it's worth, I chose a different route in solving my Photoshop dependence: I forced myself to learn alternatives. But I don't mean just that I learned GIMP (which I recommend, though completely sympathise with the "Regarding GIMP" section); I mean that I made it my goal to be someone who can take new software and ascertain how to do with it what I already know how to do in my "native" habitat, even if the method is convoluted or requires learning a new paradigm. This goes back to days of using elementary school computers with nothing more than MSPaint and enjoying that hit of satisfaction from performing a manual "crop": make a selection, copy it, minimise the canvas to a handful of pixels, ctrl+V, MSPaint automatically resizes the canvas to the pasted selection, BLAM it's a crop! (We've all been young, when figuring these things out for oneself is the next best thing to being a Jedi - and that said, if anyone has their own method for cropping in 2000-era MSPaint I'd love to hear it). Likewise in the "new paradigms" category, learning about Turing machines and formal data structures changed everything for me as a BASIC-minded programmer.
Since adopting this generalised view I have found it's helpful as a core principle: I can't always count on the environments I know, so learning to adapt is crucial. This applies to programming, competitions, and even romantic partners. In the infinite indulgence of our field to give everything a "cool" name, I refer to this as the "Peter Petrelli" skill.
Quite apart from arguing against using Photoshop in Ubuntu, it returns to your piece. Sometimes short of coding something up from scratch there really is only one program that does what we require to solve a specific problem, and sometimes the operating system is fixed. Knowing how to solve the equation for these variables is part of being an adaptable and valuable agent. Great article.
Is anyone running the opposite setup? That is, Windows as the primary OS and Linux in a VM. I'm looking to upgrade my laptop soon and don't want to pay Apple's high prices, so I'm looking at 1080p Windows laptops.
I'm considering Windows as the base OS and a Linux VM for development stuff. I do web development, including design work, so I would need the ability to run Photoshop and other tools. But for running my ruby stuff (Rails, Spork, etc), I think a Linux VM would be ideal.
Summed up: How do others live in the Rails dev world when not using Mac OS?
I have an associate who recently switched from a Linux host to a Windows host running Linux VMs. He spends almost all of his time in his Linux VMs doing dev work, but finds it very convenient to have the Windows host when he wants to play a game, run Photoshop, or do one of a handful other things that don't have good equivalents on Linux.
It's almost tempting to switch to a set up like that but I don't have the heart for it.
I've got multiple machines like this, they run Windows as the host OS but I spend a lot of time in VMs writing code under Linux (I don't do Rails dev, but lots of Go stuff mostly targeting embedded Linux platforms).
On systems with modern CPUs and plenty of RAM to spare the VMs feel basically the same as native to me, especially when running them in fullscreen modes.
I use Windows most of the time due to needing Visual Studio for some Windows related development as well as wanting to play current games in my free time. I also need Linux tools for web and Android development (mainly Android OS modding/compiling).
I supplement windows with a virtual machine running just a Debian terminal interface with 512mb of ram devoted to it. From that, I can run PostgreSQL, MySQL, Apache Ngnix or whatever else wouldn't be so great to keep on Windows. The added benefit of that is I keep my development enviroment seperated from the rest of my PC so I don't have to keep all the services running all the time unless I need them.
When I do have the VM on, I just keep it running in the background on one core and don't even notice it's there other than the ssh terminal I interact with in putty. As for other Linux needs, I can get by mostly with using Cygwin + puttycyg[1] for scripting python/perl/bash/etc. Overall, I haven't felt the need to use dual booting in a few years since adopting that approach.
I did exactly this for many months, but then realized that I was spending 90% of my time in the VM and it just made more sense to run the linux install native.
My laptop is my development machine, so I usually have my desktop (Windows, since it doubles as a gaming rig) in reach if I need Windows for Photoshop or Visual Studio or something else briefly and don't feel like firing up a VM.
I don't see any advantage to running the install native. I've actually had more issues in native installs than through VMs.
As a side note, if anyone is interested in running an Ubuntu desktop VM, I highly recommend Lubuntu. It's extremely lightweight and fast, it's perfect for VMs.
How do you configure your VM once you install it? I seem to have a lot of performance issues unless I get a pre-configured VMWare image. The only image I've ever gotten to run as fast as a native install is the Official Backtrack VMware .iso.
I've installed several distributions, including Lubuntu, along with the VMware tools, but I always get really poor performance when I try to set up my own VMs.
2 processor cores and 2G of memory is all mine needs to perform well. Perhaps my level of "fast enough" is much slower than yours, but my VM doesn't feel any slower than the host.
No, nothing at all. I have an ivy bridge i5, 8GB 1600, and two old nvidia geforce 8600 under sli. Perhaps the people at /r/techsupport could help. Full screen in my VM feels just like booting into Ubuntu - no lag at all.
Honestly, 99% of the time that I want to use linux it's because I want a more powerful command line. My current setup is usually windows/osx as my host system, and a simple putty connection to either a local headless VM, or often one of my linode servers. If you're familiar with vim/emacs, a command line is a perfectly acceptable development environment.
If you go for windows (host) and linux (guest) for dev tools & console stuff you should definitely check CoLinux. It's a very neat virtualisation, where the linux kernel works as another process on widnows, and the performance is really good. However, for the GUI stuff you will need some vnc pipe.
Given that Mac OS straddles these two worlds perfectly well and you're a working professional, why not claim a mac as a tax deduction? (If your jurisdiction allows for that)
As for your question, the answer depends on whether you need the GPU acceleration in your adobe products. If so, you'll obviously want to run them on your host system. Support is getting pretty good but it is not there yet.
Parallels and VMware have both rolled out JIT translation of DX->opengl instructions with a windows guest, which is quite impressive. I doubt this improves your lot, though.
Because Mac OS doesn't straddle the worlds perfectly well. It's definitely more compatible than Windows/Cygwin, but you still spend a lot of time trying to get things to work and/or compile correctly on OS X that would work effectively "out of the box" on a Linux machine. A recent hire has insisted on using a Mac OS workstation and his install time for new tech stacks is through the roof when compared to developers on Linux workstations.
Yes, that has been my experience. Most tech stacks I use install better under Linux. Even if I were using a Mac as the host OS, I will still run Linux as a VM.
i wish power management was better in linux, and optimus was supported in xen. because then I would run xen on an optimus laptop, and then just start the right vm whenever I need it.
my ultramobile cpu actually supports vt-d, but so far it's completely useless
The main problem with using a VM is that you won't be able to open PSD files directly from your file browser. Having to switch to Photoshop and browse for the file would end up being a huge time sink in the long term.
He implemented click to open too. He states that goal at the begining: "should be searchable and launchable from Ubuntu dash." If you read the rest you'll discover how he implemented that.
gmq is probably talking about opening psd files in your Ubuntu file browser by right clicking them and selecting "open with Photoshop". That's not possible with the method i'm describing in the article. But it's something that's bugging me too and I'm working on a solution. I haven't quite figured it out yet though.
Because $HOME/bin is in the path? I always put stuff in $HOME/bin, $HOME/opt, $HOME/etc, etc. if its something that would work equally well mounted somewhere else. In this case it would just require a Linux with VirtualBox installed.
I have a Core2 Quad Q6600 based computer and when I have run Windows inside a VM it is too laggy to use as a serious desktop beyond using a few basic apps. Doing 1080p video is choppy too.
Is there something about newer CPUs such as i7 that makes virtualisation hugely faster and more responsive?
Sorry for hijacking the topic but I need to ask something.
I recently purchased a 3770k and all other parts arrived today. The documentation[1] says 3700k supports Vt-x but not Vt-d. Does that affect anything at all ?
I'd check your RAM settings first. A faster processor helps, but to virtualize an OS properly you need a good chunk of RAM to make both Host and Guest feel snappy. Four gigs works well for me without a VM running, but is a little laggy once a virtual OS is spun up. With my typical work load and 8 gigs of memory properly allocated between the host and guest OSes I rarely notice the VM running in the background.
My host OS still feels fast enough with the VM running.
It's just stuff like menu draws and window dragging etc are very far from snappy. Throughput doesn't seem to be the issue so much as latency.
Possibly a graphics issue, though I do have a reasonable nvidia card and enabled 3d acceleration in Virtualbox.
I don't think Photoshop would be too laggy with modern hardware. I have some lag issues playing modern 3d games, but they seem to be related to game events that access the hard drive. I'm guessing this is because accessing compressed drives have some overhead.
With that said, I'd think the startup time would be horrendous unless he's just suspending the vm. The side effect of that is lots more HD storage requirements. So to make this as lag-free as possible, you would need to turn off hd compression, use suspend to avoid the windows bootup time and defrag like you would normally do in windows.
To answer your question, I believe modern Intel processors have virtualization optimizations built in.
One of the major pain points with VMs is I/O. Get an SSD, and get a fast one, such as the Samsung 830/840Pro. Could be one of the smaller if short on cash.
Do you have an SSD in the host system? As with many things when running outside of a VM, I've found that the SSD provides the greatest performance boost to most applications other than 3D gaming.
I've been doing web development work in a Windows VM for a number of years now and found it to be very responsive even on older MacBook Pros with with only one core of a Core2 Duo allocated to the VM. Adding more RAM helped a little bit, but the biggest speed boost was the addition of an SSD.
"Is there something about newer CPUs such as i7 that makes virtualisation hugely faster and more responsive?"
Well you probably could set the CPU affinity of every single application that is not the VM to one core and set the CPU affinity of the VM to the three other cores. A tiny script doing that should be fairly easy.
Maybe someone who knows VM better than me could tell if it would work or not?
Now my experience with VMs do not match yours: I've been running Windows just fine inside VM providing it has enough RAM (but RAM is basically given these days) and provided the special drivers were installed to make the UI fast.
Also, I've read professional photographer use Octocore Macs with 20 GB of RAM and create gigantic ramdisk for Photoshop and saying that it is incredibly much faster than letting the OS be "smart" about what/when to page to disk.
Care to do one for Arch Linux? I am currently learning Arch so I can make the switch and would really love it if you did an article on the subject. Thank you for your work by the way.
how much it integrates depends on what desktop environment you are using. gnome and kde are using the same desktop files as far as I know. So it should work. Haven't tested it though.
But what if for all the other applications, for example out of security and performance concerns and by desire of not having to reboot every patch-tuesday, he prefers to not run Windows?
I mean, come on!