If you have just read my last article and decided that Windows may no longer be your choice of operating systems, your probably asking what are my options. Maybe you have just been looking at upgrading your current system and checked out the new Windows 8 and walked away saying "not a chance". If you were like me many years ago, you might have said "last time I rebuild the OS - there has to be some alternative". So you have decided Windows is no longer an option, that means only Apple Mac, or is there something else. Yes there are other options and linux is just one of them.
So whatever your reason you have for wanting to stop using Windows, your first step to finding an option is deciding what it is your looking for from your OS of choice. Do you need only word processing or email and web tools. Are you doing embedded system work, desiging hardware, or doing programming for a specific task. It is understanding your needs that helps when selecting what type of OS and tool sets you need to meet your requirements.
Let me be real clear, that if your tasks are all only available on Windows, then sorry you have no options. There are still many services and programs that only can be run on Windows and for those who are foced into not having a choice, your only option is dual booting, emulation, or more than one machine. The last article used a linux machine for collecting data and serving up web pages. Those tasks are great uses for linux machines, since you normally will set them up and walk away until you need to make changes to what they serve up. In fact even the updating can be made automatic such that you seldom log in. However I am getting ahead of myself, as we need to show how linux is one of many options, and how you might select it.
For many users, all they know about is a Windows machine even though they use linux or other operating systems everyday. For Apple users of iphone, ipod, or ipad, they use ios - apples private operating system. Android cell phone users are using linux as the base OS, with java applications making up the android environment that most people think is the actual OS on their phone. Most large web sites are apache running on linux or unix based systems. There are versions of BSD, SUNOS, and several other systems that run variations of UNIX OS that contain tools and utilites common to all unix like systems. The point here is that there are actually many options available for free or small costs. Many of the options are for certain hardware like HP Unix which only runs on HP Servers that are not PC compatible.
Some of you may wonder what I meant by PC compatible. Back in 1982, IBM released the fist "PC" system based on the Intel CPU 8088 - a sixteen bit version of the old 8080 cpu that was used for many years in most of the early or pre-PC computers. That early PC was accepted by all major companies as their computer of choice and IBM made all the hardware specifications available for anyone to copy. Those design specs became the basis for all later PC-compatible machines and spawned years of newer hardware designs that enhanced the original specifications but still allowed for backward compatibility with software that ran on the earlier systems. As you might know, Microsoft supplied the DOS or "disk operating system" for those early machines and over years upgraded it to become your current day Windows operating system. All those years that PC machines were improving, there were many companies who created their own hardware systems that were not PC-compatible but were designed for large corporate environements to handle thousands of users and processes running on one machine. Many of those systems ran a version of AT&T Unix or something similar. Those systems were not compatible in any way with PC-compatible systems.
I could write tons of stuff about Unix system history, as well as PC history, but what you need to know, is that over the years, many standards were developed, not only for software but for hardware as well. In this the twenty first century, with those standards in place, it is possible to have many tools and hardware systems that are compatible with each other. In those early years, you could not talk to or from PC compatible systems and main frames. Now it is possible and done daily using many of the standards. This also made it possible to write programs that worked on PC-compatible systems, but worked just like the large coporate Unix systems. One of those compatible (both PC and Unix) or standards using operating systems in linux.
Where did linux come from and why is it so popular. Linux happened due to copyright issues with commerical Unix style operating systems. A student who had used minix but didn't like the copyright restrictions, started by himself and then got his internet buddies to write the linux kernel code that would use other free unix tools to make a complete operating system. That student was Linus Torvold and he is still controlling the linux kernel which forms the basis and picks up the name of the whole operating system. In truth it should not be linux but linux and GNU/OSF tools, but too much time has passed and "linux" is now considered a full operating system and not just a kernel.
The kernel is the heart of the operating system. It is the part that talks to and controls the hardware such that programs can run and perform useful tasks. The design of the kernel determines how many users or programs can actually use the system at one time. The kernel talks to all the different types of hardware that may be in your system. I might explain here that linux is a mutlitasking and multiuser system, compared to Windows which is only a multitasking system of sorts. To be a true multitasking and multiuser system, the users and programs must be totally isolated from each other. Unfortunately Windows programs and users are not truely isolated or protected and as such it can not, no matter how much Microsoft would like you to think otherwise, be called a multiuser system.
This difference has messed up many a programmer who though you could build more than one program at a time on windows - you can't. An example I used in another article is at how Windows is not multitasking is when an error occurs. In Windows it will put up what is called a "popup box" and at that point all other running tasks will stop until someone clicks on the popup box. True multitasking and multiuser systems will not allow any program to just stop other programs, as they are isolated from each other. One program's memory space is isolated from anothers.
It might help as well to understand that Windows is not modular by design, where as linux and all Unix systems are very modular. The most common aspect of Windows is the desktop or window manager. Windows is for the most part a kernel and the desktop engine combined. While in Unix systems and linux, your desktop is simply another program being run within the kernel space. Most unix tools are not related to the desktop, but simply little programs that together provide a whole system of utilties. Since the desktop or window manager is not part of the kernel, you can have many different types of desktops or none at all. Often under linux, you might have ten or twenty utilties that can achieve the same task, it is just each tool may do the task in a different way based on your own needs. The biggest problem for new users of linux is learning that you have options and are not locked into only one way to do something. This is also a problem in that new users have no idea which option or tool to use for any given task.
Hoepfully you are now fully confused, but see that with linux you have choices and are not locked into one soltuion. What we need to do next is to show how this set of choices and options can be much better for you and allow considerable more successful tasks to happen than is possible under Windows.
In the Windows world you have no real choices. It must work in the latest version of Windows or you can't use it. To some extent you need to purchase every tool you need that is not provided by Windows itself. Should the Windows tools not work very well, too bad, that is your only choice. If someone creates a better tool, look out for Microsoft will buy that company and trash the tool so you can't have anything they don't want you to have. Let me say at this point that my favorite complaint is that the programmers of Windows believe that they know more than you do about how to use the system. They know so much better than you that even as an administrator, they will not let you do really important things. This is not the case with Unix or Linux. If you want to trash the whole system, as administartor you can do that any time you want. I can't tell you how many times I have found myself with a problem in which in Windows the only soltuion is to rebuild the entire OS because they will not let me fix the problem. In linux I can always fix the problem some way because as administrator it is assumed, rightly or wrongly, you know what needs to be done and should not be prevented from doing that. So keep that in mind, that in linux, there is no protection from you doing stupid things like there is in windows, but learn too that most problems can be fixed without a reboot or rebuild of the system.
It is now time to quit complaining and harping about all the problems I have had to deal with over the years and start getting you up to speed such that you can in fact use and install a version of linux that fits your personal needs. First off we need to decide on which version of linux most closely matches your needs. There are many "distributions" of linux, of which each is composed of a selected kernel version and some number of utilties that are compatbile with the release of the kernel. Various individuals and groups have formed to create their own distribution to fill a need that they feel is not handled by any of the other current distributions. This provides an unreasonable list of distributions for the novice user. I might suggest you try checking out this site http://distrowatch.com . It has tools for searching and sorting through all the current distros and thus might help you narrow down the list to those that fit your needs.
I did a search on distrowatch for i386, linux, and old computers. It returned 12 hits, about half of which I know are just variations of the same distro. The most popular of the hits are "puppy" and "damn small linux"(DSL). These releases are designed for very small systems with little memory or disk space. DSL is only 50MB in size, yet has a usable desktop. "puppy" is small but has tools to help build your own distro and I have used it on very old laptops with great success. The search will show a version of Ubuntu called "Lubuntu" which has the LXDE desktop, one of the new batches of very small footprint desktops. Ubuntu is based on Debian and developed using the testing branch of debian which is the next release. I use Debian myself and like their support and stability. Ubuntu has objectives that might agree with your usage or not, but it and Mint have been sharing the usage table as the number one used distro for some time now.
For those into video or music, either watching, listening, or creating, there are distros for just that. Scientific research, ones there as well. Using hardware with ARM CPU's, got you covered. Want releases that are very stable and simple, try those based on "slackware", which is the oldest and still updating distribution. Slackware and it's clones are great for older and newer systems where simplicity and stability are the main focus. For those wanting to be on the leading edge and get every new update possible, there is ARCH and it's clones. ARCH has a rolling update process, and as such you can have the latest version of everthing possible, about every two weeks. For those wanting to get down and dirty there is "gentoo" and it's clones which build from source code the entire system, which allows for maximum performance, as every item is custom built for your specific hardware setup.
I like to recommend for new users one of the more popular distributions that has a full and complete repository for you to upgrade and select programs from. Not all the smaller distros have large or complete repositories to choose from. You can also install clones of main line distros, since access to the source of the clone, may include everything you might ever need. Linux Mint and Ubuntu are based on the Debian testing branch, and as such you can often use the debian repository instead of their own repo for adding programs. It is also possible to use an install disk from one of the smaller distros, such as the "antiX base" install, and do a full debian upgrade to the latest version, once it is working on your current hardware.
Why might you want to use something like "antiX" as an install distro. Suppose your hardware doesn't have a DVD reader, which for most of the main newer versions of linux is required. The typical DVD size of main line distros is 1.8GB to as much as 3.8GB in size. You can do installs using network CDRoms that load a simple system and then downloads from the network interface all the extra packages needed. However that process can take 6 to 10hours on a slow network connection. Having the ability to install a solid base system from one CDRom and also answer the question - "is my hardware compatible with linux", can save tons of wasted time, when it fails due to some unknown reason. Loading a 300MB base system with a special kernel setup for older systems, is a safer way to go, and will more likely work than playing games with special install programs. You need to take the simplest approach, after all it is the final product you are after, and not learning tons of new tools to get you there.
Over the years, I have done several hundred linux installs. Most are pretty straight forward - insert disk, partition hard drive, load packages, and reboot into a newly installed version of linux. I must admit to having my share of problems, where something goes wrong. Just the other day I was doing a fresh install of debian onto an old MAC PowerPC that kept failing unitl I realized that the yaboot couldn't handle ext4 file format. Selecting ext3 during the partitioning solved the problem. It took me some hunting on the web to find the fact about only using ext3. Standard searches for install problems will usually get you more help than you might want, but keep looking as someone certainly has had the same problem and fixed it.
Let me try and cover some things I have learned over the years that might make your first install easier. As I covered above, pick a distribution based on one of the main sets of distros, "RedHat", "Debian", "SuSE", and "Slackware', or their clones. I used SuSE for many years and really like their "yast" setup tool, as it is pretty comprehensive and makes setting up and adding programs very easy. I moved to Debian, when SuSE got too leading edge for my needs, and I wanted a more stable installation. I learned with debian as well that their install process is pretty clean and rarely has problems. So let me continue using a typicial debian install.
The first issue you will encounter is booting the CDRom or DVD image. Your system may or may not by default try to boot any CD/DVD placed in the drive during power up or reset. If it doesn't, you will need to alter settings in the BIOS setup utility that is displayed at power up. This can be a real problem, as many are by default set to boot so fast that trying to hit the F2 or DEL key just doesn't work. Try resetting the BIOS setting on desktops hardware by moving a jumper that will clear the settings and thus you will be prompted on the next boot to set or use default settings. Once in the settings pages, make sure the boot order is CD/DVD device over the hard drive, then save those settings and reboot. A few times I have resorted to installing an unformatted hard drive to get the boot process to fail and thus get access to BIOS settings.
For systems without internal CD/DVD drives, USB drives can be used. Some older systems will not boot USB devices, yet I have been able to get USB CDRomn drives to boot, when the BIOS sees the USB drive as a CDRom. Just treat those cases like normal drives and boot the install medium. There are tools for booting the system and then running programs that load the linux medium, try searching the web for that help if you need it. Most people will however be able to find a CDRom to boot and start the install - remember it doesn't have to be your final distro, but one based on it.
So you now have your system booting the CD/DVD of your distro, what do you get. It really is hard to talk about what you get, as it can vary greatly. Typically you will be given a menu of selections to choose what you want to do next. Keep in mind that you can also load "live" distros that will boot directly into a running linux system without formatting any hard drive. A few of the live distros will drop you into a menu first to see if you want to install or try the live distro. I suggest doing the live first, as it will give you a chance to "test drive" the release to see if it works or suits your skill level. Often the live release will have a desktop icon to click on to install to your hard drive.
Many of the releases or distros will give you some options with their first menu choices, the most common of which is selecting the language and keyboard layout your using. Some delay that choice and ask if you want to boot the hard drive or run a live release for system repair work, with the install being a third option. Some of the debian first disks that I use have the option of selecting the type of desktop I want before it starts the install. I find the choices pretty clear and at worse case, a reset maybe needed if you find your selection was wrong. Please note that nothing has happened to be concerned about until you actually start the final stages of the install, which most will tell you that you will be making permanent changes - you can always reset at that point and start again if needed.
In general you will click on the install process and answer numerous questions that range from the keyboard and language selection to the root password and new user name and password. You may get options for desktop, list of features desired, and even network settings for those doing on-line updates as part of the install. Most have help and back buttons to aid in getting through the setup process. Until you have done a few installs, just take your time and answer the questions as best as you can or just hit the return key, as most often the default will be what you want anyway.
At some point you hit the hard drive setup option and this is what causes the most problem. If your drive is fresh and your only going to run linux, you can generally let them handle the drive setup by selecting one of their choices. Some of the better distros will even see that windows is loaded and ask if you want to use the free space on the disk. Normally you are given a choice between some type of automatic partitioning and formatting and an expert or advanced option. When selecting one of their options, I usually select the one partition option for holding all the data.
What is the best partitioning option - depends. If you need to do more than one format or some special setup as mentioned with yaboot, the manual or expert partitioning is best. I have ran into space problems when trying to build kernels with 20 GB root spaces. If you never plan on doing any kernel building, size here may not be a concern. I like to select one partition for root, one swap space, and for dual booting a common partition to hold windows data, as in "D" drive. All the tools generally are well documented enough to guide you through the steps needed and move you to the next set of steps.
Based on the distro, the typical steps that follow partitioning, remind or ask you to acknowledge that the hard drive will be setup as selected and do you want to continue. If you think you did something wrong, now is the time to backout and start over. Otherwise saying yes now, means it will distroy data and create the new environment for the distro. In some cases you need only to sit back and watch it load files, while others will ask for more selections before loading files. Generally it is watch the action and see some help screens float by until it is all loaded. This can be anywhere from a few mintues to several hours if your loading packages over a slow network.
After everything is loaded, root password is set, a new user is created, and most housekeeping is done, it should re-boot where you can do a fresh login using the new user account. A few distros will re-boot, but continue to load packages and setup options before giving you a login prompt. If you selected a desktop install, your login will be using the desktop gui format. If you selected server option (no desktop) or the desktop setup had problems you will see a command line login prompt. Keep in mind that a normal linux terminal can be had by doing a simple ctl-alt-f2 to f4. So if the GUI is messed up, just do ctl-alt-f2 and login as root to fix.
What do you do when it doesn't work? This has happened to me, but lately it is pretty rare to have an install fail. For most cases you login using the ctl-atl-f2 option as root, look at logs, kill programs such as the x-server, run configuration setup to correct the problem noted in the logs, and restart. Sometimes the issue is simply some program missing and thus you might need to do an update of the install to correct the problem. In the case with the yaboot failing, I searched the web and found I needed to re-install with a ext3 partition as my only option. There are a few video cards that cause problems and black-listing them helps clear that issue up. The bottom line however is some problems will require assistance or greater skills than the first time installer may have. The web is your friend.
There are a few typical problems that need to be mentioned. The first has to do with dual booting. Windows must be installed first before adding linux. You can not load Windows later and beware that a few versions of Windows ( mostly older ones) will trash a linux partition if found when loading. Be sure to back up the Windows partiton before starting incase you make a wrong selection. You can shrink the Windows partion size using programs on live linux disks like gparted. gparted will allow for re-sizing and partitioning of your hard drive and thus you can select using pre-formatted partitions when loading the distro. Before shrinking a Windows partition I recommend that you defrag the partition and make sure all bad stuff is fixed. I often discover hidden problems this way, that lead to re-install of Windows from scratch before loading linux.
Another typical problem can be the boot loader. Often you will make a wrong selection when loading the boot loader - select MBR or master boot region of the main hard drive. Sometimes this doesn't get formatted as the boot partition or active partition and the BIOS will not load the MBR program. Basically what happens after re-boot is a "can't find boot" message and you have nothing to do. A few times I have re-installed the the distro, but most times I just re-run the install disk, but select a "boot partition" option. Worse case is needing to boot a live distro and running the partitioning program to set the boot flag or make the partiton the active one and reboot. This is a common problem and plenty of help is out there for ways to fix it.
The last typical problem is a bad selection of the distro. This is where you choose to use a 64 bit version on a 32 bit system. Maybe it is a very old machine that is no longer supported or has some odd hardware and just doesn't want to work. I have had these issues and for most cases you need to find another distro depending on the error messages printed during boot up. One problem I have had recently has to do with the new "systemd" startup process. The old startup was serial - that means load one driver or softare package then the next. The new systemd is parallel and as such expects all drivers to load together without issues. What can happen is one failed due to another driver not being loaded first. The answer is editing the systemd config setting to select serial mode and problem fixed. A common issue on older machines and small arm devices.
If all went well with the install, and it should with most of the new distros on recent hardware, you will be logged into a running linux system. At this point you need to do a few tests by selectng some tools or programs to run to see what happens. You can as well select a terminal or command line program to enter commands to check on the system, much the same if you did not load a desktop and only have a command line to use. Next step is to use a GUI or command line tool to check if you have the latest version of everything for your release.
For the desktop user, you should have some tool in the system menu that pertains to packages or system upgrades. One tool is synaptic on debian based systems. You will need to know the repository location or URL, however most installs will put some default location for you, and you will only need to change it if you have network problems. A few "repos" are platform specific and thus you might need to find one that has your specific hardware support. Typically just edit the repo location that you found on the distro support pages into the drop down menu item for GUI tools or edit the configuration file for command line based tools and your good to go. You will need to do an "update" which loads all the current data from the repo that it will then compare to your current installed versions in order to provide you with a list of upgrades possible. You can also search the lists and see what packages you don't have and select to add those as well. There are plenty of "updating" tools for the distros, and as such you will need to find docs or support information for your selected distro to know how and from where to get updates, if the defaults don't work.
Once you make your selection, you would click on the go button, and the tool will download and install all the marked items. This can take a few minutes to several hours depending on speed and size of packages selected. You can do upgrades to other distros this way as well. Say you used the antiX base install to setup your linux. From the synaptic GUI tool, make sure your URL is the debian repo and then simply upgrade to the latest debian full release. You can as well select say the linux Mint repos and upgrade to the latest Mint release. It just depends on which "base" distribution your install was based on, and selecting other repositories based on the same base. You can not however convert a RedHat distro to Debian, as they are not based on similar structures. Again, you can find help on the web for what can and can not be done.
When using debian, few packages will not be in the repos. However you may need to load some programs that are not in the repo or a version that has some features not currently supported by the debian release. You can download "deb" package for your release and use the "dpkg" command to load them. I find that many sites providing the packages, will usually have the exact commands needed listed in the how-to section. Keep this in mind if your not using debian, the commands will be different, as will the steps needed.
You can as well load source code and compile a program for your system. Distros like gentoo build the entire system by doing just that. The typcial compile goes something like this, download the source tar file, un-tar the file into a directory tree, CD into the tree, invoke "./.configure" from a command line, followed with "make", and then "sudo make install". Most often these steps are covered in the "README" file that you find in the root of the directory. If all goes as normal, it will compile the program and load it appropriately for use.
There are update tools for the command line and when not using the desktop those are what you will use. For debian you use "apt-get" and see what commands to use by invoking "man apt-get". "man" is the built-in document reader if you will, and most commands will have an associated "man" page to guide you on how to use the command and what options are available. Get to learn and love man, it is your friend. You can as well find most man pages for linux commands available on the web and they should be near the top of searches if you do "linux debian man ls" for instance.
If your using desktop GUI tools for everything, you should have little need for using command line tools. However, command line tools are very powerful and can often do multiple tasks faster and better than the GUI tools. I do remote support on several servers and only use command line tools, even though you could do it with a GUI. The problem is speed of the network. GUI tools can take up to a minute to change the display when moving the mouse while on a slow network. Command line operation can still be slow, but there are lots of "enhancements" within the shell tools to make it go faster. While logged in remotely, hitting the up arrow on the keyboard will generally get you the last command entered, and thus with one or two key stroke, you can rerun the same command. It helps to remember that Unix systems were always ran over slow networks for years before the GUI and thus there are plenty of "enhancements" to make life easier. Unix/Linux gurus are a lazy lots of people and thus have written plenty of tools over the years to limit what they need to do on a regular basis. Learn to use the tools.
We need to talk about editors and why so many people will tell you to learn "vi" or it's more current version "vim". As I said above, Unix has been around for a very long time and thus lots of tools have been created to keep those systems going. The orginal text editor was "ed" and wrapped around that was "vi". I have yet to log into a Unix or Linux system and not find "vi" installed. Thus by knowing and using vi for all my editing chores, I can log into any system and edit files quickly and effortlessly. Once you know the vi commands, you can even use it to edit your command line entries, so that you need to do even less typing when logged in remotely. Most linux systems will have other editors, but which ones are the choice of those putting the distribution together. But you can be sure that "vi" will always be there. So consider learning vi if you expect to do much command line work on different systems.
The lunix kernel source code is maintained in what is called a source code repository. There are GUI tools for working with "git", the kernel repo tool, but it is faster and easier to handle using the command line. If you do any major source code work, you will need to learn "git" or it's cousin "svn". These tools allow you to get access over the net to the most current versions of the code base and even get daily updates of additions and changes. This can be very helpful in finding some recent changes or additions that might allow you to use some brand new pice of hardware. The point here is that these tools are designed to be used from the command line and thus work best when done so. So do try and learn a few command line tools and some shell scripting once your at home on the GUI desktop.
A few simple commands to look up and learn are:
Over the plus 20 years of using Unix based systems, I have seen my share of rants and raves from everything like Unix is dead to it becoming the next corporate desktop. Last night I did a Java update where it claims to be on 3 billion devices, and I think you can say the same for linux. So is linux the next corporate desktop, who knows, but if your seeking a cost advantage over competitors, linux is your only choice. It certainly is the choice of most web servers and for me has provided many years of stable, problem free usage.
Don't get me wrong, there have been lumps and bumps along the learning curve to happiness with linux, just like any system. The web however has become a treasure trove of information and help documents that will almost always have your answer, how-to guide, or solution just a few clicks away. I do my searchs something like this "linux debian apt-get guide" and will get back over a million results with those from the debian documentation project on top.
My favorite magazine is "Linux Format" from England, which comes with a DVD of recent releases of linux distros and tools. For those who have less than ideal network connects, the DVD can be your best way of trying new linux releases. It normally ships with virtualbox, which when loaded can provide a testing platform for trying linux distros without having to format your hard drive. The best part is often the overlooked documents section where they have articles, debian administrators manual, and how-to guides that will answer your questions. They seem to have a no-nonsense approach to explaining things which I like better than the other US based high gloss and hip linux magazines. I seem to get more facts and helpful data fron Linux Format that any of the others, so give it a try.
Keep in mind it will take you a while to become proficient with linux, after all these are mostly new steps to get to the same old tasks you did elsewhere. But they really are just different ways of doing the same things. It is somewhat like buying a new car, all the old functions are there, just with bright new controls and knobs. Enjoy.