Linux is Not an Operating System[-][--][++]

Linux itself is not an operating system. For simplicity, we use the word Linux to describe the entire operating system as a whole, but it is important to know this is not technically correct. Linux is only the kernel code (main brain) itself, written by Linus Torvalds. A kernel alone is useless, it needs a thousand other tools and applications to form an operating system. A Linux distribution is a Linux kernel with a ton of other software packages and pieces created by many other people. Many of the base pieces of software are written by an organization called GNU. Most all of the commands you execute from the command line are actually GNU commands. Because of this, the actual word for a "Linux operating system" is Linux/GNU. Again Linux is not an operating system, but for this article we will refer to Linux as the OS/distribution as a whole, for simplicity.

Package Manager and Distros[-][--][++]

Because Linux is simply a collection of a Linux kernel, boot loaders, GNU tools, boot scripts, services and other items, there are a ton of different combinations that people/organization build and support. These are called distributions. So there are a bunch of Linux distributions. If you could find a common thread between many of these distributions it would be their package management system which not only governs how package are installed, but also how the file system is laid out and how your system is booted and configured. This means if two distros use the same package manager, they are going to be very similar.

With Linux, you don't have to go out on the internet and browse around a million sites to "download" and install applications. Almost all applications your system will ever need are available to download/install right from the command line itself, no need to hunt around on the internet or buy some CD. The tool responsible for downloading, installing, uninstalling, managing dependencies of these apps is called a package manager. They are like command line "app stores". In the Linux world there are only a handful of package managers around, and all the different Linux distributions share one of these package managers. Package managers are the common thread between the different distributions.

In the world of Linux distros, you can separated them in groups by their package manager. One of the main package managers is called apt or aptitude and uses the .deb package format. The original .deb based distro is Debian. All other .deb distros are simply forks of Debian itself. They include but are not limited too Ubuntu, Linux Mint, Crunchbang, Grml, Metps, Xandros and many others. Another main package manager is the red hat package manager and uses the .rpm package format. RPM distros are also very popular and include Red Hat, CentOS, Fedora, Suse and many others. Because package managers govern file system organization, boot script configuration and setup, any RPM distro is extremely similar, same with any Debian distro. So if you know Debian well, then you also know Ubuntu well. There are of course minor subtleties but you will feel right at home as long as you stick with the same package management system. Which one you choose is completely up to you.

I prefer Debian based distros. I think .deb files and apt-get (the Debian package manager application) is much better than any other package manager I have found. As as far as which Debian based distro, I always choose Debian itself, not Ubuntu. Debian is especially well suited for the server but I also use it on all of my desktops, laptops and work machines. I also dabble in nearly every other Linux distribution out there so I know them all, but Debian is what I choose for all workloads. Often times, for my desktops, I will install Linux Mint Debian Edition. This is Linux Mint in all it's beauty and glory, but with a pure Debian base instead of the regular Ubuntu base.

It is always advised to pick a distro style (deb/rpm or others) and stick with it. Whether you toggle between Debian itself or Ubuntu or Linux Mint doesn't really matter, the important part is that they are all the same underneath. Trying to have some servers as RPM, some as Deb and a mixture is a real pain. If you stick to one, all your documentation, system configuration and scripts will work across all your servers. It really lowers the learning curve. So stick with one and learn everything you can about it.

For newbies, might I suggest Ubuntu or Linux Mint for your desktop/laptops and Ubuntu Server edition for your servers. You can't go wrong there. If you get much more advanced and knowledgeable, switch your servers to straight Debian. If you want RPM might I suggest CentOS (which is the free version of Red Hat) for your servers and perhaps OpenSuse for your desktop/laptops.

There are also several other distros that use package managers other than the main and popular deb/rpm, like Arch Linux uses its own custom package manager called pacman and Gentoo uses its own called portage. There are many and as you get more advanced you are encouraged to check them all out and build your own conclusions of each.

Root User[-][--][++]

In Linux, the super administrator user is known as root, this cannot be changed and is standard across all Linux distributions. Root is also refereed to as the base level of the file system like any root folder, but they are not the same. It is NEVER advised to login and manage the system as the root user, too dangerous and easy for you to make drastic mistakes. Instead a user with root privileges should be created, this is your primary administration and management user. I always use the username toor (root backwards) for this. You will always login as toor not root to manage your system, toor can do anything root can do but requires commands be prefix with the word sudo, so sudo apt-get update runs apt-get with root privileges. Before sudo can work you must configure which users can use sudo by editing the sudoers file. As root just type sudoers to edit the sudo file and add your users with the right syntax. I would add toor like toor ALL=(ALL) NOPASSWD: ALL.

Fixme