Join the largest DeFi ICO (new crypto coin offering) in 2021 »
scorpioncity
HOME · Welcome. This is my earlier site (~1997 to 2010); my new website is now here but some stuff remains on the scorpioncity site. - David Joffe

This tutorial is Copyright © David Joffe 1998-2020. It's a work in progress. You may make copies of this document for non-commercial purposes, and so long as the content is unchanged and I'm credited. If you want to use it for commercial purposes, let me know. Note this was originally written in 1990s; so a few parts need updating - I update occasionally when I have time.

News 2020: Added 'Linux commands I use often' quick-reference.

Linux Tutorial

"Learning Linux isn't easy, but its power and customizability make it worth the effort" - Linus Torvalds


Introduction

1.1 What is Linux?

Linux is a powerful multi-tasking multi-user Operating System, based on Unix, that comes with a huge collection of free software. This includes a free Web Server, free c/c++ development tools, a free implementation of the X Window System, and much more. It runs on a wide range of hardware, including intel (3456)86, DEC Alpha, Sun Sparc, M68000 (Atari,Amiga), MIPS and PowerPC. It is estimated that between 10 and 20 million people worldwide are using Linux.

The term 'Linux' itself generally refers to one of two things, depending on the context. Either it refers to just the Linux kernel itself, originally developed by Linus Torvalds (and named after him), or it is used to refer to an entire system running Linux as it's kernel - although technically most programs running on the system aren't 'Linux' programs as such, as most will also compile and run on other Unix systems (and sometimes on Windows.)

Editor's Note Jul 2020: A significant functional subset of Linux is now also available running natively on modern Windows 10 systems, in the form of the Windows Subsystem for Linux.

1.2 What can you do with Linux?

Here is a brief list of some of the uses of linux:

Linux has been growing fairly steadily since it's creation in 1991, and shows no signs of slowing down.

1.3 What does Linux cost?

Linux is free. It costs about the price of printing and distributing a CD, but since it's free you may lend someone else's Linux CD to install it, or use one CD to install Linux onto multiple machines. You can also download it off the Internet, or install it off a network over an NFS connection. Factors like this make it difficult to estimate the number of users of Linux.

1.4 How can it be free? Surely if it's free it must be junk?

Not really. For a variety of reasons, OpenSource software is often of a very high standard. There are pros and cons though to both proprietary and open models of software development. One advantage of the open approach is that there are a great many more programmers who can spot bugs in the code. One of the disadvantages is that projects sometimes stagnate - if the creator of the project no longer has time to maintain a project, or moves on to other things, then sometimes a project can remain relatively "stagnant" for quite a long time before somebody else takes over, as happened with the GIMP. Of course, commercial software often also stagnates, but normally for completely different reasons (e.g. not enough competition.) An advantage of the open approach, for end users, is that it is far far harder for the software to have hidden "trojans" - a lot of commercial software has in recent years been found to have hidden functionality that uploads personal information about its users to the company, for example. Another user disadvantage of the proprietary approach is that vendors often keep standards closed, so that instead of retaining users through the development of quality products, they retain users through product lock-in. A good example is the Microsoft Word format - since there are no viable commercial alternatives, users are often forced into an endless upgrade cycle, shelling out money for new versions simply to be able to continue to work with and exchange documents they already have.

Very much more can be written on this subject. In fact, very much more *has* been written on the subject, so I'm going to stop here and give a link to a long rather well-known document on this topic titled "The Cathedral and the Bazaar" by OpenSource advocate Eric Raymond.

1.5 History of Linux

Linux was originally created as a college project by a student names Linus Torvalds at Helsinki University in Finland. He began work on Linux in July 1991, and opened the source for collaborative development of the kernel over the Internet. Since that time, Linux has grown at a dizzying pace, being used all over the world by (estimated to be) millions of people, and being developed by thousands of people spread across the globe. The kernel itself (the core of the system) is hacked on by about 1 or 2 hundred people actively, and probably over a thousand have actually made contributions to it.

1.6 Free Software

GNU, Copyleft, OpenSource, Free Software Foundation, Richard Stallman. (Mention other free unixes, such as FreeBSD.)

1.7 Linux "Distributions"

Different "flavours" blah blah blah.

1.8 Compared to Microsoft Windows, for the end-user?

