d line. Install software, schedule updates, shutdown or reboot the system, start or stop services, and more. Now, let us see three examples of how we can use package management from the command line. We will demo using the three leading utilities we mentioned earlier:

apt-get install firefox

yum update kernel-devel

zypper search vlc

Fully mastering the command line is a long and arduous journey. You want to learn how to write your own scripts and programs. You want to able to run unattended tasks that maintain your system, or combine the execution of multiple programs into one.

At this point, my highly useful commands & configurations tutorial might be of use. Furthermore, some neat BASH tricks could also be of use.

Filesystem layout

We talked about commands. But what about the system that contains these commands. So maybe a brief overview of the filesystem hierarchy and architecture is needed. Again, we will use the Windows analogy to make it simple.

So in Windows, you have the C: drive. Under it, there's C:\Windows, which contains core system files. There's Users, which contains users' personal folders. There's C:\TEMP, which is used for temporary files. However, there might be multiple drives on your system, and there is no single view to check them all, unlike the root in Linux. The closest analogy would be My Computer. Anyhow, the classic Linux filesystem hierarchy will look something like the following:

/bin contains basic programs (binaries) like cat, ls, awk, etc.

contains basic programs (binaries) like cat, ls, awk, etc. /boot contains files necessary to boot the system.

contains files necessary to boot the system. /etc contains critical system configuration files.

contains critical system configuration files. /home contains users' directories EXCEPT one special user.

contains users' directories EXCEPT one special user. /lib contains system libraries.

contains system libraries. /opt contains optional installations.

contains optional installations. /root is the home directory of the special user called root.

is the home directory of the user called root. /tmp contains temporary files.

contains temporary files. /usr contains programs like Firefox, VLC, LibreOffice, games.

contains programs like Firefox, VLC, LibreOffice, games. /var contains system logs and runtime files.

There are other paths, but they are not important right now. Each one of these can be called a directory, but it can also be called a filesystem, because the actual data may reside on a remote server. For example, /home directories could be network drives, formatted with their own filesystem.

The default Linux filesystem format is EXT (at revision 4), but many other file format exist, including EXT2, EXT3, BTRFS, XFS, and more. In a nutshell, they are equivalent to the Windows FAT, FAT32 or NTFS file formats, with many additional differences.

Most if not all Linux distributions can natively see and use (read & write) to Windows filesystems, whereas Windows does not have a default ability to do the same thing with Linux filesystems. Therefore, if you connect a drive formatted with one of the Linux filesystems to a Windows box, it will be visible but it will appear unformatted or unusable.

Disk layout

One last thing before we go up and piece our complex puzzle into a single piece. Disk management. We did mention the du and df commands, but the output may be confusing to someone who has never worked with Linux before. Once you figure it out, it is fairly trivial, but not the first time.

I have explained the disk notation in my tutorials linked above. But we shall briefly recap. Windows marks disks the following way: Disk<number>, e.g. Disk0, Disk4, etc. Partitions are marked with letters, e.g. K:, M:.

Linux marks disks based on their controller type. IDE disks are marked hd<letter>. SATA or SCSI disks are marked sd<letter>. For example, the third SATA disk is sdc. Partitions are marked numerically, from 1 onwards, with the first four reserved for primary partitions, and numbers 5 and above for logical partitions. For example, the second primary partition on the first IDE disk is hda2. The first logical partition on the first SATA disk is sda5. This is correct for the MS-DOS partition table. With the GPT scheme, this are slightly different, but still the notation is correct. Virtual machine disks used inside virtualization software may be marked with vd or xd or other letter combinations.

Special devices

Floppy disks are marked as fd, CD-ROMs often as sr or cd. Special devices like cameras, scanners or printers may get their own unique labeling scheme, which can depend on the vendor, model type as well as the specific distribution implementation.

Let's assemble all together

Now, let's take a look at our distributions once more.

