I was an “Open Source” guy at Microsoft so it only made sense that I did some of my development on Linux.
Many folks have emailed me since leaving Microsoft and joining Mozilla with questions about my decision. While I do intend to blog about my “logic” sometime in the weeks to come, I wanted to invite my readers to join me in zooming up my Open Source skills.
Mozilla provided me with a Mac Book Air and a Samsung Android Tablet, both of which I love, but for web development, I’m going with Linux.
Why ?
Contrary to some popular belief, OS/X is not Linux under the covers. People also say it’s FreeBSD under the covers but I don’t think that is accurate either.
OS/X is based on the Mach Kernel which grew out of NeXTSTEP from which it inherited UNIX-ish bits from FreeBSD and OpenBSD. [ read more ]
The significant majority of apps on the web run on Linux. I’ve hosed sites on Centos for many years and found it to be fast, stable, and very cost effective.
It make’s sense to do your development on the technology that is as close as possible to your deployment stack.
I don’t like the “boxed” web stacks like WAMP or MAMP and I don’t like the way OX/S obscures the OS (again, just for web development purposes.)
Of course there are MANY Linux distros (distributions) to choose from. For production servers my choices are :
- Red Hat REL when the solution domain required an on-demand support option.
- CentOS what it does not.
But, for my development desktop I like a little more feature “wiz”. My hard core Open Source buddies will all remind me that “real men use Debian”, but, I’m a pragmatist. What’s more, two of my “other” favorite distros are built on top of Debian.
If you’re new to Linux you may wonder why such a thing matters to you. Well, there are two very popular “packaging strategies” for Linux applications.
- Red Hat .rpm files
- Debian .deb files
Both are popular but it seems to me that the .deb format is more current, probably due to the popularity of Ubuntu.
DistroWatch.com is a great site where you can track the relative popularity of the various Linux distributions. Note that the two most popular (right now ) are Ubuntu (which is built on Debian) and Mint (which is in turn built om Ubuntu). The latest version of Ubuntu came out with a new desktop style called Unity which had been received with mixed reviews and that seems to have resulted in a surge in the popularity pf Mint. It’s really a matter of preference and it’s easy to run Ubuntu without running the new Unity style desktop.
For Windows users moving to Linux, one thing that is a bit of a convenience on Mint is that Mint Linux pre-configures “Wine” and an application installer for Wine. Wine makes it possible to run many (but not all) Windows application on Linux.
Of course, you can also run Wine (and therefore many Windows applications) run on Ubuntu, but for getting started Mint makes it just a little bit more straight forward.
I run both Ubuntu and Mint. In fact I never sell old PCs so I have almost every popular distro running somewhere in my office.
If you’re a developer using Windows (or any Windows user) you probably don’t want to just wipe out your Windows box and re-pave it with Linux, so I thought I’d help folks get started in a way that doesn’t require you to give anything up or take any risks. (Or pay any money.)
In the tutorial below I’ll walk you through setting up Ubuntu on Windows inside a virtual machine.
This will not cost you a penny. Just a few gigabytes of disk space.
NOTE : I do NOT suggest you try this with Microsoft’s free VirtualPC. Recent versions of the Linux Kernel have problems in MS-VPC. This has been true for years and is a known issue that Microsoft has not fixed. (Which sort of makes sense as their Virtualization products are intended to virtualize their operating systems, though Microsoft’s server virtualization options do provide some level of Linux support.)
The good news is that VMware now offers a free desktop option for personal use. (There are Free Open Source options as well.)
Click on the link below to view the rest of this post and read the tutorial that will walk you though setting up an Ubuntu Linux Virtual PC…..
First we need to download the free VMware player [ HERE ]
Before you start installing the VMWare player you probably want to start the Linus ISO download.
If you already have an Ubuntu CD, you can use that, but the VMWare Player let’s us create a VM instance from an .iso file on disk which is much faster than reading from a CD / DVD drive. So we can just download an .iso file and not bother burning the image to a physical disk.
Go to Ubuntu on line and download the .iso that yo want (I’ll grab the 32 bit version) [ Get it HERE ]
While that is downloading, go ahead and run the VMWare installer that you downloaded. Accept the default install options and, if you are prompted for permissions, say yes. When you’re done, double click on the VMWare Player icon .

When the VMWare player starts, select “Create a New Virtual Machine”.

When the “New Virtual Machine Wizard” starts, switch the “install from” option from “Installer disk” to “Installer disk image file”.
Once your Ubuntu download has completed you can click on the browse button and select the Ubuntu .iso file that you just downloaded.

After you select your Ubuntu .iso something cool happens. Note the line pointed out by the red arrow. The VMWare player is “Ubuntu aware” and has some built in smarts for installing Ubuntu (other Linux distros are supported by “Easy Install” too.)
Stop and read / look closely before you fill out the next screen.

