An Introduction to Linux

John Swinbank

Compsoc 13th November 2001

Yaroslav Halchenko

NJIT 9th November 2004

http://www.onerussian.com/Linux/pres

Part One
Why install Linux, and how to go about doing so.

What is Linux?

For the purposes of this talk, a Unix like operating system

It’s not directly descended from Unix, but it’s designed to work along the same lines

At the introductory level of this talk, much of what we say about Linux applies to other Unix like systems, for example Free/Net/OpenBSD/MAC OS X?

Why Linux? (opinions of 2001)

Why not?

It’s not Windows; need to learn something new

Doesn’t run MS Office

Doesn’t run many of the latest games

The Unix command line isn’t for everybody

Stable

Powerful

Wide range of capabilities

Flexible user interface

Free (Open Source)

Wide range of tools

Development, publishing, networking, desktop

A great learning resource

Can be as geeky/good/friendly as you are

Why Linux? (Now)

Stable

Powerful

Wide range of capabilities

Flexible user interface

Free (Open Source)

Wide range of tools

Development, publishing, networking, desktop

A great learning resource

Can be as geeky/good/friendly as you are

Why not?

It’s not Windows; need to learn something new

The Unix command line isn’t for everybody

Office

OpenOffice.org

CodeWeaverers.com

Games

WineX (cedega)

What is Linux really?

Linux itself is just kernel

The heart of the system; takes care of memory management, interrupt handling…

First released by Linus Torvalds on 17th September 1991

Still maintained by Linus, with input & patches from interested developers all over the world.

Latest release 2.6.9

The kernel is only useful when used in conjunction with other software

GNU Project from Free Software Foundation (Richard Stallman) started in 1985

XFree86

KDE and GNOME

Others

All this comes nicely packaged up for you in a distribution

What does a distribution do?

Takes the kernel & other software and sells/gives them to you

Provide a “friendly” method of installing the system

Provide security updates and bug fixes

Provide a method for installing and removing extra software

A ‘packaging’ system

Provide their own utility software, e.g.

Printer setup,

Network setup,

And so on

Which distribution to use?

A matter of personal preference (there are > 300 of officially registered distros)

Debian

Supports > 11 architectures

Open development model, excellent packaging system

I use Debian

RedHat/Fedora

Big, professional, very widely used

“Microsoft of Linux”

Mandrake, SuSE, Slackware

Aims to be very easy to install and use

Gentoo

For real geeks with a lot of CPU time in hands

Installation

Can give it a spin by trying live-CD distro

Varies from distribution to distribution

Most modern distibutions make it easy:

Buy CD / download and burn CD image

Boot

Follow instructions

Alternative (live-CD way)

Boot, work, copy/install (Knoppix, Morphix, MEPIS)

Offers dual-boot

Boots via network

Fully Automatic Install (for clusters)

Useful resources for part one

http://www.kernel.org/

http://www.gnu.org/

http://www.distrowatch.com/

http://www.debian.org/

http://www.redhat.com/

http://www.morphix.org/

http://www.knoppix.org/

http://www.mepis.org/

http://www.suse.com/

http://www.linux-mandrake.com/en/

http://www.slackware.com/

http://www.desktoplinux.com/articles/AT3135712364.html

Part Two
Ok, so it’s installed – what next?!

HAVE FUN

Users

Linux is an intrinsically multi-user system

Every user on the system has their own username & password

The root user has ultimate power to run the system. You should not log in as root unless you really need to

Even if you think you need to be root, consider tools such as sudo instead

During installation, you should have been prompted for a root password and also a username & password for an ordinary user account.

Virtual consoles

Demonstrate multi-user capabilities.

After logging in, hit (Ctrl+)Alt+F2. You can now log in again – as a different user if you like – on this new console.

After logging in, type w to see that you really are logged in twice.

You could also log in from a remote system (using SSH or similar) while still being logged in at the console.

Shells

The shell reads your input at the command line and translates it to the operating system