Ubuntu is now a special, modified Ubuntu kernel + Unity desktop environment + DEB file format + apt command line package manager + Ubuntu Software Center GUI package manager + its own application stack.

Linux Mint uses its own kernel + Cinnamon + DEB file format + apt + Software Center + its own application stack. The same applies to Fedora and openSUSE and many dozens of other distributions. And there's STILL more granularity, which we have not touched yet, but we might elaborate later on.

What do we have so far?

Let us recap all of what we have learned in this tutorial.

Significant complexity

As you have learned so far, Linux is not a single entity. It is a complex matrix of components. Mastering Linux means mastering many different things. And if you are interested in trying different distributions, it often means you learning a complete stack of applications, desktop behavior, package management, and more.

In Windows, there is only one dimension. In Linux, it's the number of distributions multiplied by the number of desktop environments multiplied by the number of package managers multiplied by the number of application bundles. It is really very difficult to know them all well, and they are sometimes very different. Therefore your Linux exploration should initially focus on a single distribution and its own unique set.

Command line is useful

One thing that can help you if you want to try multiple Linux distributions is to use the command line, because you will maintain a higher level of consistency than with GUI tools, which significantly differ between desktop environments.

So where do I find Linux?

Well, now that we know what Linux is all about, we CAN finally download it. In fact, we will download and use a Linux distribution, one of the many that we have mentioned earlier. Now, let's elaborate on the available choices.

Major Linux distributions

I have mentioned four, and we will focus on these four. For new users, going into the full list of several HUNDRED available Linux distributions is a bad idea. And now that we are here, let's introduce another word - distro, short for distribution.

Ubuntu is one of the most popular Linux distros in the world. It is very easy to install and use, and it has a large install base. Many veteran Linux users recommend this particular flavor of Linux to new users. If you are interested, please take a look at my review of the latest edition to get a hunch what this is all about.

Ubuntu family is very rich, so you might also be interested in Kubuntu, which comes with the KDE desktop, or Xubuntu, which comes with the Xfce desktop. These two are more like Windows in spirit and feel, so new users might find them easier to master.

Linux Mint is another highly popular distro, perhaps even more than Ubuntu according to some sources. Now, this is really an excellent choice for most Windows users, because it comes with pretty much everything pre-configured out of the box. I even voted this the best distro of 2013. Both Mint and Ubuntu offer five years of free updates for their long-term support editions.

openSUSE is another possible choice. In the last years, it has waned a little in popularity, but it can still be a strong candidate. You might want to take a look at my latest review for additional impressions.

Fedora is an interesting distribution in that it ships with no proprietary software, so if you need codecs for music or video, you will have to install them separately. It is also considered relatively unstable, because it often introduces a lot of new and modern technology. Plus, the support cycle is quite short. However, it can be a good choice.

How do I start?

Let's say that this article has actually convinced you to try Linux. Before you do any hard ground work, you must read some more. I most warmly recommend that you invest a little more time reading several guides that I have put together recently, which explain in fanatic detail all that you need to know to run Linux at home, safely, successfully.

How do I install Windows?

This is the first question you should ask. You should NOT use Linux, unless you are fully confident in your ability to install Windows. This may sound harsh and cruel, but believe me, it is for your own good.

To wit, you should read my Windows 7 installation guide, and then the same thing for Windows 8. Not only do both these articles have a wealth of knowledge on the subject matter, they also touch on all the extra steps needed for using Linux at home.

How do I install Linux?

Now, after you have mastered the step above, you are ready to attempt to install a Linux distribution of your own. You may want to start by testing in a virtual machine first. This way, you can learn from your mistakes toward the real thing.

I have written a ton of articles on how to install a wide range of Linux distributions. You might want to start with the latest Ubuntu guide. Then, take a look at an older one. After that, go back some time in history and consult some of my other installation guides. Although they have been written many years ago, they are relevant and accurate.

How do I use Windows and Linux together?

