I tossed together a very unpolished possible outline, on the principle
that having something concrete to talk about will make it easier to get
started. Apologies if one of you guys also made an outline; perhaps it
would actually be nice to have a couple anyway to compare possible
This should also give a sense of the "Debian Tutorial" idea and whether it
It's in Emacs outline-mode, so the number of * indicates level of topic
nesting, and lines with no * are explanations of the preceding topic.
It's much easier to read in Emacs with font-lock on, and you can collapse
the explanations to look at only the table of contents, etc.
Probably this should be in SGML but I'm feeling lazy.
So, anyway, here it is:
* Title, copyright, authors
* About this manual
This is the Debian Tutorial. It is aimed at readers who are new to
GNU/Linux and Debian. It assumes no prior knowledge of Unix and
Unix-like systems, but it does assume very basic general knowledge
about computers and hardware. This manual is meant to be read in order;
each chapter assumes knowledge of prior chapters.
There is also a Debian Reference Guide, which is more comprehensive
but less introductory.
This tutorial assumes that you have already installed Debian GNU/Linux
(and have read the Debian FAQ ?). If you have not yet installed the
system, you may still find this tutorial useful to get a sense of what
Debian is like.
Please send comments about this manual to <email address>. We're
especially interested in whether it was helpful to you, and how we
could make it better. If you get confused while reading, or notice
that we use a term without explaining it first, please email us.
(or should we ask for bug reports?)
DO NOT send the authors technical questions about Debian, as there are
other forums for that. See <insert reference to appropriate chapter>
To find the latest version of this manual, go <wherever>
(Much of this can be stolen from the Debian FAQ, or perhaps it should
remain only in the FAQ and we just refer to it here. That might make
sense since we're assuming installation.)
** What is Debian?
A group of volunteers, a GNU/Linux distribution, etc.
** What's free software?
Pointer to DFSG and info on free software.
** What's an operating system
** What's GNU/Linux mean
Kernel vs. system software.
** Some history
Origins of Debian, origins of GNU, origins of Unix; what is Unix (relationship
of Unix to single-user home OS's).
** Why should I use Debian?
What Debian is good for, and what it isn't good for.
* Getting started
** Booting the system
Depending on how you installed, booting may happen automatically,
require action at the LILO prompt, or require a floppy disk.
** A multiuser, multitasking operating system
Designed for many people to work at once; designed to keep users from
breaking/crashing the system. This relates to the original purpose of
** Accounts: root vs. users
Must identify yourself to the system, so it knows who you are and what
you have permission to do. Purpose of "root" account
** Logging in
Log on as yourself. You see the shell prompt $. This is where you type
commands - more about it later. whoami and logout/exit commands.
For the rest of the manual, when we say to enter a command, you
should enter it at the shell prompt and press enter.
** Command history and editing the command line
What's the command line. A brief thing on up-arrow and Ctrl-A.
This is here because it saves much retyping of mistyped commands,
and we want to define command line.
** Logging in as root
Flip to another VC. Log on as root. whoami. Flip back to original VC.
There are 6 VC's - try flipping to each! Logout.
Also become root with "su".
** Special instructions if you're using X
How to get a shell prompt if you're using X. X is on VC 7 (first available VC).
Have to use Ctrl-Alt not just Alt to escape X.
** Shutting down
You can't just hit the power switch, since the system needs advance notice
to finish what it's doing. How to shut down. How to reboot.
* The Basics
** The command line
Consists of a command, plus options/arguments. For example, the "man" command.
command = man, argument = command to give documentation on
command = man, option = -k, argument = word to search for.
Explain a line like: man -k [-M path] keyword
from the "man man" page.
What files are. Organized in a hierarchy, in directories. What full-path
filenames look like. The "ls", "cd", "pwd" commands.
(Earlier I was saying this should go later, but now I'm liking it here.)
Simply using ps to list processes on the system. How the system works, by
starting an original process (init) and launching others after that.
When you run a program, it starts one or more processes.
Processes = means of multitasking.
** What's the shell
The shell is a program that allows you to start, stop, and interact with
other programs. It's sort of a way to talk to processes.
(OK, that may be a cheesy way to explain what a shell is. Ideas?)
Tutorial here which starts a process (man?), suspends it with Ctrl-Z,
does something else, uses "jobs" command, returns to process, suspends
it, starts one in background, "jobs" again, back to both processes and
quit them? Maybe a "kill" in there? also a return to "ps" to show the
relationship with shell jobs?
* Reading documentation and getting help
** man, info, /usr/doc/<package>, /usr/doc/HOWTO, dwww
Why there are all these things, and where to go first for what.
Also mention the --help or -h option to many commands.
** Using info
A brief keystroke summary/tutorial, mention TkInfo, apologize for ridiculous
** Viewing text files with more and less
Use these to view some docs. Mention zless and when to use it.
** Getting help from a person
Directions to web site, IRC, debian-user, newsgroups. Mention that
there are also paid consultants.
Guidelines on what to include in your post, and what to do before posting.
* More on files
** Basic file operations: mv, cp, rm, rmdir, mkdir
An introduction to permissions. groups, rwx
** Tour of the filesystem
What the main directories are.
Specialness of /home/username
** Using a filemanager
Using Midnight Commander or the like instead of manipulating files by hand.
Not a thorough tutorial, just a mention of the possibility.
* Using the shell
** More on job control
Fill in job control details not covered earlier, kill -9.
** Environment variables
What they are, how they're inherited. Setting them.
Maybe PAGER as an example, or changing the prompt
** Where commands live
builtins vs. program names, PATH, "type", "whereis"
** Controlling input and output
Stdin, stdout, pipelines, and redirection
** Specifying how and when to run commands
"modifiers" like batch, at, nohup, nice
** Filename expansion
? * 
When to quote and why
* Creating and editing text files
** What's a text file
What's a text file, what they're used for.
Mention that we've already seen some using "less".
** Text editors
Used to create and make changes to a text file.
There are lots.
We'll be using <some editor, which one?> in this tutorial
** Creating and editing a text file
A little tutorial on this.
* Customizing the shell
** aliases and shell functions
How to make shortcuts
** .rc files and ls -a
What they're for, why they're hidden, etc.
** Login shell vs. non-login shell
The difference, which files to edit for each
** Editing .bash_profile
A little tutorial, perhaps set up some common environment variables
or handy aliases.
Use some neat text-editing tricks.
** Setting system-wide defaults
How to edit shell config files in /etc, and the difference between doing
that and doing it in one's own directory.
** Changing your shell
Just mention the possibility, and why one might want to do it.
* The X Window System
(Should this pick a single wm and use it to explain things?)
(I'm putting X here because it seems like people will be eager to get
to a GUI - ???)
** Intro: What is X
Server vs. clients.
** What happens when you start X
/etc/X11/Xsession and .xsession.
Sequence of events.
Customizing .xsession to change window managers.
ls /usr/bin/X11/*wm gives a list of available wm
** Basic X operation
More or less depends on your wm, but cover the constants like
cut and paste; common wm features like desktops and iconification.
** Customizing X
How to customize keymap, concept of X resources What's in
/etc/X11/config (or perhaps just a reference to the /usr/doc/ file on
** Customizing the window manager
A little tutorial. Pretty much have to pick a particular one
to discuss for this section.
* Text tools
head, tail, grep, wc and so on
(I think this should include "Basic Regular Expressions", as they are hard
to learn from a man page.)
* File tools
** Backup tools
tar, cpio, dump
(Perhaps something on how to back up only /home and /etc if you only have
a floppy drive, since many home users won't have a tape drive)
** File compression
gzip and gunzip
** Finding files
find and locate
* Using disks
** Concepts: filesystems, mounting, etc.
** mount (mechanics of it)
How to configure it, just the basics
* Using printers
** lpr and friends
** Setting up printers
* Setting up networking
(single-user dialup or single-user office machine. any other possibilities
we should cover?)
** Relevant files in /etc
Somewhere in the manual we should have "what to do if you accidentally
try to read a binary file and trash your screen". Not sure it's worth
a whole chapter.
We could also mention:
What to do if you have a mono display
A little of the theory behind terminals, terminfo, etc.
* Removing and installing software
(This is in danger of becoming obsolete due to Deity. Will Deity be in
the next release or can we ignore it for now?)
** The dpkg system
How it works, how to get info about a package, how to see what
packages you've installed.
** Where to get packages
Mention non-us packages.
Describe stable vs. unstable distributions.
** Adding software with dselect
** Adding a single package manually
** Compiling software yourself
You'll have to have -dev packages installed.
Put it in /usr/local, /opt, or your home directory.
The configure --prefix; make; make install routine.
** Proprietary software not in .deb format
What to do with this annoying stuff (wrapper packages, /usr/local)
* Contributing to Debian: How can I help?
** Submit bug reports
How to do that with the "bug" package
** Other things
Whatever we want to say here.
* Advanced topics
(Should advanced topics be here? I think it would be nice to have some
of these, just to show people the possibilities and give some
conceptual explanation that won't really be in a reference manual.
Also it always feels nice to make it to a chapter called "advanced
topics." Self-esteem booster for the newbie. :)
** Introduction to shell scripting
*** What and why
Automate simple tasks.
*** A simple example
** Advanced files
*** More on permissions
Whatever was left out of the earlier discussion. Probably setting them
*** Hard links and symbolic links
Can be pulled out of the already-written files stuff.
A useful tip?
*** Large-scale copying
cp -a and variants on the theme.
how to copy an old system to a new one.
** Compiling the kernel
How, what, and why
* Where to from here?
** Other Debian manuals to read
** Other resources
A few good URLs, directions to meta-documents.
* Appendix A: A brief survey of available applications
(Would this be useful? Or does dselect really do the job? It seems
like there are a significant number of debian-user and newsgroup
questions to the effect of "I'm looking for an application that does
X". We could just list what exists, more or less, maybe recommend one
option over another when there's an obvious choice.)
** (Subheadings could copy the structure of the menu system)
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
Trouble? e-mail to firstname.lastname@example.org .