Can run external programs (e.g. mozilla)

String multiple commands together in a shell script

Makes user's work efficient: commands/filenames completion/expansion

Various different shells available: bash, tcsh, zsh etc

Files and directories

Linux shares the concept of files and directories with most other everyday systems.

In general, a filename can contain any character except “/”, and is limited to 256 characters long.

Directories work in much the same way as in DOS based systems, except that instead of “\” we use “/”.

Note the case sensitivity – Mozilla and mozilla are not the same!

The directory tree

Unlike DOS, not directly related to the physical disk/partition layout

Some directories are actual filesystems; others, like /proc, are generated by the kernel

Device files, usually in the /dev directory are not standard files, but actually an interface to devices. For example, reading /dev/mouse might show data coming from the mouse

A disk partition can be mounted on any directory in the tree

Noteworthy directories

/bin

Programs needed to run the system

/dev

Device files

/etc

Configuration files

/home

Users home directories

/lib

Shared libraries needed to run the system

/mnt

Traditional place for mountpoints like /mnt/cdrom

/proc

Provides information about running process and the state of the kernel

/sbin

Like /bin, but commands only needed by root user

/usr

Programs, libraries, etc not essential for system running.

/var

Log files, mail spool and so on.

Navigating

cd

Change directory

Equivalents:

cd /home/jds

cd ~jds

cd (assuming you’re logged in as jds)

ls

List directory contents

mkdir

Make a new directory

cp

Copy files/directories

rm

Delete files or directories

mv

Move files or directories

less (or more)

View the contents of files

Help! Too many commands!

man is your friend.

man cp

Help on cp

man -k cp

List of everything which has “cp” in its description (ok, there’s lots of them, bad example ;-) )

man man

How does man actually work?

info is the preferred GNU system for documentation.

A pain in the neck to use

Try the pinfo viewer

Standard I/O streams

Many programs take input from standard input and produce output on standard ourput.

Error messages are sent to standard error.

Often, stdin is the keyboard and stdout & stderr are the screen

But they can be redirected.

Example: cat.

Reads data from stdin. Sends it to stdout.

Plumbing

We can redirect standard output to a file

cat > filename

Or bring standard output in from a file

cat < filename

Or both

cat < file1 > file2

We can also send the standard output of one command to the standard output of others

cat < file1 | cat > file2

The “Unix philosophy”: don’t have one monolithic, do everything application. Have small programs that do one thing well & can work together.

Groups & permissions

Each user can be a member of one or more groups

groups command

Each file/directory is owned by a user and a group

ls –l

The file owner can set permission on who can read/write/execute a file.

Permissions can be set for each of owner, group and others.

chmod command

Permissions are listed in the form rwxrwxrwx in the output of ls –l

Three groups of three

Read, write, execute for each of

User, group, others

The first character represents the type of file

Links

Give a single file more than one name

Create links using ln

Hard links

Multiple file names pointing to the same inode

ls –I

ls –l displays number of links to file

Symbolic links (symlinks)

Not linked by having the same inode

ls –l displays link target – note the filetype!

Processes

Linux is a multitasking system – there can be many processes running at the same time

ps

Each process has a unique process ID (‘pid’) number

Processes can run in the foreground or in the background

There can only be one foreground process at any given time. It is this processes with which the user interacts.

Suspended processes are temporarily stopped, and can be sent either to the foreground or background as required.

The shell can control processes

Job Control

Kill the foreground process: Ctrl+C

Suspend the foreground process: Ctrl+Z

Send the suspended process to the:

Foreground: fg

Background: bg

Start a process in the background: append an & to the command

E.g. yes &

Note the PID and job number

Check the status of processes

jobs

Killing processes

Use the kill command

Either with the PID, for example:

kill 22916

Or with the job number:

Kill %2

Note the ‘%’!

Or use killall with the command name:

yes > /dev/null & killall yes

Useful resources for part 2

http://www.linuxdoc.org/