After you have successfully mastered both a separate, standalone Windows and Linux installation, you are ready to use the two at the same time. This is known as dual-boot, and sometimes also referred to as tandem, or side-by-side installations.

You should take a look at my dual-boot tutorial for Windows XP and Kubuntu, as well as the more recent one featuring Windows 7 and Ubuntu, and finally, the latest one featuring Windows 8 and Ubuntu 14.04. Now, the world of dual-booting opens up a whole new world of additional possibilities, as well as technical complications.

You will need to take into consideration data backup, system imaging, bootloader configuration, disk and partition management, and many other issues. All of these topics are covered in detail in the guides above.

How does Linux work?

So let us say that you decided to give this a try. Now, I am going to talk a little about how Linux works, from boot to desktop, the functionality, the accounts, as well as the notable difference from Windows, and that is Linux can run in a live session. This means that before you install a machine, you can boot into a fully functional environment that is visually almost 100% identical to what the system will look like after the installation.

In the live session, you can then test hardware compatibility, look & feel, check programs, and only then decide whether you wish to install this particular flavor of Linux. This is a huge advantage compared to Windows. Furthermore, this allows you to use Linux as recovery systems, because you can start it on non-bootable hosts and repair them.

Linux boot process

Here is a simplified explanation on what Linux does once you power on the machine. First, there's BIOS or UEFI, which initializes the hardware. It also activates the first bootable disk that you have configured in the BIOS or UEFI menu.

It goes into the Master Boot Record (MBR) of the first bootable disk, where a bootloader is installed. The bootloader entry tells the system where to look for the kernel image and the initial filesystem (initramfs or initrd) image. Where in the aforementioned context means which disk, which partition.

The kernel image is a compressed kernel, the actually heart of the operating system. Initrd is a compressed image containing drivers for hardware, needed to initialize most of the system resources. The kernel and initrd are loaded into memory and executed.

The system initialization process (sys_init) starts the first process called init. This special process is a kernel thread, with the process identifier PID=1. Init then goes to /etc/inittab and reads the configuration. This files tells the system in which runlevel to start.

Runlevels

Linux runlevel is a complete state of a system. It is somewhat equivalent to what you would see when hitting F8 during Windows boot to get to the Safe Mode. In the Safe Mode menu, you can boot to command prompt, command prompt with networking, and more.

There are seven Linux runlevels, marked numerically 0-6.

0 is the system halt state.

is the system halt state. 1 is the system rescue state - you boot here to fix system problems. It is also known as Single mode, and sometimes it is referred to as s or S. It is a runlevel with only one user, the special account we mentioned earlier called root , without desktop environment or network.

is the system rescue state - you boot here to fix system problems. It is also known as Single mode, and sometimes it is referred to as s or S. It is a runlevel with only one user, the special account we mentioned earlier called , without desktop environment or network. 2 is a console-only runlevel, with no networking.

is a console-only runlevel, with no networking. 3 is a console-only runlevel, with full networking. This is the typical mode of use for most servers worldwide. The servers run in this mode, and users connect to them using remote shell programs, working on the command line.

is a console-only runlevel, with full networking. This is the typical mode of use for most servers worldwide. The servers run in this mode, and users connect to them using remote shell programs, working on the command line. 4 is normally undefined and unused.

is normally undefined and unused. 5 is the full desktop mode, like you can see in screenshots above.

is the full desktop mode, like you can see in screenshots above. 6 is the reboot state.

When init selects the default runlevel, it goes into /etc/rcX.d, a directory that contains symbolic links to the /etc/init.d/ directory. Symbolic links are like shortcuts. The letter X corresponds to the runlevel. So for runlevel 5, the directory is rc5.d.

Init then starts all services using service scripts marked SXX, where XX is a number, in ascending order from 0 to 99. It tries to resolve dependencies, and then it runs the programs listed in these scripts until the system is fully booted and functional. Conversely, during shutdown or reboot, it runs the kill scripts, marked with KXX in descending numerical order.

