TFM:Linux

From ProgSoc Wiki

Jump to: navigation, search

Contents

Linux

Nicholas FitzRoy-Dale
Standing on the worthy shoulders of Anand Kumria
And Peter Meric[1]

What is Linux?

From the README

Linux is a Unix clone written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net.

At least, that's the executive summary, but only if you're a particularly boring executive. Linux is the fastest-growing operating system in the world, supports more types of hardware than you've had hot dinners, and is the OS of choice for research projects and, increasingly, business applications. Some of the world's finest young technical minds are devoting time to improving it, often when they should be working on their assignments instead.

Why do I care?

Linux appeals to people for different reasons. I got started using Linux because the available Microsoft OS of the day --- Windows 95 --- crashed all the time. Windows has been pretty stable since Windows 2000, but I'm still running Linux as my primary OS both at home and work[2]. Linux is incredibly configurable, which appeals to the tinkerer in me, it has a ridiculously large collection of software available to it, some of it very good, and it is well-documented - or at least, the popular bits of it are.

There are many other reasons to like it: some would say that the best part about Linux is that most Linux software comes complete with source code. Others would point out that it is a great way to learn about UNIX-like operating systems - probably the most entrenched and stable breed of OSes in the world - and might also note that Linux is becoming increasingly prevalent in business.

How do I...

Get hold of it?

Just about every way imaginable these days: FTP, HTTP, DVD, NFS, BitTorrent, carrier pigeon...

But first, what exactly is it? Technically, Linux is (only) a UNIX-like kernel[3]. The Linux kernel contains device drivers, and is also in charge of scheduling applications and enforcing protection boundaries. The applications themselves - all those nifty things like ls, more, etcetera are actually programs which makes use of the kernel. To get those, you need a Linux distribution.

A distribution is a collection of programs you will probably want (such as ls and friends) and others you might need (i.e. X) with a Linux kernel thrown in for good measure. Distributions also almost universally contain a "package manager" of some sort. This is a program which manages installation and removal of software in the system in a controlled way. Package management suites for Linux are among the best available for any OS.

There are literally hundreds of distributions out there, each with their own quirks. Some "beginner-friendly" ones you might like to try include Ubuntu and Fedora Linux.

While some specialised distributions may do everything differently, there are few major differences between the main, general-purpose distributions. All have their own installers -- which range in quality from mundane to excellent - all have their own system administration tools, and all have their own package management system. It's worth talking about package management systems for a while, because they're fun. The presence of a package manager means that software can be downloaded as a single file from the Internet, and installed using a single command. The best part is that software can then be uninstalled cleanly, or upgraded, from within the package manager. No trailing Registry entries, no weird .dlls hanging around in \windows\system, and no "The system may still be using d93fk2ls.dll. Would you like to delete it anyway?"

Dependency-based package managers, such as those used by Debian and Fedora (among other distributions, such as Gentoo, SuSE and Mandriva) go a step further: if a program relies on another package, it will not install until all the packages on which it depends are also installed.

Debian is particularly interesting, because, for a long time, its package manager did a lot more than any of the competition. Debian's package management suite, known as the Advanced Packaging Tool, or apt, maintains a list of all available packages, and packages may thus be downloaded, unpacked and installed without even having to find them first. The best part, though, is that apt is dependency-based, which means that if a package depends on other packages in order to work, the package manager will also download, unpack and install the dependencies.

You may also upgrade packages to the latest version using the same software. Upgrading every single software program on your system with two simple commands is a neat party trick, if you're into that type of party.

Since the release of Debian's trailblazing package manager, several other distributions have arrived which sport similarly luxurious suites.

Some Distributions to Try