The settings that you enter in this dialog will become your log-in credentials for this Linux installation.
- Your “Full name” can pretty much be anything using the accepted character set.
- Your “USER name” must be lower case.
- a password is required, but the rules are slack
When you fill out these fields and click next you will have a chance to name the virtual machine and select where the VM file will be located.

Next, I suggest you just take the defaults.

If you are going to build a VM that you will use seriously, you may want to increase the disk space allocation and the memory, but for our purposes the defaults will work just fine.
Also, if you’re using NTFS on your Windows install (which is the default on modern versions) you shouldn’t have problems moving the large single VM files around.
Click next and we will have the chance to revew our selections.

The “Customize Hardware” button will expose the options to increase the VM’s memory allocation, etc.
After you click finish, you will get a hint as to the devices that you can choose to attach to your Linux VM instance. We’re not going to connect any, but it’s a nice as to how easily you can integrate the devices that Windows is configured to use.

You’ll also get a dialog that asks you if you want to download and install the latest version of the VMWare tools for Linux. These tools help your Windows “host” and your Linux “client” to work together so i suggest you agree and click the “Download and Install” button.

You’ll see this dialog :

Just move the dialog out of the way and let it do its thing. We can move on with our configuration.

While the VMWare tools for Linux are downloading you will see that the VMWare player is installing Ubuntu Linux.
When it’s done, you will see this :

Ignore this prompt and in a few seconds you will see this screen:

Click on your user name :

Note this error / warning message !

Don’t worry, this is normal. Becuase we are installing Ubuntu Linux in a virtual machine, the VM presents a virtualized set of generic hardware. Ubuntu only wants to try to run Unity if it is sure your environment can support it. When you install on native hardware you may want to use Unity, however I prefer the classic Ubuntu interface.
Ubuntu will log you in and start the “Classic” desktop.
When you log out and than log back in you will see an option atthe bottom of the screen that will allow you to specify the Classic desktop.

Poof Ubuntu Linux is YOURS.
You will note that Mozilla Firefox is installed by default.

[sarcasm-on]
Since FireFox is the best browser on the web – it is all you will ever need but, should you want a different choice, for testing perhaps, you can install Chrome, Opera or one of the other browsers that support Linux.
Also, Ubuntu will automatically check to see if there are any updates available.
Since you are a Windows user, you should already be used to this model.
[sarcasm-off]
Click on the Update Manager Link

You can review and choose which updates you want to install. I update everythign that is available.

The first update will take a few minutes.
You may also want to do a separate “proprietary” driver install.

In the case of our Virtual Machine we will use this to install the VMWare Client tools for Linnux.

BUT, if you are installing directly to your machine and your machine’s manufacturer supplies Linux drivers, you may find these proprietary drivers available for install here as well.
In a follow up post I’ll focus on the developer tools that I’ll be using to do demos but I want to show you how easy it is to install software applications using Ubuntu’s Software Center.
For email, Ubuntu includes Evolution Mail by default, but I much prefer Mozilla Thunderbird so lets use the Ubuntu Software Center to install Thunderbird.
At the top left corner of the desktop you will see the Applications menu, pull it down and select the bottom option”Ubuntu Software Center”

When the Software Center starts you can either browse categories or search by name.
This is party central for free software – so you’ll find dozens of applications you will want to try.

Type “thunder’ in the search box ….

Thunderbird Mail / News will appear in the hits list, click on the Thunderbird install button.

You will see “Installing” and “In progress” indicators that show that the application is installing.
When the app is fully installed you will see the progress bar turns in to a “Remove” button.

Viola ! You’re up and running and ready to explore Linux – and all it cost you was a little disk space.
Next, I’ll start spinning up a developer tools stack and we’ll get to writing some code.
have fun, email me with problems or questions !























