Thursday, November 4, 2010

The Ultimate Linux Beginners Q & A: Part One

The subject of Linux can be very confusing for the average computer user. Its not surprising with all of the misinformation floating about on the Internet. Much of it comes from the fact that most people just don't understand it, thus getting their facts wrong. Then, sometimes its done for malicious purposes to frighten the average computer user from wanting to try Linux. The best way to help the average user to understand Linux is to simply answer their questions as truthfully as possible. That is what this series of articles is about. I've compiled a list of some of the most frequently asked questions the average user posses of Linux. Part One will focus on the basics. Part Two will get into the more advanced stuff answered in plain English so even the greenest computer beginner can understand. More parts will be added if you want to see more. The ultimate goal is to make you, the average computer user, a more informed consumer.

I'm not out to get you to switch to Linux from your current operating system or to make outlandish claims that Linux is better than all the other operating systems out there. Each OS has its pros and cons, its benefits and flaws, and each has something to offer and provides you with the features and functionality that you need. My intention is simply to educate you, and nothing more. I do encourage you to give Linux a try, but that's entirely up to you. So let us begin with the most important question.

What is Linux?

This one confuses people more than anything else. Linux isn't an operating system. It is what is called a Kernel. To understand what a Kernel is think of it like an engine in a car. A car's engine is pretty useless if it doesn't have a transmission, wheels, a chassis that it can be mounted to, a body, and a steering wheel so you can stir the car. In essence its what makes an operating go, and every operating system from Windows, to Mac OS X, to Android, and even iOS 4 on the iPhone has a kernel. All the other parts that come with Linux is called GNU Software (we'll discuss what that is next). Together they make what is called a Linux Distribution and all these pieces combined make an operating system.

The Linux Kernel was created in the early 1990's by a Finnish American university student in software engineering named Linus Torvalds. The name Linux is a mix of Linus's first name and UX which stands for Unix. The Linux Kernel provides a Unix-like system, thus the UX in the name. Unix is a powerful operating system that has been around since the 60's and is still used heavily today in big computer systems at large corporations. Linux shares many of the same properties and capabilities of Unix, such as the ability for more than one user to use the same computer at the same time, and the fact that disk drives do not have drive letters like Windows does. Today, Linus Torvalds through the Linux Mark Institute contributes improvements to the Linux Kernel and monitors its use. He also owns the trademarks of the name "Linux".

What is Free Software, Open Source Software and GNU Software?

While a Linux Distribution may be free for you to obtain and use they aren't really completely free. Someone has paid for it in some way. Much of this software is maintained by people who work for IBM, HP, Oracle, Unisys, TRW, Apple, Xerox, AT&T, and thousands other companies from all over the world. Quite often its their job to maintain these programs and make improvements to them. Other times, some of this software is created by hobbyists in their free time, but the majority of the software that goes into a Linux Distribution is backed by several major international corporation.

The vast majority of this software is Open Source. This means the source code, the actual programming language instructions that were written to create the software, is made available to everyone who wants it. Open Source is not always free, but even if you have to pay for it the source code must always be made available to you.

The license that often governs open source and free software is the GPL or GNU Public License (GNU is pronounced "knew"). There are rules in this license that guarantees the creator or creators gets credit for making the software, it does not restrict them from making money from that software, but it does require that the source code be made available to anyone who wants it. If someone else uses that source code and makes changes, they must share those changes even if they are making money from the modified software. They must also give credit to the original creator or creators of the software. Software that is protected by the GPL license is called GNU Software. Some call it Free Software, but not all free software is under the GPL license. Some software has its own open source license like Firefox which has the Mozilla License and so on and so forth. Its not really that complicated once you figure it out.

What is a Bootloader?

Most every operating system has a bootloader. Its a tiny program that sits in a very small spot at the beginning of your hard drive called the Boot Sector. When you turn your computer on the BIOS does its thing, you hear a beep, and then your operating system starts to load. What gets that operating started is the bootloader. The BIOS in your computer is pretty stupid, it doesn't know how to start your operating system, and frankly doesn't care how its started. All it does is talk to whatever is sitting in the boot sector yelling "hey, I'm ready lets gets started!" and its job is pretty much done. Its the job of the bootloader to know how to get your operating system started, and this means knowing how to get the kernel of the operating system started so it can do its job. How this all works is really complicated and way over your head and in everyday use its not really important that you even know how it all works anyway.