Your own distribution’s documentation

HOWTOs (locate HOWTO)

man hier

man bash

Other man pages (ps, ls, ln, kill, killall…)

Part Three
The X Window System, or how to make a 50-MIPS workstation run like a 4.77MHz IBM PC

X: A graphical interface for Unix

If the designers of X-Windows built cars, there would be no fewer than five steering wheels hidden about the cockpit, none of which followed the same principles – but you'd be able to shift gears with your car stereo. Useful feature, that.

Marus J. Ranum, Digital Equipment Corporation

Despite the above quote, X isn’t all bad. It’s actually a remarkably powerful, network aware windowing system which has shown a great deal of adaptability

Most Linux distributions come with XFree86

An open source implementation of the X Window Specification

X is a huge subject; we’re not going to attempt to cover it all here. Instead, I’ll aim to give a flavour of the things X can do and the graphical environments which make use of it.

Clients and servers

X is network aware

Run a program on one machine, have it display on another

The terminology around this is, perhaps, counterintuitive…

An X server runs on the machine where the display is to appear

The X client runs on a remote machine and sends data to the server to display

So, contrary to the usual definitions, you sit at the server and the clients run remotely!

(Most of the time on your Linux workstation, the clients and the server run on the same machine.)

X and the GUI

X itself provides the back end needed for a GUI. It doesn’t, however, provide an interface itself.

Window management functions – e.g. moving or resizing windows – are performed by a window manager, which is itself an X client. These range from the spartan (twm) to the complex and graphically intensive (Enlightenment).

There are various different toolkits for creating graphical applications, providing libraries of widgets such as buttons etc. These range from the old and ugly (Motif) to the new and shiny (GTK+, Qt)

No two users can be assumed to have the same window manager and different applications can use different toolkits (or even write their own). Therefore, there’s a lack of consistency about the average X desktop – this makes things ugly and can be hard to use.
The solution: stick to unified desktop environment like KDE or GNOME

Desktop environments

Attempt to produce a consistent environment and set of applications

Two major projects along the same lines

GNOME, using the GTK+ toolkit

KDE, using the Qt toolkit

Some people (including me) find that the desktop environments are big, slow and ugly without actually adding much usability

Luckily, it’s possible to use most KDE/GNOME software without running the whole environment

Useful resources for part 3

http://www.xfree86.org/

http://www.xwinman.org/

http://www.gtk.org/

http://www.trolltech.com/products/qt/

http://www.kde.org/

http://www.gnome.org/

http://www.windowmaker.org/

Part Four
What you've got in the box
or
what you haven't paid for.

Office

WYSIWYG Office Environments

OpenOffice.org

GNOME Office

Koffice (KDE suite)

WYSIWYM Publishing

LaTeX, BibTeX, pybliographer

LyX

Desktop Publishing

Scribus

Graphics

GIMP

DigiKam, gtkam

GQView, qiv, xv

Portable Documents

Acroread, Xpdf

DJView

Internet

Browsers

Mozilla, Firefox

Konqueror (KDE)

All-In-One Email Clients

Evolution

Sylpheed

Messengers

GAIM

Kopete

FTP and Downloaders

D4X

GFTP

Voice Over IP (VOIP)

Skype

Kphone

GnomeMeeting

Persistent GUI: VNC servers

P2P Clients/Servers

emule, mldonkey

bittorent

FUN

Audio

xmms (mp3 etc)

audacity (edit sound)

gtkpod (ipod UI)

Video

Mplayer (anything)

XINE

vlc (VideoLAN player)

dvdrip

Burning CDs

XCDRoast

Games

Doom 3

Return To Castle Wolfenstein

100s more via Xwine

Basket of free Linux games

Useful resources for part 4

http://www.openoffice.org/

http://www.sourceforge.net/

http://www.freshmeat.net/

http://www.frankscorner.org/

The End

Comments, questions, pub…

Linux and FreeBSD

John Swinbank

2001-11-11T12:19:05