This is the classic invocation, and it is not always correct. Some Linux distributions do not use all the seven levels, and some levels are simply identical to others. Some Linux distributions use different methods of starting services, including boot sequence mechanisms called systemd or upstart. But that's advanced stuff.

Desktop environments are also started and initialized, until the user is logged in the full desktop session. Do you remember the virtual consoles we mentioned earlier? Well, you might want to know the desktop session is shown on the seventh virtual console, which can be accessed with Ctrl + Alt + F7. Function keys F1 through F6 access command-line only sessions.

Users

Finally, we need to distinguish between two major user types. There's the system administrator user, called root, with the identified number 0 (ID=0). Then, there are regular users, with generic names.

It is a little confusing that the word root is used for three different things: the root of the filesystem tree, marked by slash (/), the root user, the system administrator user, and the root user home directory, found under /root.

You can identify these different types of users if you execute the Linux task manager. For example, from the command line, then you will see processes that belong to root, as well as other users.

Root is a privileged user, and it is designed for system administration. Regular users do not have permissions to make system changes. This is similar to the limited account concept in Windows. However, in Linux, regular users can elevate their privileges through the sudo mechanism. This allows a temporary elevation of rights to perform a specific administrative task. In Debian-based distributions like Ubuntu and Mint and others, the default is to use sudo rather than authenticating as the root user. In RedHat-based distributions, the second method is more common. In both cases, you need relevant passwords.

sudo some-command

On the other hand, to switch to the root user:

su -

Common desktop activities

Now you are in a Linux desktop? So what do you do now?

Getting to know Linux desktops

Now, remember our earlier conundrum. There is no one desktop environment, so the learning process can be many-fold. It also presents me with a challenge of showing what to do, because each setup is ever so slightly different. But let's try a generic approach. Indeed, here's a desktop, it does not matter which or why:

So what do we have here. In the left bottom corner, a menu, it invokes a menu very much like the Windows start menu. There's a taskbar full of icons, only this bar is called a panel, or rather, a bottom panel. In the right corner, a system area. Very much like Windows. Here's the system menu, open - this is 100% like Windows:

Yet another, even more Windowsy example:

Another example with a classic menu positioned at the top:

You have icons on the desktop. Click to launch them. Some desktop environments offer a double-click mantra, others, like KDE, use the single-click approach. But in a nutshell, once you get the initial fear, the installation, and the complexity of understand the Linux world, the usage becomes trivial.

There's this pair of nice articles on desktop management, Gnome versus KDE.

You can also look my Netrunner desktop environment showdown, too.

Common software

The truth is, most of the software you might want to use is available in the Linux repositories, especially if you are fan of free, open-source solutions. Of course, you will not find most Microsoft and Adobe products, but many others will be there. Or you may choose alternatives.

The important thing is, you do NOT NEED to wander around the Web, looking for software. You can just use your command-line or graphical package manager, and search for the software of your liking. Most package managers are rich application stores, and they will give you star rating, screenshots, reviews, and more.

You should also check my must-have lists, the new and the older one, and one for the less popular Linux desktop environments. Plus, I've compiled a similar guide for Windows, and it will give you a good, strong indication of how the two worlds compare. Then, I have also written many other comparison guides. On media players, on browsers, office software, and still more. The list is endless.

Common games

The world of gaming is truly different between Windows and Linux, although with the creation of the SteamOS, the gap is narrowing. While you are exploring this particular aspect of the Linux world, you might want to take a look at my 100+ game reviews, all done specifically for Linux, on Linux.

Furthermore, you should note that some Windows titles can be used on this new operating system using emulation and other tools, although with limited success and guarantee. The next guide ought to help you decide when and how.

Common tasks

What users will want to do now is something like Windows - install software and configure their system. Most distributions come with a lot of preinstalled stuff, so the housekeeping list might actually be shorter than you expect. Some distros pack codecs, games and extra programs, so no need to sweat there.