In the beginning most Linux Distributions used a pretty simple bootloader called Lilo, which stood for Linux Loader. Lilo is still around and is used mostly on Android and other Linux based cell phones (ie; the Palm Pre, many Linux phones sold in Japan and Hong Kong, and etc). What Linux Distributions use nowadays is called Grub. Grub does the same job as Lilo but has many more bells and whistles. The average computer user never has to worry about the bootloader unless they're using two or more operating systems on their computer. Say like, you have Windows installed but you also want to use Linux but without getting rid of Windows. You can do this and the bootloader in Windows can be made show a menu when you start the computer so you can select which you want to use. Grub can also show a menu if you have more than one Linux Distribution installed. There are many advantages to doing this, but most average computer users usually will never need to.

What is a LiveCD?

Oh these are neat, really neat, you're going to love these. If you are curious about Linux but have been afraid to try different distributions because you don't want to change anything on your computer then this is the answer to your wishes. Most major Linux distributions make what are called LiveCDs. They are bootable CDs basically, you put them into your CD/DVD-ROM drive, restart your computer, and they boot like a floppy. These CDs, sometimes DVDs too, start up to a fully working Linux desktop with programs you can run and try out without making any changes to your computer at all. If you're ready to commit to using Linux you can then launch the install program right from the desktop of the LiveCD. The Ubuntu Linux distribution also has what is called Wubi. This stands for Windows Ubuntu Installer. It install Ubuntu Linux into Windows like a program. Ubuntu gets installed into a file that acts like a hard drive, and when you restart your computer you can choose to start Windows or start Ubuntu. This doesn't change anything on your hard drive. To remove Ubuntu when its installed this way you just goto Add/Remove Programs and uninstall Ubuntu as if it were an ordinary program. Neat isn't it? This way you can try out Ubuntu on your computer with very little risk to your Windows installation. Ubuntu is the only Linux distribution that offers this feature right now, the rest just have LiveCDs.

You will have to download the CD or DVD image files of the LiveCDs from the websites of the groups that make the distributions, and then burn those images to a disk. So, you'll need blank CD-R and/or DVD-R disks, but most of you should know how to do this if you've ever made an audio CD for yourself. If not send me an email and I'll give you some advice. You can also do a search on Google on how to burn a LiveCD, and many Linux distribution websites will have detailed instructions on how to do it too.

What is a Linux Shell?

You cannot use the kernel by itself. It gives you no direct means to run programs or issue commands in any way. The kernel is just a link between your software and the computer hardware. You can't use just the engine of a car to get anywhere without the rest of the car can you? Heck no, so you need something that sits on top of the kernel that can take commands and run programs. This is a job for the Shell!

The Shell is what makes an operating system an operating system. All of them have one, even the operating systems in cell phones and tablets. You cannot do anything without them. In the Windows world the shell is made by a program called explorer.exe. Its the program that makes the taskbar, the Start Menu, and is responsible for Windows Explorer. There is a text based shell in Windows called cmd.exe. This is very similar to the text based shell of DOS from many years ago called command.com. In the Linux world there are a whole lot of shells to choose from. The most common one you'll see is Bash. This gives you a Command Prompt which lets you enter text commands from the keyboard and run programs. The majority of Linux Distributions use Bash because its very fast, very flexible, and you can write what are called Bash Scripts. Remember the BAT files from DOS? Well Bash Scripts are like those, but they've been working out in the gym and have also been taking steroids. Bash Scripts can be pretty simple or they can almost as complex as programs. You can do a lot with them. On most modern Linux Distributions that are made for the average computer user like Ubuntu, for example, you'll rarely ever have to used the Bash shell. There are many benefits to knowing how it works, though. You can do a whole lot of pretty interesting stuff with it. So don't be afraid of the text prompt in Linux, and don't be afraid of learning how to use it because its one of the most important & powerful tools a Linux user can ever get his or her hands on. Mastering the command prompt in Linux is like having control of the bridge of the USS Enterprise all to yourself and knowing how everything works. Yeah, its gives you that much power.

What are X Windows, Window Managers, and Desktop Environments?

The command prompt is good, and it is very powerful, but its not really that great at running multiple programs at once. So to do that you need a graphical desktop just like in Windows and Mac OS X.

You may have heard of X11, Xfree86 or even X.org. They're all pretty much the same thing but there are fundamental differences between Xfree86 and X.org. They're made by different groups, but they do the same job. That job is to give Linux a graphical user interface similar to what Windows, Mac OS X, and etc. The technical name for X Windows, X11, Xfree86 and X.org is the "Display Manager".