Although each new version of Linux becomes far easier to install and use, Linux is still not as easy to use as Windows for the computer novice. However, with a bit of knowledge, you can get more out of Linux than you generally can with Windows.

1.10 Why don't you hear about Linux? There must be something wrong with it. One mostly hears about Microsoft Windows.

Linux is not created/backed by a multi-billion dollar corporation that can afford to spend many millions on heaps and heaps of advertising/brainwashing campaigns, adverts designed to make you feel good etc.

1.11 What other options are there?

There are literally dozens of systems around. Here are some of the major options:

There is another "free Unix" called BSD. There are three varieties, NetBSD, OpenBSD and FreeBSD. [FIXME: get URL] FreeBSD is used on some very large web servers, for example www.yahoo.com. BSD was also used to help create special effects for the movie 'The Matrix'.

Another option for the desktop is BeOS, the multimedia OS. [BeOS is now defunct, but is semi-resurrected in the form of Haiku OS »]

And, of course, theres always the Mac.

1.12 Can Linux run games?

Yes, as long as the producers of games support Linux. Many new games, such as 'Civilization: Call to Power' and Quake3 run on Linux. The percentage of new games that will run on Linux is likely to increase quite a bit in the next few years.

1.13 Can Linux co-exist with Windows? Can I run my DOS/Windows applications on Linux?

Linux can happily co-exist with Windows on a system, but both cannot run at the same time. You will be able to see and use your Windows disk partitions from Linux, but not vice-versa - the only support I know of for reading a Linux filesystem (in this case ext2) under Windows is a read-only utility called fsdext2. [Update 2020: There are several other options available now for viewing ext2 filesystems on Windows]

There is some (limitted) support for running DOS/Windows applications within Linux. For DOS programs, there is a DOS emulator which works fairly well (and can apparently even run Windows 3.1.) There is also a large project that has been steadily developing for many years now called WINE (Windows Emulator, or Wine Is Not an Emulator, any of the two). This project has resulted to date in moderate success in running a number of Windows applications. Other similar programs to wine include Sun's WABI, and Willows 'twin'.

1.14 Can I run Linux applications on Windows?

Hmm .. I'm not sure what all the options are here. There are X clients that allow you to run your applications on a Unix server, but have all graphical input/output on a Windows client running an X client. Also MS claims Windows NT is Posix compliant .. that may mean that most Posix Unix apps *should* compile and run on NT, but that probably won't make X apps run. Unless an X client is running? Not sure about that.

[Update 2020] Windows 10 contains Microsoft's "Windows Subsystem for Linux" which can compile and run text-based applications, and you can get it working for some X applications. There are also layers like Cygwin that may work for your situation.

1.15 It's UNIX, therefore it's confusing command-line stuff.

Unix and Linux have very powerful command-line interfaces - mastering the command-line can get you very far, and is extremely useful for tasks such as low-bandwidth remote administration, automating tasks with shell scripts etc.

However, recent new GUI projects such as KDE and GNOME give Linux a powerful windowed user interface. Although the X Window System itself has been around a while now, these new GUI's go very far towards creating intuitive, standardized interfaces for applications. Combined with the network interface that comes along with the X Window System, this makes Linux powerful in both command line and GUI.

Software for Linux

There has always been quite a lot of software available for Linux. However, the past few years has seen an explosion in the amount of software available. You can now get applications for Linux ranging from Wordperfect to SAP to GIMP to Quake3 to huge databases, with more companies jumping on the bandwagon daily.

A categorical list of Unix/Linux software is available at http://freshmeat.net/, along with software announcements.

System requirements

Linux runs on PC's (from a 386 and upwards) as well as various other system architectures, such as ARM, DEC Alpha, Sun Sparc, M68000, MIPS and PowerPC.

Why does Linux perform better then Windows?

[David 2020 context note: This paragraph was relevant in the 1990s, but modern Windows systems are not as bad anymore, and these days 64-bit is also a norm.] One reason is that Linux is entirely 32-bit (on an x86 platform), whereas Windows95/98 spends a good deal of it's time in 16-bit code. Swopping the processor between 32-bit and 16-bit modes is relatively slow, so the more such swops Windoze makes, the slower it gets. This also makes Linux more stable than Windows9X.

There are probably a number of other reasons, such as methods of multitasking, memory management etc.

What's wrong with Linux?

There are a few areas in which Linux is currently weak.