Excelent post. Can’t wait to see what tool stack you recommend for web on linux (extra credit if you give hints on using MS ASP.NET web stack on linux
)
As always,good post.
If I might ask/add:
1. I am using VirtualBox for my non-MS VMs on Windows 7 (lenovo SL500 without Hyper-V), and compared to VMWare Player, I would prefer VirtualBox because it has smaller download/install footprint. Why did you choose VMWare?
2. I also use Aptana Studio for Ruby (learning, testing, no real production code) on Ubuntu 11.4 and it looks like stable and fast IDE. I haven’t tried plain Eclipse, however, and cannot compare between the two.
*Hyper-V => hardware virualization
Thank you for your specific guidance. I had been a developer on windows platform for quite long and still do and your regular follower since your microsoft time. I just install ubuntu in my separate desktop pc. Feel Good to learn new stuffs. I am looking forward to the developer tools, application hosting in linux environment and ultimately planning to lunch full fledge product in linux. thank you once again.
Milan Tamang
Malaysia
[...] Trying Linux for Windows Users – A visual tutorial. (Joe Stagner) [...]
That’s super – glad the post was helpful !
I chose VMWare only because I use in on my Macs and so I’m used to it and have found the performance and stability to be great.
I’ll compare Eclipse and Aptana in an upcoming post.
Thanks
I will keep tuning in just to see what web framework you will be using, although I have a good idea and it’s not asp.net
. NodeJS would be pleasantly unexpected.
Thanks Michael.
Mozilla is all about the Open Web so I don’t have to choose any ONE thing.
I’ll be building on existing PHP apps (Drupal) building from scratch in Python and Node.js !!
Awesome post Joe! How about installing on an older PC and wiping out the old OS in the process. Is it as simple as just insert ubuntu disk and go? What are your thoughts about ubuntu server and using that for the backend of a small to mid sized business? Great job as usual and looking forward to more. Thanks!
Thanks Don – It is just that simple USUALLY. Once and a while you will ruin into a snag and may need to update the machine BIOS or ad a little additional driver. I have Ubuntu running on an old Tecra and it’s WAY faster than Windows 7.
I’ll post about Ubuntu Server this week.
Thanks. Yes, have been dual-booting computers since around 2001. First Linux I tried was Mandrake, then Suse, then Ubuntu, and now all my computers are dual-boot Windows 7 + Linux Mint. Very happy with it. Never had much luck getting wireless to work on Ubuntu, but had little trouble with Mint.
Another thing you can’t do with OS/X – build your own PC!
I have an old computer that I’m thinking of turning into a Linux media center, and plugging it permanently into my TV. Anyone try LinuxMCE, or something else similar?
Hi Alex,
I’ve found Ubuntu Wireless to be flawless !!
For TV have you tried Mythbuntu ? http://www.mythbuntu.org/
I’ve heard many people say that their wireless works fine on Ubuntu, but for some reason, I’ve had no luck. I tried on 3 different computers and 4 different wireless cards. Then I installed Linux Mint and it worked with no problem, so I just stuck with it. Of course, it took proprietary drivers to get it to work.
Maybe I’ll have to give Ubuntu another try, since the last time I tried was almost 2 years ago.
No, haven’t tried Mythbuntu, also had someone recommend Boxee. I’ll have to try them out. It’s nice that Hulu works on Linux now, and I have a Wii for Netflix…can’t wait to put it all together! Thanks!
Oh…and one more thing, if I may, in terms of Web development, I’m a big fan of JetBrains IDEs. They are not free like Eclipse and Aptana, but are fairly cheap, and also cross-platform (Win, Mac, Linux).
I can’t wait to see the way you setup a proper developer stack.
For the life of me, I cannot let go of Windows 100% for web development because I can’t get PHP/Python/RoR debugging on Linux (Debian or Fedora) to work!
System administration scripts are not a problem, J2SE isn’t either, its just web pages that drive me up the walls.
Can’t wait!
+1 for: I can’t wait to see the way you setup a proper developer stack.
+1 for: Can’t wait to see what tool stack you recommend for web on linux.
As Dragan (2. above) pointed out, VirtualBox is a reasonable choice. There is also another choice for Ubuntu. It is a “Wubi” install. It allows you to install Ubuntu into a Windows directory (just like installing any other Windows app.). The install process creates virtual disks inside its Windows directory. It does place a couple of files on the “C:” (root) disk and adds a line to the boot process (in XP – the boot.ini file – I’m not sure how it sets up the Vista and Win. 7 boot process). At boot time, you are given the choice to boot into Windows as usual or to boot directly into Ubuntu in its Windows directory (named “ubuntu”). The advantage, of course, you eliminate the step of creating a virtual machine and then installing Ubuntu into the virtual machine. If you decide against Ubuntu, you can invoke the “uninstall exe” file in the Windows directory (ubuntu).
I recently had to replace by desktop with a new one, running Win. 7. I created a virtual machine (VirtualBox) and installed Ubuntu 10.04. I did notice that I did not have access to my USB ports and to my router (ethernet).
On my old Acer XP laptop, I have a Wubi install and have access to all my devices (except the Broadcom card – I have netgear and linksys adapters which work).
I also have an even older Toshiba lap-top, with a dedicated Ubuntu 10.04 install. I installed VirtualBox under Ubuntu and I have access to all my devices, unlike the Win. 7 VirtualBox install.
On the Ubuntu download page it has an option to use the “Ubuntu Windows installer”. What’s that all about? How does that compare to running Ubuntu in VMWare?
If you want to install Ubuntu inside Windows