X11 by itself does not give you a way to use programs or anything that lets you use the computer. Its job is to work with the hardware like the video card, mouse, keyboard, and etc. To give you a desktop you can use is the job of a Window Manager. This is software that's responsible for drawing the windows of programs on the screen. They control the placement of stuff like the bar at the top of the windows you use to drag them around the desktop, the buttons for minimizing and closing the programs, and also for showing your wallpaper. They also are used to make menus so you can select what programs you want to run. Some Window Managers do what is called Desktop Composting. This lets them use the power of your 3D video card to make the windows and desktop look fancy. The Aero desktop in Windows 7 is an example of a Compositing Window Manager.

That isn't all that goes into making a desktop in X11. There is also extra software that sits on top of the Window Manager. This is called the Desktop Environment. The two most popular of these is Gnome and KDE, though there are many others and they can share the same programs. Two others known as XFCE and LXDE are lightweight Desktop Environments made for older computers that aren't powerful enough to handle Gnome and KDE. Desktop Environments give you stuff like the file manager so you can browse the files on your computer. Windows Explorer is a good example of a file manager. It also gives you your program icons, folders, toolbars, your screen savers, desktop widgets, a way to change your wallpaper, and etc. They work hand in hand with your Window Manager to give you a usable graphical desktop in X11 so you can get stuff done. The command prompt we talked about earlier. You can get to it from the Terminal in X11, which opens a window that has the command prompt for your shell displayed in it. Click here to see a picture gallery of many different Desktop Environments to get an idea of what they look like.

What is a Package Manager?

Lets turn the clock back ten years to the early days of Linux. Watch your step, don't look out for the dinosaur dung! Installing new programs was not all that easy, nor was it all that easy to update your Linux Distribution either. In fact, it was pretty darned complicated! Fast forward ten years, and that intimidating complexity is all but extinct. In the Windows world there is something called Microsoft Installer, its a part of Windows.. You've probably installed a program that had a .msi extension at the end of the file name. Well that is a Software Package. In the Linux world there are different competing software package formats, but in reality they're all pretty much the same. A Package Manager installs software that is in those packages, but it can do a whole lot more than that.

Let me give you an example of what I mean. Lets imagine you want to install a program for editing video on your Windows 7 computer. Well, you insert the disk, run the installer, you probably have to reboot after the install, and then you run the program. You try to use a certain feature of the program, but you get a warning message that says to use that feature you need Apple Quicktime. Well, nothing told you that you needed Quicktime when you were installing the software. You don't have Apple Quicktime installed. So, you have to open your browser, goto the Apple website, download Quicktime, install it, probably reboot again, and then you're ready to go. In Linux, its completely different. Software Packages will usually contain an index that tells the Package Manager that it needs some extra software for it to work correctly. This extra software is what are called Dependencies, in the Linux world. While its installing your software the Package Manager will go out onto the Internet and download those Dependencies at the same time. So, when its done you don't have to worry about it, and it is rare to ever have to reboot the computer after installing software on Linux unless its an update to the kernel.

Where the Package Manager gets those Dependencies from is called a Repository. Every major Linux Distribution maintains one or more Repositories on the Internet. These are libraries of software sitting on servers that are indexed so Package Managers can find them. If you want to install a new program you can select it in your Package Manager and it will do all the downloading and installation work for you. The Ubuntu Linux distribution has what is called the Ubuntu Software Center in addition to the Package Manager. Its like the iTunes App Store for Linux and its just as easy to use. Most major Linux distributions have something very similar. Repositories are neat because when any piece of software on your computer is updated, the update is put up on the Repository, your Package Manager periodically checks to see if there have been updates, and if it find any it lets you know so you can download them. This is really easy to do. Its sort of like using Windows Update, which is pretty much the same thing. Package Managers and Repositories have taken most of the frustrating complexity out of installing new software and updating software on Linux distributions.

Some confusion comes from the different types of software packages. You have RPMs, which are used by Red Hat Linux distributions. You have DEBs, which are used by Debian Linux distributions. Ubuntu uses .deb software packages, so it is a Debian distribution. Fedora uses .rpm packages, so its a Red Hat distribution. The list goes on and on. These software package formats are pretty much all the same, but just work slightly different from one another. The software they contain is exactly the same. There is no difference between say Firefox in a .deb package and Firefox in a .rpm package, not one difference at all. Its the same exact program. In fact, its possible to use a .rpm software package on a Debian based Linux distribution. You just need software that can read the .rpm package format, and the same thing goes for all of the other major package formats that exist. Its that simple, this is not Rocket Science people!