Still, you probably might want to install your printers, install Steam, try Skype, configure your Wireless, and still more. I am going to highlight two or three examples here, but then, you will want to follow my mega pimping guides for some of the leading distributions, as these howtos contain a lot of useful information.

Wireless setup example

Let's say you want to configure your Wireless. This seems like one of the first things you might wanna do. This is demonstrated with Kubuntu. Click on the Wireless radio icon, which would be the first one on the right after the digital clock and a little arrow. Then, select the desired connection. Provide your password. Choose to automatically connect. And then, press Connect. Works like any other operating system.

Desktop background change

In most Linux desktops, it will be very much right-click > desktop background. Some other desktop environments may offer a more complicated path. For example, it might be as convoluted as System menu > Preferences > Appearance, then the Background tab.

Graphical card drivers example

This is something that many you would want to know. Well, how about my Ubuntu guide on this topic, which details no less than five different methods to configure and install Nvidia drivers on an Ubuntu box.

Other examples

Check for updates - just like Windows:

Check user settings:

Manage a currently playing music track:

Pimping guides

Here's my essential list for Ubuntu. Likewise, the same tutorial for openSUSE. And then, there's one for Fedora, too, so you should take a closer look. All of these explain how to install and configure many useful pieces of software, including themes, fonts, look & feel tweaks, popular programs like Steam, Skype, VLC, LibreOffice, graphical drivers, codecs, and more.

Additional guides

Some more random reading, if you are interested:

Nvidia setup in openSUSE

Xubuntu pimping guide

Steam setup for Linux Mint and Kubuntu

Skype setup in Ubuntu Salamander

An older guide on Linux printing

Working with subtitles in Linux software

And there's more. Close to 1,000 articles on Dedoimedo.

Best Linux resources

Now that you have invested so much of your time, how about some more reading. Here's my short list of the finest resources for your Linux escapades, so you can become proficient and cool.

Distrowatch is your one-stop shop to finding Linux. This is the de-facto Linux distro portal, where you can find the listing of pretty much any important distro out there. You also get screenshots, links to reviews, and tons of other informations.

For Ubuntu users, Ask Ubuntu is a very good "how do I" resource. Hop yonder and start asking questions. It is the official Ubuntu support channel, in addition to Ubuntu forums, so you can find a lot of useful stuff that may help you get around.

Webup8 has a lot of interesting tutorial for many distribution, despite a small preference for Ubuntu flavors. Tutorial on Webup8 are detailed and useful, often accompanied with command-line instructions to get things working.

LinuxCommand.org will teach you how to use shell scripting.

HowtoForge offers ton of guides for servers.

And my own site, of course!

Serious questions to all readers

Now, I have a few serious questions for you, before we conclude this tutorial. First, would you like to see this article transform into a book, akin to my Apache guide or the Linux Kernel Crash Book, both of which proved to be fairly popular. If so, ping me.

Second, do you feel like anything is missing? Talk to me, and I may add an updates section with additional pointers, tips and tricks. We probably cannot cover everything, but there might be other, obvious things that I failed to include.

Updates & user questions

To be added if the popular demand proves demanding enough ...

Conclusion

There you go. I do like to brag a lot, still I believe this article truly merits praise. It gives the single most comprehensive view of Linux, top to bottom and then back up. Sure, this is only the tip of the iceberg, but you have the comparison to Windows in every single aspect, and you can see the major differences.

Try to follow the whole thing, don't skip any sections. Once you have read everything, you will have gained a decent understanding of the Linux operating system, the many subtle nuances between its varying editions and flavors, and finally, you will know how to setup pretty much any distro, perform multiple installations side by side, and administer your desktop with ease and elegance. It won't be easy, but it's a start. Take care.

P.S. Now seriously, you should consider supporting Dedoimedo. I have invested some forty hours compiling this thing. The least you can do is give some love back. Think about it.

Cheers.