Part II – Ubuntu & Flavors of Linux
In the first post of this series I explained the purpose of this tutorial, what type of audience it targets – Windows/.NET developers & power users, and why does a Windows power user should learn at least the basics of Linux. I strongly encourage you to read the introduction as it clearly answers that question, as well as points to some important housekeeping aspects of this series.
In this post, we will quickly cover some flavors of Linux and aim towards the distribution that will be the focus of this series – Ubuntu Server.
Flavors of Linux
There’s a whole tree of platforms that derive from Unix. Linux (or GNU/Linux) is just one branch, and the most widely used Unix-based platform today. There are multiple “layers” of sub-branches, where each layer adds something. We will focus on one path of this tree.
Debian is an operating system that, in one of its flavors, uses the Linux kernel. Among the platforms that implement the Linux kernel, Debian is the most popular. Ubuntu is an operating system that’s based on Debian. It’s a flavor of Debian, with more options and tools that come out of the box.
Why does this tutorial cover Ubuntu out of all the available Linux distributions?
From Wikipedia (stats as to October 2013):
- Ubuntu is used by 26.1% of all Linux websites, behind only Debian (on which Ubuntu is based), which is used by 32.7% of all Linux websites.
- Ubuntu is the most popular Linux distribution among the top 1000 sites and gains around 500 of the top 10 million websites per day.
Ubuntu has its own Stack Exchange site which is really cool and highly practical to get answers to common questions from (and ask your own of course).
Ubuntu as a great optional GUI (called “Unity”) that makes Windows users really feel at home.
But bare in mind that almost all the content that will be described in this tutorial applies to all flavors of Linux (and especially all flavors of Debian) as-is.
Ubuntu is available without any cost of course, under various open source licenses. It is maintained by a commercial company, Canonical, which provides optional support services.
Server & Desktop Editions
At the beginning, it might sound awkward to get used to distinguish between a server and a desktop edition; but think about it this way: everything that is server-side (web apps, APIs, servers, network interfaces, file system etc.) is possible to achieve using command line. The GUI is just a layer above – a convenient (well, sometimes) way to visualize things, change and view data that we don’t know how to do using command line. Of course, human beings need a GUI to browse the Internet (there are text-based Internet browsers, but they’re not that friendly), a visual editor to edit documents, graphical editors to edit graphics and so on. But for anything that is software processing, batches etc. you really don’t need a GUI.
Ubuntu comes in two main flavors: Server edition and Desktop edition. The Desktop edition is like the Server edition, but with the Unity GUI layer pre-installed, which provides a Windows-like experience: you boot your PC, wait a bit, and get a very familiar graphical login interface. From there, it’s very similar to Windows (roughly speaking).
Server edition doesn’t come with any graphical interface pre-installed. You boot, and the first thing you see is a login prompt console screen. If you were born before the 90’s and remember Windows 3.1, it’s basically the same idea: when you boot you get the DOS command prompt, you type
win and you get the Windows GUI. You exit Windows, and you’re back in DOS (note: Windows 95/98 are based on the same idea, but Microsoft made it so that your boot process directly opens Windows. Things are different only from Windows NT/2000 and up).
But even in Ubuntu Server edition, you can install the “Unity” graphic interface. It will work, but you don’t want to do that in an environment you plan to deploy to production. It will make your system consume much more disk space, be heavier and expand the system’s attack surface significantly. With servers, you want what is crucial for the server to run and nothing else.
With Windows Server 2008, Microsoft, which became aware of the advantages of thin server systems, provided the option to install “Server Core” which is almost the same thing – no GUI installation, and a boot process that presents you with a PowerShell console only. I don’t think this setup is widely used though, because we – Windows users – are used to do everything with the GUI and it sounds hard to do everything using PowerShell. It’s absolutely possible though.
OK – back to our Ubuntu – the idea is that you may (and most probably will) use Desktop edition for you day-to-day usage scenarios, and Server edition for servers you deploy to production.
At this point I must emphasize: Don’t be afraid of the console (it’s called “Shell” in Linux and we’ll get to that). At the beginning it looks scary, but you’ll find everything you need widely available on the Internet using simple Google searches, including command parameters, shell script guides (think of them as BAT or PowerShell files). In fact, this tutorial won’t tell you anything that is not available out there on the Internet; I just hope to present it in a way that will give a good and easy head-start for Windows professionals to get familiar with Ubuntu (and Linux in general).
You’ll find that it’s very handy and quick to login to your machines remotely (“SSHing”); you basically only need an existing Internet connection. You can even connect from Windows and we’ll see that later.
This tutorial will focus on Ubuntu Server. That’s the only way to really learn Linux. For Desktop usage you really don’t need anything – just install (or run using a Live CD) and you’re good to go, for any day-to-day usage: Internet browsing, word processing, coding. By focusing on Ubuntu Server I’m not trying to be geeky. It’s the only real way to set up a server. And it’s not that hard – you just need to jump into the water, and you’ll find that the water is not that cold.
OK, that’s enough of an introduction for this time. In the next post we will start going hands on: we will see what are the options to spin up a shiny Linux Server really quickly and will get familiarized with the shell.