Ubuntu (http://www.ubuntu.com). When the previous edition of TFM was published, Ubuntu didn't even exist, yet out of seemingly nowhere in 2004 came this insanely easy-to-use distribution. It almost immediately shot to the top of the popularity charts and has stayed there ever since. With Ubuntu, things -- for the most part -- "just work", yet all of the power of Linux is still available at your fingertips. A near perfect introduction to Linux from the Windows world, but once you start using it, you'll probably won't even bother switching to any other distribution, thus seemingly rendering the rest of this section moot. It's the distribution you'll love and Ubuntu will love you back. No wonder it's installed on almost all of ProgSoc's machines!

Debian (http://www.debian.org) is very popular among more experienced Linux users, because while not intuitive, its tools are very powerful. Debian, and Debian-based distributions, including Ubuntu, use apt, which is usually better at resolving package dependencies than rpm (see below).

Slackware (http://www.slackware.com) is a Linux distribution by Patrick Volkerding. It's arguably the first-ever Linux distribution, and is certainly the oldest actively-maintained Linux distribution. Many people like Slackware because it is very simple, but a lot of Slackware users have since switched to Debian, which has a similar ``community feel but superior system administration tools.

Fedora (http://www.fedoraproject.org) (previously known as Red Hat, prior to the 2003 split that created Fedora and Red Hat Enterprise) has a well-deserved reputation as a new Linux user's distribution - everything is as easy as possible. It's so polished that many people stick with it even after becoming experienced with Linux. Fedora was the first Linux distribution to attain "mainstream" popularity and is still very popular, second only to Ubuntu. Many other distributions have been based on Fedora, including SuSE and Mandriva, all of which utilise Fedora's home-grown package management system, rpm. Fedora is installed in the Linux labs in Building 10.

Gentoo (http://www.gentoo.org) is the distribution for those familiar with Free (or Open, or Net) BSD who are curious about Linux. Its "ports" system, portage, is openly based on BSD's, and is very slick, installing its packages by automatically downloading source code for the package and compiling them on the fly -- a plus for performance freaks.

Linux From Scratch (http://www.linuxfromscratch.org). Maybe Gentoo's not "hardcore" enough for you. Perhaps you wish to have highly-customised, fine-grained control over your computing experience to the level a pre-packaged distribution simply cannot provide[4]. Or perhaps you just wish to gain a better understanding of how a typical distribution is pieced together. If any of these apply, why not have a go at building your own distribution from scratch? It's fun, educational and -- thanks to a set of handy instructions provided -- not that terribly hard; just a tad time-consuming (give yourself a long weekend to install it). Several ProgSoc members have tried LFSing and enjoyed the experience. If you have never used Linux before, it is highly recommended that you familiarise yourself with an existing distribution before attempting to roll your own.

For a more detailed discussion of the many and varied distributions out there, visit http://www.distrowatch.com

Install it?

Each distribution has its own installation method that is entirely unlike any other distribution's installation method. The hardest part is often obtaining all the installation files you'll need so that they're accessible to the installer. Most distributions can do a "network install", which means you download the minimal amount necessary to get your network going, and then the installer goes online to download the rest. It may be possible to obtain a bootable CD image to burn, but some distributions have stopped offering these because of the huge load the 650MB downloads place on their servers.

Fortunately, no distribution will leave you in the dark. All have comprehensible install instructions - even the "tricky" distributions such as Debian and Gentoo could be installed by an absolute newbie, as long as that newbie was prepared to accept a little pain. Of course, using the distribution afterwards might then pose a problem...

With some distributions, you don't even have to install them to use them. By popping in a distribution's Live CD/Live DVD/Live USB/etc. into your computer, you can either experiment with the operating system to see if it is to your liking before committing to a more permanent installation, or you can use your Live CD to attempt to repair a broken installation and/or access and backup otherwise unaccessible files -- a real lifesaver and far more feature-complete than your standard Windows rescue disk. Popular "Live CD" distributions include Knoppix and Puppy Linux and even Ubuntu's installation CD is a Live CD.

Use it?

Your first challenge will probably be installing and setting up XFree86, the graphical environment that comes with all general-purpose Linux distributions[5]. This is a highly complicated process if it's done manually, and incredibly simple if your distribution does everything for you, but since it's highly distribution-specific I won't cover it here.[6]

Once you've got your network and X set up, you will probably want some software.

Some software

Games.

The first thing you should do is install xkobo (you may only have kobodeluxe) and play it. It isn't a very good game, but it's somewhat of a tradition.

Other games you might want to investigate are frozen-bubble, lbreakout2 (both clones of simple but addictive commercial games), one of the varieties of nethack (an awesome game, but not for everybody), tuxracer if you have a 3D graphics card (the NVidia drivers for Linux are particularly good, after a rocky start, but still proprietary to this day), freeciv (a rather full-featured game with its roots in the commercial game Civilisation 2000), gnuchess (plays a very good game of chess, not that I would know), quake2forge (ID software, as part of a fantastic tradition, has made Quake 2 open-source), tetrinet (tetris, but against other people), and crack-attack.

An ever increasing number of commercial, 3D games are also being made available for Linux, although -- even to this day -- most PC-based games are being developed solely for Windows, so -- if, for some silly reason, you have completely abandoned Windows and fully embraced Linux, yet you still wish to play its games -- your best bet is to either install the (free) Wine compatibility layer or Cedega (proprietary) in order to have a fighting chance of playing your game.

Editors.

There is a particularly long-running and unfunny flamewar between users of editors derived from vi and users of editors derived from emacs. I solved the problem by eschewing both editors, but you should at least attempt to learn Vi because it is so incredibly prevalent. Both Emacs and Vi come in several incarnations, both are incredibly full-featured, and both come with legions of raving zealot fans. There are three other text editors common to many Linux installations - joe, pico and its differently-licensed equivalent, nano. Emacs and Vi both have competent graphics modes, but you may also wish to try nedit and scite (or SciTE) if you're using X.

Window Managers.

One of the wonderful, or terribly annoying, features of the X Window System (depending on your point of view) is its concept of "Window Managers". Window managers control the placement of application windows on the screen, and are also responsible for giving them a border, often with widgets to close, resize and move the application window. Many window managers (often abbreviated: "WM") add other features, too -- multiple ``virtual desktops are common, and some, such as Window Maker (thankfully never abbreviated "WM"), Blackbox, Afterstep and Fluxbox, add an iconic program launching toolbar known as a dock or wharf. Popular window managers these days are the de-facto standard window managers for the Linux "desktop environments" -- kwm for KDE and Metacity for GNOME. Other favourites are Window Maker, Fluxbox and fvwm. Try a few. My personal favourite is Window Maker, but I don't use KDE or GNOME and am oldschool[7].


  1. With further updates by Tom Bozic.
  2. possibly because I'm a masochist.
  3. Though, increasingly, popular usage has blurred this distinction.
  4. Perhaps you are devoid of a thing called "a life". I know -- such cynical retorts are the refuge of those who have contributed little to society themselves....
  5. You can get entire Linux distributions, designed for making file servers and routers, that fit on a USB stick and include X -- Linux has come a long way.
  6. Phew!
  7. i.e., arrogant.
Personal tools