What is Root?

This trips up a lot of people who are new to Linux. There are two things in Linux that are called Root. The first is the easiest to understand. That is the Root Folder, which is the top most folder in a Linux file system. This is like C:/ on a Windows file system, you can't go any higher than that.

The other Root is different. In the Windows world Root is called the Administrator account. Also, those annoying UAC User Account Control prompts you get in Windows 7, those are an example of Root (sort of). Root has full control of the computer, its a user account that can access everything. Its very powerful, and with great power comes great responsibility. If you don't know what you are doing as Root you can break things easily. But, don't be afraid of Root, because it does have its uses and you will often use it as a Linux user. Its very important.

When you are using a Linux Distribution like Ubuntu your user login is what is called a Limited Account. Mac OS X does the same thing. Windows is different, everyone is Root on Windows, but in Ubuntu and many other Linux distributions what you can access is restricted until you use a password to access Root privileges. You are often prompted to enter the Root password if you are installing updates, installing new software from the package manager, or changing major system settings that effects the entire computer. This gives you temporary Root powers until the job is done. You can also temporarily switch to Root using a command called sudo. This stands for Super User Do, and it lets you act as Root for a short time to do something from the command prompt in the terminal. Sudo will also let you switch between different regular user logins too and isn't just limited to using Root privileges. Its not really often that you'll use sudo from the terminal in Linux, but its there if you ever do need it.

Can I run Windows programs in Linux?

The answer is No, and Yes. Confused, don't be.

Linux is not Windows. It is totally different not just under the hood in its inner working but on the surface as well. Different does not equal BAD. I mean, Mac OS X isn't like Windows either, and its very different from Windows under the hood and on the surface too. Neither Linux nor Mac OS X can run programs meant for Windows, by themselves. Did you catch that? Good, let move on.

There is software available for Linux and Mac OS X that will let you run Windows programs. This software is called WINE, it stands for Wine Is Not an Emulator, and well it is not an emulator. An emulator is a program that mimics the hardware of a computer using software. WINE doesn't do this. The easiest description is it tricks Windows programs into thinking they're running on Windows when they aren't. Its a bit more complicated than that but I think you understand so far. WINE is free software under the GPL license. A company makes a program called CrossOver, which is a version of WINE that they've modified and sell for Linux and Mac OS X. This lets you run Windows programs too, and even makes it a bit easier to adjust the settings of the software so those programs run smoothly.

Using WINE and CrossOver you can run most Windows programs, not everything works, but most stuff does. You can also run most Windows games. Stuff that is known to work just fine with WINE (ha! ha!) is World of Warcraft, the Steam software client for buying games online, nearly all of the Source Engine games from Valve such as Half-Life 2, TeamFortress 2, and etc. To get a full list of the games and programs that will or will not run on WINE go to this webpage. Some Linux distributions come with WINE already installed, but if its not there you can easily get it through your distribution's package manager.

If something doesn't work, don't panic. There is a lot of free software out there for Linux so if your Windows program doesn't work chances are there's a free open source alternative out there that is just as good. That's not always the case, so don't count on it, especially when you're talking about games. Some game makers do have Linux versions of their games. Do you like World of Goo? Well, there is a Linux version. Check the websites of the companies that made your games to see if they do have a Linux version you can download or buy on the Internet. The number of game makers who are supporting Linux is growing. Distributions like Ubuntu, which are easy for beginners to use, is drawing a lot of attention. Its become one of the most popular Linux distributions on the planet, and that's made at lot of mainstream software makers stand up and take notice. The company Canonical from the UK, which is behind the Ubuntu Linux distribution, is also working with software makers and PC manufactures to improve software and hardware support for Linux.

This ends part one of my two part Linux Q & A for beginners. In part two we'll discuss things like Samba, EXT4, Ndiswrapper, xorg.conf, and more. After that, I may continue the series with a part three and a part four depending on the reaction I get. So, until then don't hesitate to send me an email with any of your questions. I'll try to answer them as best as I can, and don't forget to give those LiveCDs a try too. Until next time.

Nameste.

1 comment: