a picture used to navigate on the page redball magentaball blueball cyanball greenball yellowball clearball



Creative Commons Licenced

By Share Alike

Linux

' In a world without walls or fences, who needs windows or gates? '
' Computers are like air conditioners: they stop working when you open windows. '
' Toto, I've got a feeling we're not in Kansas anymore! '


My page is intended to contain some useful tips on using and migrating to Linux, especially for people with MS Windows background. All around the page I'll mention many links I found useful while I was learning basic Linux stuff (still learning the more complicated). I have tried my best to make the page itself as legible as possible and I've tried to avoid geek jargon. Once you need deeper information, the links come in handy.

My ultimate message is that using and installing Linux is actually easy, fun and inspiring. In my experience, Linux works much better than other operating systems I've tried and the free software philosophy behind it is far more sustainable. In these pages I'll explain my ideas and actual experiences, and make an effort to give my arguments for preferring Linux as clearly as possible. The purpose of this page would be achieved if it gave pleasure to one person who read it and lost some of the prejudices, if there were any, towards free and open source software. (Yes, I was paraphrasing The Tractatus, couldn't resist).

To very quickly sum up my reasons for preferring Linux, some 'pros' are:

Some 'cons' include:

If you got interested, feel free to proceed onwards. Here's the contents:

A sort of introduction

The very basics explained in a few words and links

The GPL, free software and open source

Some benefits and disadvantages of open source

Open file formats

Choosing and installing Linux

Distributions! WTF?

Live CDs

Installation

User communities and getting help

Using Linux

Quick introduction to the Linux system

Security practices

Stability

Basic screenshots and the GUI

Hardware and software setup and maintenance

Peripheral devices

Office programs, &c

Graphics editing

Things related to music

Multimedia

Programming

The command line — extreme basics

Appendix I: A small linklist for further reading

Appendix II: Bye, bye — Contact info — Licence





Hi

A sort of introduction

Reasons for writing this page are twofold. Firstly I've thoroughly enjoyed using Linux myself, and I wish more people would at least try alternatives that might work better for them also. This page is also my way of contributing something back to the community whose hard work I have had the pleasure to enjoy (also it's been a great excuse to learn XHTML).

I believe one major reason people en masse are willing to put up with viruses, proprietary licensing and EULAs are their prejudices and outdated dis/mis-information on open source, partly emanating from the large corporations themselves, fearing to lose their de-facto monopoly positions. Much has happened since the halloween papers leaked from MS, but they do reveal why Microsoft fears the open source movement. Also most operating systems come pre-installed with computers, depriving people the right to choose the OS they might want to use. Not only are you (unwillingly?) paying for the software, this practice only manages to reinstate the false belief that installing an OS is difficult and requires esoteric knowledge. Nothing could be farther from the truth, as you can observe here!

To the beginning

The very basics explained in a few words and links

Nowadays the word 'Linux' is used to refer to a variety of distributions (they will be explained later on), or whole Operating Systems, but strictly speaking 'Linux' refers only to the kernel, or the 'basic input/output code' of the OS, devised originally by Linus Torvalds in the early 1990's while studying computer science at the University of Helsinki. The 'official' Linux kernel is today being developed by Torvalds and a bunch of enthusiasts at the kernel archives.

Today distributions include besides the kernel a whole bunch, or rather a real plethora, of very useful programs from command-line tools to wordprocessors and image manipulators to whole Graphical User Interfaces, the earliest of which were independently and at an earlier date conceived as a part of Richard Stallmans 'GNU' project. Actually Torvalds used GNU tools to write his kernel. Today there are many thousands of projects making different open source programs. The history of the thing is actually very interesting, but perhaps more so in some other context.

Among other operating systems, Linux too uses a UNIX style approach. This is the main thing that makes it a bit more difficult for people —like myself— with old MS background to adopt the way Linux does certain things. But there's no magic behind it; this means simply that Linux behaves a bit differently to e.g. MS at the filesystem and user management level. As you can see below, the Graphical User Interface is very intuitive to use. I've also included a more detailed discussion on the basic differences between Windows and Linux. Also, Windows programs (binaries) don't natively run on Linux (or MacOS or Unix). You can try emulators, but the result is usually suboptimal. But remember that most free programs have been compiled and ported to Windows and MacOS also, so you can try them out.

Remember that you had to learn how to use Windows or a Macintosh, same applies to all operating systems. Also, consider the fact that actually most of the operating systems out there —Linux, MacOS X, all the BSDs, SunOS, Solaris, modern Unices, etc— are based on the same UNIX approach, thus actually making Microsoft in the minority! The basic concept is heavily tested, very robust, and e.g. one of the main reasons why Linux is more stable and secure than MS Windows.

To the beginning

The GPL, free software and open source

Linux is free and open software: the kernel and the programs are released under the GNU General Public Licence, generally referred to as the 'GPL'. The GPL is a working and legally binding licence, written in chaotic legal jargon. The licence gives you certain freedoms concerning the software and is thus a sort of antithesis to EULAs that are designed to deprive you from those very rights. Because the term free is ambiguous in English, this point needs to be reiterated frequently: as the saying goes and the preamble states, think of 'free speech', not 'free beer'.

Put vaguely and in layman's terms the GPL gives you the freedom to run the program, to read the source code, to study how the program works, to change the source code, and to redistribute copies of the program. Here one needs to make a distinction between the source code and a binary executable. The source code of a program comprises of text file(s) written in a human-readable programming language, whereas the binary executable is compiled from the source code and meant to be interpreted and run by the computer. The binaries —that is, the program files you actually use— are not human-readable and can't be used to produce the source code directly. That's why it's important to keep the source code available.

Very importantly, according to the GPL the source code must also remain free. This is enforced by a 'copyleft' in the licence. The GPL copyleft states that all derivative work will have to be licensed under the same licence. This means that every piece of code based on GPL'd code has to be released under the GPL, if it is being distributed. The copyleft is vital in that it ensures that the whole community can benefit equally. Also one could think that it ensures that you get credit for the work that you have done (and others for what they have done). This is the basic idea behind going open source: to share with your neighbour.

To debunk two misconceptions: you can buy free software; the main thing is your freedom. If you buy a Linux distro, you're paying for the physical medium: the CDs/DVDs, printed manuals, "official" installation support, etc. Secondly it's perfectly legal to copy your GPL'd Linux and to give it for free, or sell it to anyone, even if you had paid for it or hadn't changed the code one bit. BTW, here I often talk about 'open source' instead of 'free software' because of the ambiguities of the word 'free', and here I use the terms interchangeably. Note, however that although all free software is by definition open source, all open source isn't necessarily free, i.e. if you don't have freedom to change and redistribute it! And don't take this for legal advice :), my sources are e.g. the GPL-faq and the Wikipedia article on GPL.

To the beginning

Some benefits and disadvantages of open source

There are both ideological and practical benefits from open source or free software. Here I'll be concentrating on the practical benefits, but you really should read this essay by Stallman, and decide for yourself whether the two aspects are really so contradictory.

A simple reason why open source programs preform better compared to their proprietary counterparts is crystallised in the so-called linus's law: 'Given enough eyeballs all bugs are shallow.' What is meant by this is that once the source code is made open, everybody can spot bugs, that are ubiquitous —bound to happen— in very complex programs. The catch is that the the most important open source programs and projects have together had, literally, millions of eyeballs searching through the source code; this is something that even large corporations could never afford to finance.

One can argue that when the source has been released, the possible security hazards are exposed to people designing viruses as well. While this is true, think for yourself whether e.g. Microsoft has had a success with its 'security through obscurity' or rather 'hide and seek' method. There are always leaks of the vulnerable code, always unseen bugs, manifesting in rapid worldwide virus infections. By releasing source code, vulnerabilities have to be patched. Also, one doesn't have to rely on a particular vendor to deal with the problem, but has the force of the whole community.

In the past, Linux and free programs were being coded solely by thousands of enthousiasts in their spare time. This is one frightening tactic used by some Big Businesses even today. Nowadays many corporations (Novell, IBM, HP, etc.) have hired some of these developers to work on Linux —and to share their work. Even if this were not the case, you can look at this frightening tactic from a different angle: those thousands of coders and millions of users have tested and checked the code for you, probably by someone from your country, likely by someone who has roughly the same hardware you do. And if you're really that concerned about it, with free and open software you're welcome to check the source code yourself.

I believe that there are also some problems with open source. For example open source programs can afford to have very fast release schedules. For instance whole new operating system versions are usually released twice a year (a notable exception being the Debian system), most programs are being updated continually. This, yet again, can be seen either as a benefit or a disadvantage. Most distributions, though, have to a large extent automatisized security and version updates through package managers, but it can still be a bit of a bore. Remember that there are usually few practical benefits from updating a sound and running system, as long as you can keep it up-to-date security-wise.

Free, open source code is not, cannot and should not be controlled by a single entity. This is a very good thing, but when the standards are made loose and people are eager to exercise their newly found freedom, unanimity is seldom reached. Though this translates to greater variety of choice, it also means that there are slight differences between most Linux systems in the setup tools, package managers, and even in the filesystem hierarchy itself. I don't think this is a huge problem though. Once you learn the basic Linux style the differences become small —but they can sometimes be tiresome.

~

Linux can have problems with proprietary hardware, e.g. 'soft modems' on some laptops. The name comes from the fact that these modems lack hardware, expecting your CPU to do the tasks of the missing hardware through software. The problem being that the software is released only for MS! Go figure! There are some workarounds but you won't probably be able to use them with e.g. Linux. This is not a serious problem anymore since people use Ethernet instead. Nowadays there are similar problems with e.g. some SATA and RAID setups.

Before you buy any hardware, I'd recommend that you Goole around a bit and search the distributions forums and databases to see if it's possible to get that hardware working under Linux. I've included some links for certain useful pages to dot this later on in the text and in the linklist at the end.

There are many companies, like NVIDIA and ATI, that do release binaries for their hardware (3D accelerators) for Linux also, but not the source code, which is not cool. The programs are not free, and the installation procedures more complicated. It's really hard to see the rationale behind keeping the driver software closed. And as you can see, the hardware problems haven't actually been caused by open source code as such. More people need to leave the NVIDIA accelerators and soft modems on the shelves until there will be any change.

Some file formats, like .mp3, .mov, etc. use patented software algorithms, and support for them cannot be bundled with the distributions in certain countries. As you can see below, it is usually trivially easy to download and install the necessary libraries to get support for these formats too, but it might not be automatic. You could also try to use nonpatented, free formats like .ogg instead (see the next section for more on open file formats).

To the beginning

Open file formats

Most file formats used today are proprietary and therefore closed by nature. This fact might not readily strike you as a big problem, but what if it happened that one day a software company —let's say 'Macrohard'— decided that it doesn't fit their economical interests to continue to support some age old file format. You'd be stuck with a pile of useless documents that —if the format was proprietary and secured by licences— couldn't be accessed once the software gets updated. A far-fetched example you say? Well it actually has happened (pdf) [the link is only in Finnish, sorry].

Furthermore e.g. the above mentioned 'Halloween' memorandum that leaked from Microsoft reveal that MS actually played with the idea of making some of their key file formats so cross-patented that they would be able to suppress competition in the market and blackmail the users (or 'de-commoditize' as they chose to put it) by making formats that could only be accessed by MS products. The ramifications would be singularly absurd. Files are also shared across systems, so if the receiving end wouldn't use the same software, your files would be unusable (or, well, save for a world where that particular company had total monopoly...).

So for instance those two pointers make some motivation for creating open specifications and file formats. Luckily this work is on the way, for instance by the OASIS organization, and e.g. OpenOffice.org —a cross-platform wordprocessor that is likely included in the Linux of your choice uses these specs today! Today many governmental entities are rationalising that they shouldn't rely on closed-nature and industry-cum-platform-dependent file formats when communicating with people exercising their right to choose freely.

The idea behind open file formats encompasses many of the positive aspects of the open source movement at large. You might concider for instance that the reason why HTML became so popular was not necessarily (or only) due to its technological brilliance, but simply in the fact that Tim Berners-Lee didn't want to make millions with it and ask for a penny every time you load an HTML parser. Things didn't turn out too bad for him even though he lacked the greed. If HTML hadn't been open and accessible for free, would we know the Internet we know today?

To the beginning





Choosing and installing Linux

As you might imagine the open source movement lures also people who are prone to be fairly opinionated. There is no one way to do things, there is no one corporation whose executives dictates what, how and when things must be done. This implies (materially?) that there is no one Linux that you can go to a store and buy, or to a server and download. There are actually hundreds of choices. And this is one of the tough spots for a Linux novice.

One sound way to go is to choose a one that's all-around noob-friendly ;). A fully graphical installation is a pretty big plus but not perhaps obligatory, it has to have good hardware support, big package repositories and look good too. That'll at least narrow the search down somewhat. I hope I will be able to show on the chapters below that choosing, using and installing Linux really is a piece of cake. So if you're still actually reading, why not go right away to set yourself to the right mood by skimming through e.g. the excellent page of Distrowatch?

To the beginning

Distributions! WTF?

What we are here interested of are whole, out-of-the-box 'kernel + the plethora of free programs' Linux operating systems: distributions. And there are hundreds of them. Again I'll be omitting meticulous investigations into the history of the phenomena, but generally speaking distributions come mainly in two flavours: RedHat and Debian based or styled systems. There are others also, but I won't be discussing them. Both of the mentioned are normal distributions that have since been used as a base for other distributions. You should check some specs and general characterizations of the currently 'top ten' ones from the Distrowatch page.

There's not much difference between the two, but as a rule of thumb I've gathered Redhat based systems tend to be more newbie friendly and more GUI concentrated; Debians have some 'technological advantages', e.g. all the Debian derivatives are uniform in structure and in package management (see next paragraph), and most Debians —unlike Redhats— can be wholly updated on the fly. On the other hand the Debians tend to be perhaps more confusing and relying on that you e.g. know your way through the command line and setup procedures already. But this is really just a vague and general characterisation! Read different reviews e.g. from Distrowatch and decide for your self!

As mentioned, the two systems use different package managers (the packages are named *.RPM and *.DEB, respectively) that are natively incompatible with one another. Oh, right, as a reminder: 'Packages' mean precompiled binary... well... packages, that enable you to install programs hassle-free, with just a few clicks of the mouse or a single command to the prompt, rather than building them from the source code which is more difficult (because then you need to give two commands ;)). Packages also resolve library dependencies automatically, and there are many other benefits from using packages. Patch packages are used to keep individual programs up-to-date.

Furthermore Linux —unlike MS or Mac— can use different, mainly two Graphical User Interfaces: KDE or Gnome. There are others too, but KDE and Gnome are by far the most popular. Yet again, the differences are minute. I find KDE more pleasing visually and more intuitive to handle (more noob-friendly?). It is more modifiable, and perhaps also resembles MS style. This is also why KDE is bigger and more massive, so many people like the lightness and slickness of Gnome. You can choose either one with almost all distros, but most distros default to one or the other, and anyway you can use only one at a time, so you have to make a choice here also. Have a look at the two (for instance from the OsDir page) and judge for yourself; it's really just a matter of tastes.

That's (almost) it. After you have decided whether to go RedHat or Debian and KDE or Gnome you're almost done, but there are some important considerations you need to take into account about installing the OS.

To the beginning

Live CDs

Before actually installing Linux, you might want to explore if some distributions you have in mind have produced a live CD. Live CD is a CD (or a DVD) that contains a full runnable Linux distro. The 'live' part means that it can boot and run directly from the CD using only RAM memory and —at your discretion— not touching your hard drive and data on it at all!

To use a live CD, first download an 'ISO' image file of the CD and burn it onto a blank medium as an image. This renders it bootable. There's a good chance that your computer is set to boot primarily from the CD by default, so just pop the CD in the drive, boot the computer and see if it starts to load Linux. If it doesn't work, you need to go to your BIOS settings and set your computer to boot from the CD drive first. Notice two things. First, because a CD can contain only 700-ish megabytes of data, there's a very limited collection of programs available. Secondly the CD is read at a much slower speed than the hard drive, which affects the experience. A live DVD helps on both points as it can contain manyfold the data and is read faster (tho still slower than a HD).

Anyway, with it you can check what the system looks and feels like and whether the distribution detects all your critical hardware ok, without actually installing it. You can even access the local hard drive, all USB ports, etc., and live CDs are often used to rescue data from damaged systems and making virus inspections. Just remember that with a real installed system it's much easier to tweak settings and install drivers, and that the programs run much faster.

To the beginning

Installation

The installation of a Linux system is not difficult. Just read the manuals carefully. Many distributions offer graphical tools for installation also that make the process less frightening. The OsDir page has actually screenshots of the process! As you can see text based installation is not perhaps as intuitive and easy as the very clear graphical, point-and-click style, but straightforward enough. Proper graphical installation and good hardware support can be seen as a requirement for a novice friendly Linux, and as I have understood it, currently SUSE, Ubuntu, Fedora and Mandriva have successfully implemented both, a real graphical installation might be on the way for the Debians also.

Very importantly, Linux can be run alongside any other OS! For example Windows simply presupposes that it is the only OS that runs on the machine, but you can —without a problem— install Linux even if you have MS or Mac installed. You don't need to get rid of them. Linux will install a 'bootloader' that enables you to choose which OS you want to use when starting the computer. You needn't necessarily know anything about e.g. partitions, though, again, knowledge is power and helps demystify what's happening. During the installation all existing Windows or Mac partitions will automatically be detected and (at least with SUSE) the installer will allow you to shrink one so that Linux can fit there

If you don't have any other OS on your computer, you can just let the Linux installer do its job. Most installers have a very reasonable partitioning scheme set up as default. That's about it really. If you don't want to learn the facts or make any fancy setups, you can even survive through the install simply by answering questions concerning some regional settings, though I highly encourage you to read the manuals first. When installing, you'll just have to watch as the hardware gets detected, give root and user passwords, wait for all the files to copy, and then you're ready.

To the beginning

User communities and getting help

With Linux, it's all about the user and developer communities. Distributions have also created newsgroups or help forums into the net, where you can send questions. These forums are extremely handy and in my experience very fast places to get help. Just remember a few points before contacting them. Firstly, the people who answer you all work for free and use their spare-time to the job. The forums are intended for people searching help to different specific problems; if you just want to vent a little, please go somewhere else to do this.

It's considered polite behaviour to even try to solve the problem by yourself. So, before posting, re-re-read the manuals (use also the man command and the --help switch), and do not underestimate the power of Google. If you have no success, mention the things you tried in a sentence, so you won't be adviced you to try them again. Always be as specific as possible. Describe what were you doing, just exactly what error messages you get; what version of the OS or the program, and if relevant, what hardware you use. If you think it's a problem with hardware, check the kernel loadup log at /var/log.

If there's a question no one has answered yet, why not try to answer it yourself, provided that you have a clue on what's going wrong. Before I installed Linux I spent some time reading a few newsgroups, and learned a great deal on how to handle simple and recurring problems and misconceptions. Though, as I was naturally reading only about users experiencing problems, it did tend to make me a bit paranoid. I wouldn't exactly recommend this method to anyone, but I guess it's one way of getting to know Linux.

To the beginning





Using Linux

One last point, that I can't stress enough (even with the expense of sounding a little monotonous and tautological) is: read the different manuals, just see them through if nothing else. Distributions include their own (sometimes even printed) manuals, the internet and The Linux Documentation Project is full of information on the subject. Most of all: don't just expect Linux to work exactly like Windows. They're two separate systems and they behave differently too. Windows' way to do things is not the way to do things, just a way to do them, and Linux is another way. And, yes, you really did have to learn how to use MS also, the same applies to all operating systems.

To the beginning

Quick introduction to the Linux system

First off, the user- and ownership of files and processes:

Linux, and already Unix, was designed to be a true multi-user environment and particular attention was given to file permissions. In Linux every single file, folder and process is owned by a user. All the files and folders also have a set of rules determining who is allowed to view, change or execute it. For example you don't want anyone else to see, let alone to change your diary file, but it's very useful to let other people to see or even to be able to write to less personal files. This property is built into the filesystem itself —in the way the system understands what a file is, and cannot be bypassed on a running system.

starting applications as root from a terminal emulatorAlong normal users, Linux has an administrative user, called 'root'. The root user has the ability to read, write and execute all the files in the system, and all the system-critical programs and system-wide config files are owned and protected by root. This makes sure that other, normal users or processes started by them cannot change or sometimes even view these files. That's why it's very important to use the root account only for maintenance work (see the screenshot). Normal users cannot —intentionally or unintentionally— srew the system up, only affect their own files; consequently you must remember to behave yourself when using the root account. This is also one of the major reasons for the security of Linux and in direct contrast with Windows' way of doing things.

Secondly, the hierarchical filesystem:

A Linux system differs from e.g. MS Windows in that it has a hierarchical filesystem. This means that the program directories (or 'folders') are managed by the operating system itself, rather than the by all the different programs (there's a detailed article available in TLDP on this issue, worth a read). So, where in Windows you start with the drive c:\ and continue to miscellaneous and arbitrary subdirectories, in Linux there exists a hierarchical, standard(ish) system of directories. It starts at the top from a single forward slash / (AKA the 'root' directory) and expands onwards. BTW Unix and Linux use the back-, not the forwardslash to distinguish directories, simply for historical reasons.

setting permissions in the GUISome important directory hierarchies in Linux include /home/username which houses the personal files of the user "username", and his configuration files. Subdirectories in /dev point to different devices, /usr holds normal program binaries, /sbin has the system binaries, /var/log the log files, /etc the system-wide config files /lib the library files, etc. You can find a more complete list of them e.g. from the Wikipedia article on the FSH. For instance the first partition of the first hard drive (the "c:\" in MS) is usually the /dev/hda1 in Linux, program manuals and documentation are in /usr/share/doc/packages (the files for the 'man' command are in /usr/share/man), your destop configuration files in /home/username/Desktop, etc., though in the details YMMV.

The reason this is so cool is that — well, first off it's a lot more organized — and the use of, say, separate hard drives is completely transparent to the user. If you have e.g. a separate hard-drive full of music files, when booting you can mount the drive itself to, say, /home/username/music and treat it just like it was any other folder in your /home; hell, for all you care, the drive could be accessed even via some network, and the operation would be completely transparent to you. Actually, if you have Windows installed, the partition it is usually mounted at /windows in Linux and you can access the files on it from there.

To the beginning

Security practices

There are many security considerations in Linux, but file ownership and access control discussed above is your bestest buddy in the whole wide world. In addition to the points made earlier about them, if you want to execute a downloaded program or a script, you have to give executable rights to it. Linux does not blindly trust extensions and just agree to run every binary file. A classical way to infect MS Windows is to masquerade a virus as, say, a picture file and execute it without the users consent. In Linux, you could do something similar —you would just have to convince a user to download it, wait for the user to explicitly give it executable rights, and (explicitly) run it. Even then it could effect only that one user (There's a good article by Scott Granneman on this issue).

With this said, of course, nothing stops you from infecting the machine willingly yourself, even if it is very hard to infect a Linux system 'on the fly' or without your contribution. Consequently security should always be maintained in a Linux machine also and you should adhere to good security practices. As I remarked earlier, use the root account ONLY for maintenance work; don't log into the GUI itself as root. Regular routines include checking that the firewall is running ok (also by doing external port scans), ALWAYS downloading security updates, seeing up for strange behaviour and -processes. And do read the critical log files from time to time so you have a 'template' to refer to if something odd starts happening.

You should NEVER install and use program binaries from places you don't fully trust. The distributions official package repositories usually include precompiled programs for all normal needs. Also if you don't need stuff like ssh, nfs or Samba, disable their daemons (some distros have them running by default for convenience). You can set up programs like Tripwire that store and check the access rights and hash-values of system files, but that's usually a bit overkill and not a precautionary method. Perhaps even running a rootkit hunter every once in a blue moon isn't such a bad idea.

Finally, a few words about viruses:

A famous argument against the security of Linux is that since it's still rarely used as desktop OS it doesn't interest virus publishers. This idea is somewhat flawed, since far over a half of the servers in the internet (60-70% on some estimates) use Linux and Apache, and are scanned by wormbots all the time. Perhaps a quote from a memorandum (pdf) made by Nic Peeling and Julian Satchell to the UK gov't on open source software is illuminating. Remember that viruses (or any programs for that matter) written for MS don't work on any Unices. One can write viruses for Linux also and perhaps there will be more written when Linux does become more popular on the desktop. The viruses would in any case have to overcome all the security barriers of Linux, some of which were mentioned above.

'There are about 60,000 viruses known for Windows, 40 or so for the Macintosh, about 5 for commercial Unix versions and perhaps 40 for Linux. Most of the Windows viruses are not important, but many hundreds have caused widespread damage. Two or three of the Macintosh viruses were widespread enough to be of importance. None of the Unix or Linux viruses became widespread —most were confined to the laboratory.'

To the beginning

Stability

One explanation for the stability is the open source development model. Since anyone can download, read and propose changes the source code, there's no need to leave, and no way to hide any weaknesses in the code. Free, open source software doesn't have absolute deadlines for publication, but everything is instead in a continual state of evolution and development.

In Linux also the GUI is not so entwined with the kernel as it is in Windows. As you've seen above, there are actually many GUIs to choose from. Furthermore, in Linux, the kernel runs a program called the X-Window server. X provides the basic framework for windowing and it's only on top of X that the GUI itself operates. The kernel is always accessible through terminals even if these programs have troubles. If a GUI program runs amok or starts to hog memory and CPU cycles, the shell always has priority to the resources, and you can stop the program at least from there. You can restart the whole X (and thus also the GUI) with just a little ctrl+alt+backspace action. In contrast, if the MS Windows GUI has troubles, you're confronted with a Blue Screen of Death, might loose all unsaved work, and are usually forced to reboot.

Besides the strong kernel and the way the GUI works —I read somewhere— there are a few reasons why Linux more stable than Windows, such as not relying on program registries but using dependency checks instead, etc. I'm not much of an expert here. All I really know is that during the first year I used Linux, the x-window system crashed once (when deliberately using unstable components), and a simple restart of x sufficed. I used Linux for all my works, and it ran like a dream. In that same time I had to reinstall the whole Windows OS once and it was soon mixed up to a point of being again unusable. And all I was really doing with it was playing one game (which, ironically enough, is distributed by Microsoft). I haven't booted to Windows in over a year now, and when I upgrade the machine next time, it's bye-bye time for MS on my PC.

To the beginning





Basic screenshots and the GUI

A picture is supposed to be worth a thousand words so I'll try to be brief. These screenshots below show the KDE GUI as the normal user will confront it. They also reveal some aspects of the filesystem as seen through the KDE default filesystem browser, Konqueror. As you can see Konqueror offers very handy 'previews' for picture- and text-, even music files! Otherwise it's all pretty standard and very intuitive ;). Mac users are probably used to 'eject' or unmount CDs and DVDs before removing them manually, this again comes down to the UNIX heritage of both OS.

(BTW, click on the pictures to view them in full size. All images are optimized for 1280x1024 resolution.)

the KDE desktop remember to unmount or eject CDs filesystem browsing with Konqueror rewriting pictures confirmation with handy previews

You don't have the time, and my homepage doesn't have the space for examples of all programs I found very handy in Linux, so below are just a few examples. Kate is a rather powerful KDE text editor. KSysGuard gives info about system load and running processes; use the 'Kill' button with caution ;). K3B is a CD/DVD burning software, actually an easy-to-use graphical frontend for a collection command-line programs. Drag'n'drop and start burning (choose also joliet extensions to be able to share with Windows). You can even run some simple Windows apps (like Skymap below) in Linux through 'emulators', like WINE. Complex programs won't probably work at all and you'll always find some glitches.

kate: KDE text editor system load and process info via ksysguard K3b cd/dvd burning software running Windows programs on Linux through Wine

To the beginning

Hardware and software setup and maintenance

YaST hardware setupThe distro I use, SUSE, is known from its excellent setup tool, YaST (an acronym from: 'Yet another Setup Tool'). Needless to say that all info in this section in SUSE specific, though it was until recently GPL'd and it is being ported to e.g. Debian.

Installing software with YaSTYaST is not only a graphical frontend for some command-line programs, but it can install and manage packages, generate firewall rules and user accounts, hardware detection and setup, and much more. Use YOU or 'YaST Online Update' for security updates (see the screenshot below). YaST is one of the few setup tool that does all of these tasks from a single interface. In other distros this work is done from the command line or by several different setup tools. They work fine too and YaST is far from perfect, but complete setup toolsets like it can make life a lot easier.

YaST online update at workThis is not a place to initiate you to the secrets of YaST, as the interface is very straightforward and you can read everything from guides. The pictures should give a glimpse of the general idea. Note also that even though it is enough for most setup work, nothing stops you from further tweaking at the command-line. Remember that YaST (or any other setup tool for that matter) does override your manual setups. In SUSE, there are setup files ending with .local that are intended to be used for hand-tweaking. If you use a setup tool at all, it should be the preferred way to setup the system overall. Once you become proficient enough on the command-line, you can ditch them wholly, if you want.

To the beginning

Peripheral devices

Most peripheral devices are not a problem with Linux. No drivers are needed for memory sticks, just plug them in and out. Digital cameras can be accessed as mass storage devices if nothing else and most scanners can be accessed through the SANE interface. Printers, even today, can cause some problems. Like all (or most) hardware problems with Linux, the problem with printers is that some of them use proprietary and therefore possibly 'closed' interfaces, or ways in which documents and pictures are translated into a language the printer understands.

Many of the proprietary interfaces have been ported into Linux; you can check a general status from TLDPs printing guide or search even printer-specific info from the linuxprinting.org site. Most distributions have these 'drivers' available, though you should also doublecheck which printers a distribution can support natively. If you want to be on the safe side, you can always buy a 'PS' or 'PostScript' compatible printer. PostScript is a widely used open specification (especially with laser printers), but PS compatible printers are usually a bit more expensive than others.

To the beginning

Office programs, &c

OpenOffice.org WriterThe office program that is normally used with Linux is OpenOffice and it is available for (at least) MS, Mac and Solaris also. It is a very intuitive and powerful office suite comprising of a wordprocessor, spreadsheet program and presentation program which all bear great similitude to the Microsoft office counterparts. Furthermore OpenOffice has a program for manipulating complex mathematical formulae, a vector graphics manipulator and a database program. As the name suggests, the program is open source and distributed for free.

I have personally found OpenOffice to be as intuitive and sometimes even more easy to use and configure than its proprietary counterparts from e.g. Microsoft.OpenOffice.org Calc I hope you can gather some of the reasons for this from the screenshots. As of version 2, it also uses the OASIS standards for open file formats including the OpenXML format that also MS Office is committed to use. Rather importantly, OpenOffice can natively open and save *.doc and *.rtf documents that MS office uses. OpenOffice can also e.g. save documents right away in PDF format, which is an extremely handy thing. It has full hyphenation and spell-checking capabilities and much more. Today the Finnish spell-checking is carried out by a closed source albeit freely distributable program 'Soikko', but the hunspell_fi project will produce an even better and open spellchecker for the Finnish language.

One application I also use is Kile, which is a KDE specific graphical frontend for LATEX. The fancy text imitates the 'amazing' typesetting features of the program. BTW, in some circles you can get into rather embarrassing situations if you don't know how to pronounce it. The three last letters are actually the capital Greek letters, τ, ε and χ (from the Greek word τεχνη : 'skill' or 'craft') and LaTeX should be pronounced [lay-tech], or something in that manner. You really shouldn't go around asking people if they've enjoyed using latex. Remember to always write LaTeX with the strange capitalizations.

LaTeX written with kile, output as .pdf and .pngRight, well —anyway: LATEX or TEX is a typesetting and publishing program. It actually works in markup language, not entirely unlike HTML or general XML, though its markup syntax is different from the two (as you can see from the screenshot). If you're not used to write markup, TeX might prove to be a bit difficult to use, even through the graphical frontend. The greatest advantage however, is that you have complete control over the document layout, LaTeX also has a very sophisticated system for rendering logical and mathematical expressions and formulae in a standard manner. The greatest feature of it is that it can process indexes, cross-references, bibliographies, tables, numberings, etc. automatically. Furthermore it uses the markup philosophy to the fullest, separating logical markup and style expressions completely. You can also translate TeX documents (or .dvi files) straight to e.g. PS, PDF or even rasterize them as PNG or JPG pictures! I use LaTeX always if I know I'll have to be dealing with large and clearly structured documents.

To the beginning

Graphics editing

Image manipulation: The GIMP and InkscapeLinux distros often include The GIMP (or Gnu Image Manipulation Program) as a basic graphics tool. It is indeed very versatile, though the learning curve is pretty steep at the beginning. Fortunately there are manuals available in the net. Another graphics program I use often is Inkscape, which is a powerful vector graphics editor. Both GIMP and Inkscape are depicted at work on the left. Blender3D and YaFRay at work Especially Inkscape is still under heavy development, but can be used to create stunning work, as you can see if you check the homepage of the program. A very useful basic manual for Inkscape can be found here. There are naturally some very rudimentary 'paint' programs, like KolourPaint available also. For 3D graphics and animation I use Blender3D, you can see a screenshot on the right. Again the learning curve is rather steep in the beginning, but learning it pays off soon; Blender3D can be used to do some absolutely amazing and very realistic renders as you can see from their gallery. With YaFRay (Yet another Free Raytracer), one can create e.g. beautiful caustics effects and realistic lightning setups.

To the beginning

Things related to music

some music-related appsThe screenshot to the left depicts a few programs related to music I use most often. Amarok is simply an amazing music player, KaudioCreator is a nice graphical frontend to some tools used to encode music and Audacity is a nice program for basic audio editing. There are also MIDI programs like Rosegarden and others available. Of these programs, the one I have unrecoverably fallen in love with is Amarok: it looks beautiful and minimalistic, is really easy to use and configure, fast and yet very versatile as you can see if you browse the Amarok project homepage; the screenshot shows its basic appearance but doesn't fully reveal its true power. Needless to say that there are many other programs that do these same things. All the mentioned programs work fine with mp3, ogg, and many many more formats.

As I wrote earlier, some music and video codecs, like mp3 or wma utilise patented software algorithms and some distributions can't bundle support for them out-of-the-box in some countries for legal reasons. It is, however, usually a trivially simple task to find a repository to download the library packages you need for their playback.

To the beginning

Multimedia

DVD, flash, mpeg, realplayerAs you can see, multimedia is no problem with Linux. Mpeg1-4, DivX, quicktime, Ogg Theora, wmv, flash, realplayer, etc all work in Linux. You will probably need to install some codec library packages externally however. Xine is a versatile player, one of its frontends, Kaffeine is depicted in vivo on the right. Mplayer is a handy tool also and it uses mainly its own codecs so there's less messing around; there's also a good Firefox extension for Mplayer, so streaming media is no problem. Realpalyer comes natively with a few distros, but is ported to all of them.

If you want to watch DVDs, you might have to install a css decoder, like the libdvdcss. Note that the Mpeg-2 layer used in DVDs is freely available, but most commercial DVDs are encrypted with css. Note also that libdvdcss is not used to rip DVDs, only to play them. In some countries, all attempts at deciphering css -type encryptions are illegal, but it is perfectly legal to use it in most countries. Using a css-decoder is unfortunately the only way to watch DVDs in Linux and other open source operating systems. You're usually not braking any law (and certainly not doing anything morally reprehensible, IMHO) if you need to decipher some dummy encoding in order to simply watch a DVD you bought, just because the commercial interests of a multi billion dollar industry do not span to open source software. The legistlation varies, however, so be warned.

To the beginning

Programming

programming, KDevelop, Perl, htmlOn the left you can see certain programming environments at work. KDevelop is an intuitive graphical frontend for 'gcc' or Gnu Compiler Collection, which consists of libraries and compilers for C, C++, Fortran, Java and Ada, which could all be accessed straight through the command line like with the rather poorly obfuscated and childish Perl example. The screenshots kinda give away that I'm not a really active programmer. Note however that Kate, the KDE text editor can recognize e.g. html expressions and reveal some simple writing errors, unclosed parenthesis and quotes, etc. What I perhaps really want to say with these screenshots is that if you really want to learn programming, all the tools are readily available in Linux. Which is, actually, very cool.

To the beginning

The command line — extreme basics

The command-line, wtf is it? One way to orient yourself is to understand that the command line — or the Command Line Interface — is a user interface, used to access and control your computer in basically the same way the Graphical User Interface is used. The command line is perhaps not as intuitive as the GUI but much more efficient and faster for many jobs. Just as GUI comes in many flavors in Linux, there are many different CLIs too, though nowadays Linux usually uses the Bash -shell by default. Bash can use e.g. wildcards (*,?) and autocompletion (the tab key), which are of great assistance.

If X doesn't load for some reason (which provides some motivation for learning the basics), or if you boot to a non-graphical runlevel, you're right away faced with the command-line, evident from the "username@hostname:~>" line and a blinking cursor, waiting for you to give it a command and telling that you're residing at the users home directory. The command-line can be accessed through 'virtual terminal' programs from the GUI. All the screenshots around show KDEs virtual terminal, 'Konsole' in action. Also you can access five non-graphical, non-virtual CLIs by pressing ctrl+alt+F1/F6, usually ctrl+alt+F7 is reserved for the GUI and brings you back to it.

Start programs on the command line by typing in their name and pressing enter. Apart from guides to the command line, you can search for programs on the CLI itself too. The "apropos [searchterms]" command (where you substiture [searchterms] for your searcterms ;)) is good for this. It searches the description part on a programs manual page (see below), and lists programs that have keywords relevant to the searchterms there. You can read these short descriptions with "whatis [command]" Just remember that Linux, like UNIX is case sensitive, so mind your capitals. Also if you delete a file, the command-line does not ask you for confirmation by default, and once deleted, the file is gone for good; so be careful.

a manual page viewed in less, and a help switchCommands have many 'switches', or options controlling how they are run. Almost all programs have the --help or -h option, which then displays all the other options available. If you're having trouble with some programs, it should be a habit to check out --help first. Most programs have 'online' manual pages, accessed with the command "man [command name]". Manual pages are more verbose and much more readable than --help. man opens the output less. less is a windowing program that enables you to view and scroll output that exceeds a windowfull. Exit less by pressing q.

~

The Linux command-line can also handle cool things like piping and forwarding. With a pipe "|" you can send the output of one program to another, or you can forward ">" the output e.g. straight to a file. If the file doesn't exist, ">" will create it; use ">>" if you want to add lines to an already existing file.

With pipes and forwarding you can accomplish very complex jobs with very simple tools. That's one of the reasons behind the effectiveness and fastness of the CLI. E.g. you can filter all messages concerning USB from the kernel messages and print these lines to a file, with a single command: "dmesg | grep USB > file.txt". Or you can make small sized, renamed, colour-space restricted thumbnails of a folderfull of images with e.g. "convert -geometry 15% | mogrify -colors 256 *.png thumb_*.png"; sort alphabetically, change encoding and remove duplicates of a list of words in a file with "LC_ALL=fi_FI.UTF8 sort -u input.txt output.txt" and much, much more...