One particular area is user-friendliness. Despite all the recent progress made, Linux still does not have the level of standardization for software interfaces (e.g. standard keyboard shortcuts) that Windows has.

However, Linux is relatively new, and Linux is growing fast and furiously. There are thousands of people out there working to make Linux better.

Because there are a wide variety of distros, different distros also have slightly different ways of doing things, so if you're following instructions on how to do something or how to troubleshoot an issue, the instructions often don't work precisely or need to be adapted depending on your distro, or version etc.

There have also been some what may be viewed by some as design regressions, e.g. 'systemd'.

References

Discover Linux - Steve Qualline


Using Linux: some basics

Contents of this section:


The commandline vs the X Window System [NOVICE]

For the end-user, there are generally two main ways of interacting with a Linux (or Unix) system - the commandline console, and X (the X Window System). The commandline is a text-mode system that gives you a prompt where you can type in commands (like a DOS prompt.) The X Window System (combined with a "window manager", more later) provide a Graphical User Interface (GUI, pronounced 'gooey') for programs; this is similar to Microsoft Windows, or the Apple Macintosh interface. For people with an aversion to command-line interfaces (why?), Linux can be configured quite easily to start up in X.

The commandline and 'shells' [NOVICE]

You may think that the commandline seems like a step backwards in computing in these "modern GUI days"; but taking a little bit of time (possibly less than an hour) to learn the basics of getting around on the commandline is very likely to take even the novice user a very long way in learning to use the system, even if he/she very soon ends up spending most of his/her time in X.

Login names, passwords, 'root', home directories [EVERYONE/ADMIN]

Filesystems, case-sensitivity, file permission bits etc [EVERYONE]

Getting around on the commandline [NOVICE]

Some more commands [NOVICE]

Finding help on Linux [EVERYONE]

Linux comes with truckloads of documentation. Much of the documentation is far more detailed and more technical than the 'click on the File menu with the left mouse button' type help you get in Windows, which almost seems designed to try to keep users ignorant about their system.

The tricky part about Linux is *finding* the documentation you need. The first command you'll need to know is man.

Accessing DOS disks [EVERYONE]

[Editors note 2020, this paragraph should be updated to discuss FAT32, NTFS support etc.]

Process management: [EVERYONE]

Linux is multitasking; that is, it can run many programs concurrently. Each program that runs exists as a "process", and each process has associated with it a unique ID number (called the PID, or 'process ID') that can be used to manipulate processes. Processes can start other processes; then the started process will be the 'child process' of its 'parent process'. Here are a few commands to help you manage your processes.

More advanced (but not difficult) commandline stuff [INTERMEDIATE]

Some slightly more advanced commands [INTERMEDIATE(?)]

Editing text files [EVERYONE]

There is a large variety of text editors available for Linux. The most commonly used ones tend to be the most obscure for some reason :)

These days, there are a wide variety of user-friendly graphical text editors in Linux.

Sometimes, you need to edit text files when in a terminal - below are some of the major options for doing so.

If you try run one of these and it's not installed, you should usually be able to install it using the package manager of your distro.

In the '90s I mainly used emacs, joe and vi/vim, but these days I mainly use nano.

Terminal-based Text Editors

Scripting [INTERMEDIATE - ADVANCED]

Linux source code, re-compiling the kernel etc. [ADVANCED]

Linux configuration [INTERMEDIATE - ADVANCED]

X Window System quickstart info [EVERYONE]

My X section is a tad sparse at the moment ...

X always starts in 8-bit color mode (256 colors). How to change that:

Booting up straight into the X Window System

Setting up an X server for clients over a network.

Changing X configuration


Linux Networking

Network devices [ANYONE INTERESTED]

Dial-up networking [ANYONE INTERESTED]

NFS [ANYONE INTERESTED]

Samba [ANYONE INTERESTED]


Eric Raymond's The Cathedral and the Bazaar. A now-famous paper comparing "open-source" software development to commercial software development.

Some excellent sources of linux info:

Linux Software resources:

Other Linux resources:


Linux Tips

KDE:

emacs:

Hardware etc:


Categorical Software Listing

This is a bit of a 'quick-reference' - for a more complete listing see http://freshmeat.net/.

[CL] = commandline, [X] = X Window System, [G] = non-X graphical, [D] = daemon


Linux Router Project