some handy and not-so-handy commandsYour imagination and willingness to explore the manuals are usually the only limits to what you can accomplish with the command-line. All the tasks above take a single command, represent some very complex and time-consuming jobs to do in the GUI, and take only fractions of a second to complete even on large files. If you are fortunate enough to be able to read Finnish fluently, Tapsa, whom I mentioned in the very beginning also, has a very good, down-to-earth but still pretty comprehensive newbie guide to the command-line. See the linklist below for a similar guide in English.

To the beginning







The 'Appendices':


A small linklist for further reading

Most of the links included in the text above link to many good sources for further reading,
but I still decided to include a small number of links to some good overall guides to Linux anyway.

A few links to check for troublesome hardware
compatiable with and supported under Linux.

Some books.



Bye, bye

That was it. Hope it was of some help or assistance. If you found something I wrote to be ever so horribly wrong, inaccurate and/or terribly outdated or if you would just like to give me critics and comments (by the way, I know already that I can't really commatize English properly, so don't bother writing about that), you're herein and henceforth invited and very warmly welcomed to write me email to . Note, however, that meaningless scribble written on little bits of paper tied to bricks thrown through my kitchen window, do not count as c&c ;).


This work, the text and pictures, are released under the creative commons: 'attributions—share alike' licence. The author being me, Jukka Nikulainen.

Creative Commons Licence



| Main Page | Philosophy | Art | Linux | Misc. Projects | Links | Who Am I? |

Valid XHTML 1.0 StrictValid CSS!
Download the Firefox web browser