add directory docs
This commit is contained in:
44
docs/FAQ/FAQ/linux-faq.README
Normal file
44
docs/FAQ/FAQ/linux-faq.README
Normal file
@@ -0,0 +1,44 @@
|
||||
This is the new Frequently Asked Questions with Answers list for
|
||||
comp.os.linux.help; please read it for more information about Linux
|
||||
and before posting any questions you may have.
|
||||
|
||||
It is available in this directory in the following formats:
|
||||
linux-faq.ascii 7-bit ASCII text
|
||||
linux-faq.info Emacs Info hypertext document
|
||||
linux-faq.ps PostScript, generated by the Lout text formatter
|
||||
|
||||
It is also available on the World Wide Web at:
|
||||
http://www.cl.cam.ac.uk/users/iwj10/linux-faq/index.html
|
||||
|
||||
The PostScript conforms to the Adobe Document Structuring Conventions,
|
||||
and can therefore be run through programs like the psutils. I
|
||||
recommend that you use psnup, from the psutils[*] package, to print it
|
||||
2 pages to a printed page.
|
||||
|
||||
Also available is
|
||||
linux-faq.source.tar.gz source files and scripts
|
||||
|
||||
This contains the Bizarre Format with No Name source for the FAQ, and
|
||||
the Perl scripts which convert this to ASCII, Emacs Info and input for
|
||||
Jeffrey Kingston's Lout typesetter, and the sh scripts which do the
|
||||
posting and archiving for me. Please be careful not to post a copy of
|
||||
FAQ with these - don't disable the user/hostname safety check !
|
||||
|
||||
[*] Psutils was posted to comp.sources.misc. You should
|
||||
be able to find the source at any c.s.m archive site.
|
||||
|
||||
- Ian Jackson <ijackson@nyx.cs.du.edu> 17th September 1993
|
||||
|
||||
|
||||
Here follows my PGP2 digital signature of the source file
|
||||
linux-faq.source.tar (note that you must gunzip the file before
|
||||
attempting to verify the signature):
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
Version: 2.6
|
||||
|
||||
iQCVAgUALviWl8MWjroj9a3bAQGBiwQAp9p0l8HfGeGY30sMc9pbGlguXM5mVLju
|
||||
HyF/VcEi2B/wlDbdvod9fhp9aVxgcoXqK082erG74sgrE0gGi0z4vXIhrWFtPRPT
|
||||
d95Nb+sEP2JrQDzHr7ZUoNb/1B0nG8Teak3efbiiXPhr7bietlCKXNxxnbq8bbJp
|
||||
Sm9+Z8B/W4k=
|
||||
=RVEv
|
||||
-----END PGP MESSAGE-----
|
||||
2267
docs/FAQ/FAQ/linux-faq.ascii
Normal file
2267
docs/FAQ/FAQ/linux-faq.ascii
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/FAQ/FAQ/linux-faq.info.gz
Normal file
BIN
docs/FAQ/FAQ/linux-faq.info.gz
Normal file
Binary file not shown.
10296
docs/FAQ/FAQ/linux-faq.ps
Normal file
10296
docs/FAQ/FAQ/linux-faq.ps
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/FAQ/FAQ/linux-faq.ps.gz
Normal file
BIN
docs/FAQ/FAQ/linux-faq.ps.gz
Normal file
Binary file not shown.
BIN
docs/FAQ/FAQ/linux-faq.source.tar.gz
Normal file
BIN
docs/FAQ/FAQ/linux-faq.source.tar.gz
Normal file
Binary file not shown.
1618
docs/FAQ/NET-FAQ
Normal file
1618
docs/FAQ/NET-FAQ
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/FAQ/faq_1.pdf
Normal file
BIN
docs/FAQ/faq_1.pdf
Normal file
Binary file not shown.
10484
docs/FAQ/faq_1.ps
Normal file
10484
docs/FAQ/faq_1.ps
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/FAQ/faq_2.pdf
Normal file
BIN
docs/FAQ/faq_2.pdf
Normal file
Binary file not shown.
10528
docs/FAQ/faq_2.ps
Normal file
10528
docs/FAQ/faq_2.ps
Normal file
File diff suppressed because it is too large
Load Diff
256
docs/FAQ/linux-FAQ-first.txt
Normal file
256
docs/FAQ/linux-FAQ-first.txt
Normal file
@@ -0,0 +1,256 @@
|
||||
|
||||
daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/19/91 01:39 (253 lines)
|
||||
Subject: A FAQ is coming...
|
||||
Date: Thu, 19 Dec 91 07:29:21 +0100
|
||||
From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum)
|
||||
To: linux-activists@joker.cs.hut.fi
|
||||
|
||||
Hi Linuxers!
|
||||
|
||||
Following is a FAQ-compilation (most credits to Linus) for Linux.
|
||||
Mail me, if you like it, and mail me, if you dislike it or have
|
||||
any ideas on changing this.
|
||||
|
||||
Thanks in advance,
|
||||
Robert Blum
|
||||
|
||||
|
||||
QUESTION: What is linux?
|
||||
|
||||
ANSWER: Linux is a small unix for 386-AT computers, that has the added
|
||||
advantage of being free. It is still in beta-testing, but is slowly
|
||||
getting useful even for somewhat real developement.
|
||||
|
||||
|
||||
QUESTION: Does it run on my computer?
|
||||
|
||||
ANSWER: Linux has been written on a clone-386, with IDE drives and a VGA
|
||||
screen. It should work on most similar setups. The harddisk should be
|
||||
AT-standard (ie not SCSI, ESDI), and the system must be ISA. Otherwise
|
||||
the requirements seem relatively small: a 386 (SX, DX or any 486). The
|
||||
current version (0.10) needs a colour screen adapter, but this is not
|
||||
the case with the next version.
|
||||
|
||||
It needs at least 2M to run, and 4M is definitely a plus. It can happily
|
||||
use up to 16M (and more if you change some things).
|
||||
|
||||
|
||||
QUESTION: Will linux run on a PC or 286-AT? If not, why?
|
||||
|
||||
ANSWER: Linux uses the 386 chip protected mode functions extensively,
|
||||
and is a true 32-bit operating system. Thus x86 chips, x<3, will simply
|
||||
not run it.
|
||||
|
||||
|
||||
QUESTION: Does linux do paging? Can I have virtual memory on my small
|
||||
machine?
|
||||
|
||||
ANSWER: Linux does use the 386 paging unit, but currently only for
|
||||
memory management. No use of disks as expansion RAM. This is one of the
|
||||
things that will be implemented sometime in the (far?) future. Linux
|
||||
also uses the paging unit to share pages between several processes after
|
||||
a fork: thus it needs less memory. However, almost all the user programs
|
||||
available for linux are GNU software, which want gobs and gobs of
|
||||
memory. This is the reason at least 4M is recommended: GNU cc (gcc)
|
||||
simply won't run in less.
|
||||
|
||||
|
||||
QUESTION: Can I have tasks spanning the full 4GB of addressable 386
|
||||
memory? No more 64kB limits like in coherent or standard minix?
|
||||
|
||||
ANSWER: Linux does limit the task-size, but at a much more reasonable
|
||||
64MB (MEGA-byte, not kilos), so bigger programs are no problem.
|
||||
|
||||
|
||||
QUESTION: Does the bigger program sizes mean I can run X?
|
||||
|
||||
ANSWER: X is not ported to linux, and though I hope it will be some day,
|
||||
I cannot guarantee it. It's big, and wants a lot from the system.
|
||||
|
||||
|
||||
QUESTION: Where can I get linux? Is there a mailserver?
|
||||
|
||||
ANSWER: Linux can be gotten by anonymous ftp from
|
||||
nic.funet.fi (128.214.6.100):
|
||||
directory /pub/OS/Linux
|
||||
Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
|
||||
directory /pub/msdos/replace
|
||||
tsx-11.mit.edu (18.172.1.2):
|
||||
directory /pub/linux
|
||||
ftp.eecs.umich.edu (141.212.99.7):
|
||||
directory linux
|
||||
You might want to check out which of these is the most up-to-date.
|
||||
|
||||
If you don't have ftp-capability, you are in trouble. You might try
|
||||
mailing "mailserver@nic.funet.fi" with "help" in the body of the mail.
|
||||
|
||||
|
||||
QUESTION: Is there a newsgroup or mailing-list about linux? Where can I
|
||||
get my questions answered? How about bug-reports?
|
||||
|
||||
ANSWER: There is a mailing list set up at the address
|
||||
'Linux-activists@niksula.hut.fi'. To join, mail a request to
|
||||
'Linux-activists-request@niksula.hut.fi'. DO NOT mail "I want to
|
||||
[un]subscribe" to the mailing-list, use the request-address.
|
||||
|
||||
Questions and bug-reports can be sent either to the mailing-list or to
|
||||
"torvalds@kruuna.helsinki.fi", depending on which you find more
|
||||
appropriate.
|
||||
|
||||
|
||||
QUESTION: I got the minix-demo, but it won't boot. Linux boots from
|
||||
floppy. What's wrong?
|
||||
|
||||
ANSWER: You probably wrote the minix demo to a 1.44M disk, which (for
|
||||
some unfathomable reason) doesn't work. The minix demo wants a 720kB or
|
||||
1.2M disk.
|
||||
|
||||
|
||||
QUESTION: The minix-demo boots all right, but doesn't seem to recognize
|
||||
my second harddisk. What's up?
|
||||
|
||||
ANSWER: The minix-demo does support a second harddisk, but there are no
|
||||
special files made for it, and the minix demo doesn't include the
|
||||
"mknod" command. Mount the linux root-floppy, and use the devices on
|
||||
that.
|
||||
|
||||
|
||||
QUESTION: How can I be sure I won't be writing over anything important?
|
||||
I have to use DOS in on my machine, and I don't want to lose any files.
|
||||
|
||||
ANSWER: Back up everything. Just in case. Then, write some easily
|
||||
recognizable pattern to the partition you have reserved for linux, using
|
||||
some DOS tool. You can then use "cat /dev/hdX" under minix to examine
|
||||
which of the partitions you used.
|
||||
|
||||
|
||||
QUESTION: Minix mkfs doesn't accept the size I give the device, although
|
||||
I double-checked with fdisk, and it's correct.
|
||||
|
||||
ANSWER: Be sure you give the size in BLOCKS, ie 1024 bytes, not sectors.
|
||||
Also, make doubly certain that you have the correct partition.
|
||||
|
||||
|
||||
QUESTION: I used the minix mkfs to make a filesystem on /dev/hd3 after
|
||||
having checked that this was indeed the partition I had reserved. Minix
|
||||
mounts the new partition ok, but linux doesn't. What gives?
|
||||
|
||||
ANSWER: In some cases partitions are numbered differently under minix
|
||||
and linux. This seems to correlate to the FDISK version you have used.
|
||||
/dev/hd3 under minix may be /dev/hd2 under linux etc.
|
||||
|
||||
There are a few rules about this: /dev/hd0 and /dev/hd5 are always the
|
||||
same under linux and minix. DO NOT USE THEM, they are the whole raw
|
||||
disk, not partitions. Also if a partition is on drive 1 under minix (ie
|
||||
/dev/hd1-4), it is drive 1 under linux as well.
|
||||
|
||||
|
||||
QUESTION: I mounted the linux filesystem, and copied the files from the
|
||||
root-disk to the harddisk. Now I cannot find them any more, and
|
||||
somethimes linux dies with a "panic: trying to free unused inode".
|
||||
|
||||
ANSWER: You have probably forgot to sync before rebooting. Linux, like
|
||||
all unices, use a "buffer cache" to speed up reads and writes to disk.
|
||||
On a machine that has enough memory, this buffer-cache is 1.5MB, and if
|
||||
you forget to sync before exiting, it may not be fully written out to
|
||||
disk. Re-mkfs and re-install (or try to use the preliminary fsck, but
|
||||
remeber that although fsck tries to correct the faults it finds, it may
|
||||
fail.)
|
||||
|
||||
|
||||
QUESTION: the mtools package on the root-disk won't work. I get an
|
||||
ENOENT error message for all devices.
|
||||
|
||||
ANSWER: mtools needs to be told which device to look for. Use 'ln' or
|
||||
'mknod' to create a sepcial file called "/dev/dosX", where X is A, B or
|
||||
C. This file should point to the device you want to read.
|
||||
|
||||
|
||||
QUESTION: Turbo (Microsoft) Assembler won't compile the Linux boot code.
|
||||
In fact, some of the opcodes in these files look completely unfamiliar. Why?
|
||||
|
||||
ANSWER: The Linux boot codes are written in Bruce Evans' minix assembler,
|
||||
which has the same opcodes as the original minix assembler. There are a few
|
||||
differences between these and normal DOS assemblers:
|
||||
|
||||
- No segments - everything is in the same segment (at least in the
|
||||
bootsectors and setup, as they don't use the .data segments)
|
||||
|
||||
- mov[b|w|l] are shorter versions of mov ax,[byte|word|long] ptr [XXX].
|
||||
This is how unix assemblers normally give the size (byte, word or long).
|
||||
Gas has similar constructs.
|
||||
|
||||
- There is no "jmp short", the opcodes are "j" for a short jump and
|
||||
"jmp" for a long one.
|
||||
|
||||
- "jmpi" is a jump with a segment:offset pair. I don't know how this is
|
||||
written in DOS assembly.
|
||||
|
||||
|
||||
QUESTION: While running du I get "Kernel panic: free_inode: bit already
|
||||
cleared". Also, du produces a ENOENT error for all the files in certain
|
||||
of my directories. What's going on?
|
||||
|
||||
ANSWER: These are both consistent with a bad file-system. That's relatively
|
||||
easy to produce by not syncing before rebooting, as linux usually has 1.5MB
|
||||
of buffer space held in memory (unless you have <=4M RAM, in which case
|
||||
the buffers are only about 0.5MB). Also linux doesn't do anything
|
||||
special about the bit-map blocks, and as they are used often, those are
|
||||
the thing most likely to be in memory. If you reboot, and they haven't
|
||||
been written to disk ...
|
||||
|
||||
I'm afraid that as long as there is no fsck for linux there is no way to
|
||||
correct the matter (unless you have minix and can run minix fsck), and
|
||||
the only thing to do is to reinstall the filesystem from scratch (ie do
|
||||
a mkfs from the minix demodisk and reboot from the original
|
||||
linux-floppy).
|
||||
|
||||
A sync is done only every 30 seconds normally (standard unix practice),
|
||||
so do one by hand (some people think you should do 3 syncs after each
|
||||
other, but that's superstition), or by logging out from the
|
||||
startup-shell, which automatically syncs the system. Unmounting a
|
||||
filesystem also syncs it (but of course you can never unmount root).
|
||||
|
||||
Another (sad) possibility is that you have bad blocks on your disk. Not
|
||||
very probable, as they would have to be in the inode-tables, just a
|
||||
couple of blocks in size. Again there aren't programs available to read
|
||||
a disk for bad sectors and put them in some kind of "bad-sector-file".
|
||||
On IDE drives this is no problem (bad sectors are automatically mapped
|
||||
away).
|
||||
|
||||
|
||||
QUESTION: What is the "em" binary?
|
||||
|
||||
ANSWER: Em is micro-EMacs (probably version 3.10).
|
||||
|
||||
QUESTION: I seem to be unable to compile anythong with gcc. Why?
|
||||
|
||||
ANSWER: If you have only 2 MB RAM, gcc will die silently without compiling
|
||||
anything. You must have at least 4 MB to do compilations
|
||||
|
||||
|
||||
QUESTION: I'm using a program that uses signal handlers which are installed
|
||||
using sigaction() with the SA_NOMASK, and they get a general protection
|
||||
error right after the signal handler tries to return. What's going
|
||||
wrong?
|
||||
|
||||
ANSWER: You are using a libc.a that has an out-of-date signal.o and
|
||||
sig_restore.o file, and they don't know how to deal with SA_NOMASK.
|
||||
(The one in gccbin.tar.Z is out-of-date.) You can obtain the newer
|
||||
signal.c from the unistd.tar.Z file, but don't use the associated
|
||||
sig_restore.c from there; the FTP sites should have a separate
|
||||
sig_restore.c which is up to date. While you're at it, you should also
|
||||
get an updated crt0.c file as well, and install your new crt0.o and
|
||||
libc.a in /usr/lib.
|
||||
|
||||
(This answer will likely change in the near future, since there are
|
||||
plans to change the format of the signal trampoline code yet again....
|
||||
but for now, this should be an accurate description of how things stand
|
||||
now.)
|
||||
|
||||
|
||||
QUESTION: gcc complains about not finding crt0.o and the system include files
|
||||
What am i doing wrong ?
|
||||
|
||||
ANSWER: The include files normal place is in /usr/include. libc.a and *.a
|
||||
should be in /usr/lib
|
||||
7926
docs/FAQ/linux-FAQ1.17.txt
Normal file
7926
docs/FAQ/linux-FAQ1.17.txt
Normal file
File diff suppressed because it is too large
Load Diff
3952
docs/FAQ/linux-faq-6.11.92.txt
Normal file
3952
docs/FAQ/linux-faq-6.11.92.txt
Normal file
File diff suppressed because it is too large
Load Diff
2197
docs/FAQ/linux-faq.ascii.txt
Normal file
2197
docs/FAQ/linux-faq.ascii.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/FAQ/linux-faq.pdf
Normal file
BIN
docs/FAQ/linux-faq.pdf
Normal file
Binary file not shown.
9962
docs/FAQ/linux-faq.ps
Normal file
9962
docs/FAQ/linux-faq.ps
Normal file
File diff suppressed because it is too large
Load Diff
84
docs/FAQ/linux.info.FAQ/README
Normal file
84
docs/FAQ/linux.info.FAQ/README
Normal file
@@ -0,0 +1,84 @@
|
||||
|
||||
This is my first attempt at a texinfo version of the
|
||||
Linux FAQ. For now I am calling it version 0.00001 and will
|
||||
release a new version sometime next week which may be worthy
|
||||
to bear the version number 1.0.
|
||||
|
||||
The info format is Gnu's version of hypertext. Alas, I
|
||||
have not had the time to properly add all the cross references
|
||||
and index terms (they will be in v1.0). Also, the TeX (and
|
||||
the info format) are not anywhere near as beautiful as they
|
||||
should be (hopefully, this too will be rectified). I also
|
||||
left off section 7 for now (this includes the LPD and UUCP
|
||||
sections). The reason for all of the above is of course time.
|
||||
I said I'd have this out by Friday and with the abridged
|
||||
edition, it's out a day early.
|
||||
|
||||
I have uploaded two packages to sunsite and tsx-11.
|
||||
You will be able to grab them from sunsite immediately from
|
||||
the incoming directory and will have to figure out where
|
||||
Ted might hide them on tsx-11 (I'd check under /pub/linux/docs/info).
|
||||
The names you will want to look for are linux.info.faq.src.tgz
|
||||
and linux.info.faq.tgz.
|
||||
|
||||
The first linux.info.faq.src.tgz contains 5 texinfo files
|
||||
which you can use to create TeX or info (or ASCII) versions of
|
||||
the FAQ, if you have the texinfo package (from prep.ai.mit.edu ).
|
||||
|
||||
The second linux.info.faq.tgz is for the benefit of
|
||||
those without the texinfo package. It contains a stand alone
|
||||
info browser (compiled with static libc4.4) and the info files
|
||||
created from the above source (as well as info files on how to
|
||||
use info).
|
||||
|
||||
If you have emacs, you can use the built in info viewer to
|
||||
browse the FAQ. This has the advantage that the arrow keys
|
||||
work under Linux, but it is not hard to use without.
|
||||
|
||||
----------
|
||||
I am assuming that if you grabbed the texinfo sources you
|
||||
know what you are doing, so the rest of this file will deal with
|
||||
how to install the linux.info.faq.tgz package.
|
||||
----------
|
||||
|
||||
To install you can:
|
||||
|
||||
1) run the install script (info.install)
|
||||
2) install it by hand which involves putting the info
|
||||
binary somehere in your path and issuing a 'rehash'
|
||||
command and copying the *.info* and 'dir' files to
|
||||
/usr/gnu/info.
|
||||
|
||||
To use info, just type 'info' (or if you haven't installed things yet
|
||||
and just want to check out the FAQ use 'info -f linux-faq.info'). Once
|
||||
you're in info, it's a lot like emacs. If you want to read the FAQ
|
||||
straight through, just keep hitting space, otherwise, you'll need to
|
||||
learn some keys.
|
||||
|
||||
? = key summary
|
||||
h = tutorial (highly recommended)
|
||||
SPACE = move forward a page
|
||||
DEL = move backward a page
|
||||
CTRL-P = previous line
|
||||
CTRL-N = next line
|
||||
CTRL-F = forward char
|
||||
CTRL-b = backward char
|
||||
RETURN = activate menu or cross reference when cursor is on the
|
||||
line containing it
|
||||
m = select menu items by name
|
||||
g = goto node (In this FAQ, all the node numbers are
|
||||
the old subsection numbers, so if you see a reference
|
||||
to section XI, type g XI-00 (the first node in a
|
||||
section with the menu is always 00)).
|
||||
i = search index for term
|
||||
|
||||
For more useful keys, use the built in help.
|
||||
|
||||
Again, I'm sorry this isn't as beautiful as I think it should
|
||||
be. V1.0 should be much better, but I've got other obligations. This
|
||||
version is just to see what people think of it. Send flames, comments,
|
||||
ideas, corrections, and large sums of cash to sdh@po.cwru.edu.
|
||||
|
||||
Scott
|
||||
sdh@po.cwru.edu
|
||||
|
||||
37
docs/FAQ/linux.info.FAQ/dir
Normal file
37
docs/FAQ/linux.info.FAQ/dir
Normal file
@@ -0,0 +1,37 @@
|
||||
-*- Text -*-
|
||||
This is the file .../info/dir, which contains the topmost node of the
|
||||
Info hierarchy. The first time you invoke Info you start off
|
||||
looking at that node, which is (dir)Top.
|
||||
|
||||
File: dir Node: Top This is the top of the INFO tree
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
This (the Directory node) gives a menu of major topics.
|
||||
Typing "d" returns here, "q" exits, "?" lists all INFO commands, "h"
|
||||
gives a primer for first-timers, "mInfo<Return>" visits Info topic, etc.
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* Menu:
|
||||
|
||||
* FAQ: (linux-faq) Linux FAQ
|
||||
|
||||
* CL: (cl). Partial Common Lisp support for Emacs Lisp.
|
||||
* CPP: (cpp). Gnu's C Pre-Processor.
|
||||
* Diff: (diff). Gnu's diff package.
|
||||
* Dosemu: (dosemu). Linux Dos Emulator v0.49.
|
||||
* Emacs: (emacs). The extensible self-documenting text editor.
|
||||
* Forms: (forms). Forms mode is an Emacs package
|
||||
that lets the user edit a data structure
|
||||
by filling in a form.
|
||||
* GCC: (gcc). Gnu's C/C++ Compiler.
|
||||
* GDB: (gdb). Gnu's Debugger.
|
||||
* Gzip: (gzip). Gnu's file compression utilities.
|
||||
* Info: (info). Documentation browsing system.
|
||||
* info: (info-stnd). Stand alone info program.
|
||||
* ISpell: (ispell). Gnu's Spelling Checker.
|
||||
* Makeinfo: (makeinfo). Make an info file from texinfo source.
|
||||
* Perl:(perl). Perl Script Language
|
||||
* Texinfo: (texinfo). How to write a TeXinfo file.
|
||||
* Tar: (tar). Gnu's tape archive system.
|
||||
* VIP: (vip). A VI-emulation for Emacs.
|
||||
|
||||
BIN
docs/FAQ/linux.info.FAQ/info
Normal file
BIN
docs/FAQ/linux.info.FAQ/info
Normal file
Binary file not shown.
1259
docs/FAQ/linux.info.FAQ/info-stnd.info
Normal file
1259
docs/FAQ/linux.info.FAQ/info-stnd.info
Normal file
File diff suppressed because it is too large
Load Diff
777
docs/FAQ/linux.info.FAQ/info.info
Normal file
777
docs/FAQ/linux.info.FAQ/info.info
Normal file
@@ -0,0 +1,777 @@
|
||||
This is Info file info.info, produced by Makeinfo-1.55 from the input
|
||||
file info.texi.
|
||||
|
||||
This file describes how to use Info, the on-line, menu-driven GNU
|
||||
documentation system.
|
||||
|
||||
Copyright (C) 1989, 1992 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
preserved on all copies.
|
||||
|
||||
Permission is granted to copy and distribute modified versions of
|
||||
this manual under the conditions for verbatim copying, provided that
|
||||
the entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be stated in a
|
||||
translation approved by the Free Software Foundation.
|
||||
|
||||
|
||||
File: info.info, Node: Top, Next: Getting Started, Prev: (dir), Up: (dir)
|
||||
|
||||
Info: An Introduction
|
||||
*********************
|
||||
|
||||
Info is a program for reading documentation, which you are using now.
|
||||
|
||||
To learn how to use Info, type the command `h'. It brings you to a
|
||||
programmed instruction sequence.
|
||||
|
||||
To learn advanced Info commands, type `n' twice. This brings you to
|
||||
`Info for Experts', skipping over the . `Getting Started' chapter.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Getting Started::
|
||||
* Advanced Info::
|
||||
* Create an Info File::
|
||||
|
||||
|
||||
File: info.info, Node: Getting Started, Next: Advanced Info, Prev: Top, Up: Top
|
||||
|
||||
Getting Started
|
||||
***************
|
||||
|
||||
This first part of the Info manual describes how to get around inside
|
||||
of Info. The second part of the manual describes various advanced Info
|
||||
commands, and how to write an Info as distinct from a Texinfo file.
|
||||
The third part is about how to generate Info files from Texinfo files.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Help-Small-Screen:: Starting Info on a Small Screen
|
||||
* Help:: How to use Info
|
||||
* Help-P:: Returning to the Previous node
|
||||
* Help-^L:: The Space, Rubout, B and ^L commands.
|
||||
* Help-M:: Menus
|
||||
* Help-Adv:: Some advanced Info commands
|
||||
* Help-Q:: Quitting Info
|
||||
|
||||
|
||||
File: info.info, Node: Help-Small-Screen, Next: Help, Up: Getting Started
|
||||
|
||||
Starting Info on a Small Screen
|
||||
===============================
|
||||
|
||||
Since your terminal has an unusually small number of lines on its
|
||||
screen, it is necessary to give you special advice at the beginning.
|
||||
|
||||
If you see the text `--All----' at near the bottom right corner of
|
||||
the screen, it means the entire text you are looking at fits on the
|
||||
screen. If you see `--Top----' instead, it means that there is more
|
||||
text below that does not fit. To move forward through the text and see
|
||||
another screen full, press the Space bar, SPC. To move back up, press
|
||||
the key labeled `Rubout' or `Delete' or DEL.
|
||||
|
||||
Here are 40 lines of junk, so you can try SPC and DEL and see what
|
||||
they do. At the end are instructions of what you should do next.
|
||||
|
||||
This is line 17
|
||||
This is line 18
|
||||
This is line 19
|
||||
This is line 20
|
||||
This is line 21
|
||||
This is line 22
|
||||
This is line 23
|
||||
This is line 24
|
||||
This is line 25
|
||||
This is line 26
|
||||
This is line 27
|
||||
This is line 28
|
||||
This is line 29
|
||||
This is line 30
|
||||
This is line 31
|
||||
This is line 32
|
||||
This is line 33
|
||||
This is line 34
|
||||
This is line 35
|
||||
This is line 36
|
||||
This is line 37
|
||||
This is line 38
|
||||
This is line 39
|
||||
This is line 40
|
||||
This is line 41
|
||||
This is line 42
|
||||
This is line 43
|
||||
This is line 44
|
||||
This is line 45
|
||||
This is line 46
|
||||
This is line 47
|
||||
This is line 48
|
||||
This is line 49
|
||||
This is line 50
|
||||
This is line 51
|
||||
This is line 52
|
||||
This is line 53
|
||||
This is line 54
|
||||
This is line 55
|
||||
This is line 56
|
||||
If you have managed to get here, go back to the beginning with DEL, and
|
||||
come back here again, then you understand SPC and DEL. So now type an
|
||||
`n'--just one character; do not type the quotes and do not type the
|
||||
Return key, RET, afterward--to get to the normal start of the course.
|
||||
|
||||
|
||||
File: info.info, Node: Help, Next: Help-P, Prev: Help-Small-Screen, Up: Getting Started
|
||||
|
||||
How to use Info
|
||||
===============
|
||||
|
||||
You are talking to the program Info, for reading documentation.
|
||||
|
||||
Right now you are looking at one "Node" of Information. A node
|
||||
contains text describing a specific topic at a specific level of
|
||||
detail. This node's topic is "how to use Info".
|
||||
|
||||
The top line of a node is its "header". This node's header (look at
|
||||
it now) says that it is the node named `Help' in the file `info'. It
|
||||
says that the `Next' node after this one is the node called `Help-P'.
|
||||
An advanced Info command lets you go to any node whose name you know.
|
||||
|
||||
Besides a `Next', a node can have a `Previous' or an `Up'. This
|
||||
node has a `Previous' but no `Up', as you can see.
|
||||
|
||||
Now it is time to move on to the `Next' node, named `Help-P'.
|
||||
|
||||
>> Type `n' to move there. Type just one character; do not type
|
||||
the quotes and do not type a RET afterward.
|
||||
|
||||
`>>' in the margin means it is really time to try a command.
|
||||
|
||||
|
||||
File: info.info, Node: Help-P, Next: Help-^L, Prev: Help, Up: Getting Started
|
||||
|
||||
Returning to the Previous node
|
||||
==============================
|
||||
|
||||
This node is called `Help-P'. The `Previous' node, as you see, is
|
||||
`Help', which is the one you just came from using the `n' command.
|
||||
Another `n' command now would take you to the next node, `Help-^L'.
|
||||
|
||||
>> But do not do that yet. First, try the `p' command, which takes
|
||||
you to the `Previous' node. When you get there, you can do an `n'
|
||||
again to return here.
|
||||
|
||||
This all probably seems insultingly simple so far, but *do not* be
|
||||
led into skimming. Things will get more complicated soon. Also, do
|
||||
not try a new command until you are told it is time to. Otherwise, you
|
||||
may make Info skip past an important warning that was coming up.
|
||||
|
||||
>> Now do an `n' to get to the node `Help-^L' and learn more.
|
||||
|
||||
|
||||
File: info.info, Node: Help-^L, Next: Help-M, Prev: Help-P, Up: Getting Started
|
||||
|
||||
The Space, Rubout, B and ^L commands.
|
||||
=====================================
|
||||
|
||||
This node's header tells you that you are now at node `Help-^L', and
|
||||
that `p' would get you back to `Help-P'. The node's title is
|
||||
underlined; it says what the node is about (most nodes have titles).
|
||||
|
||||
This is a big node and it does not all fit on your display screen.
|
||||
You can tell that there is more that is not visible because you can see
|
||||
the string `--Top-----' rather than `--All----' near the bottom right
|
||||
corner of the screen.
|
||||
|
||||
The SPC, DEL and `b' commands exist to allow you to "move around" in
|
||||
a node that does not all fit on the screen at once. SPC moves forward,
|
||||
to show what was below the bottom of the screen. DEL moves backward,
|
||||
to show what was above the top of the screen (there is not anything
|
||||
above the top until you have typed some spaces).
|
||||
|
||||
>> Now try typing a SPC (afterward, type a DEL to return here).
|
||||
|
||||
When you type the SPC, the two lines that were at the bottom of the
|
||||
screen appear at the top, followed by more lines. DEL takes the two
|
||||
lines from the top and moves them to the bottom, *usually*, but if
|
||||
there are not a full screen's worth of lines above them they may not
|
||||
make it all the way to the bottom.
|
||||
|
||||
If you type a SPC when there is no more to see, it rings the bell
|
||||
and otherwise does nothing. The same goes for a DEL when the header of
|
||||
the node is visible.
|
||||
|
||||
If your screen is ever garbaged, you can tell Info to print it out
|
||||
again by typing `C-l' (`Control-L', that is--hold down "Control" and
|
||||
type an L or `l').
|
||||
|
||||
>> Type `C-l' now.
|
||||
|
||||
To move back to the beginning of the node you are on, you can type a
|
||||
lot of DELs. You can also type simply `b' for beginning.
|
||||
|
||||
>> Try that now. (I have put in enough verbiage to make sure you are
|
||||
not on the first screenful now). Then come back, typing SPC
|
||||
several times.
|
||||
|
||||
You have just learned a considerable number of commands. If you
|
||||
want to use one but have trouble remembering which, you should type a ?
|
||||
which prints out a brief list of commands. When you are finished
|
||||
looking at the list, make it go away by typing a SPC.
|
||||
|
||||
>> Type a ? now. After it finishes, type a SPC.
|
||||
|
||||
(If you are using the standalone Info reader, type `l' to return
|
||||
here.)
|
||||
|
||||
From now on, you will encounter large nodes without warning, and
|
||||
will be expected to know how to use SPC and DEL to move around in them
|
||||
without being told. Since not all terminals have the same size screen,
|
||||
it would be impossible to warn you anyway.
|
||||
|
||||
>> Now type `n' to see the description of the `m' command.
|
||||
|
||||
|
||||
File: info.info, Node: Help-M, Next: Help-Adv, Prev: Help-^L, Up: Getting Started
|
||||
|
||||
Menus
|
||||
=====
|
||||
|
||||
Menus and the `m' command
|
||||
|
||||
With only the `n' and `p' commands for moving between nodes, nodes
|
||||
are restricted to a linear sequence. Menus allow a branching
|
||||
structure. A menu is a list of other nodes you can move to. It is
|
||||
actually just part of the text of the node formatted specially so that
|
||||
Info can interpret it. The beginning of a menu is always identified by
|
||||
a line which starts with `* Menu:'. A node contains a menu if and only
|
||||
if it has a line in it which starts that way. The only menu you can
|
||||
use at any moment is the one in the node you are in. To use a menu in
|
||||
any other node, you must move to that node first.
|
||||
|
||||
After the start of the menu, each line that starts with a `*'
|
||||
identifies one subtopic. The line usually contains a brief name for
|
||||
the subtopic (followed by a `:'), the name of the node that talks about
|
||||
that subtopic, and optionally some further description of the subtopic.
|
||||
Lines in the menu that do not start with a `*' have no special
|
||||
meaning--they are only for the human reader's benefit and do not define
|
||||
additional subtopics. Here is an example:
|
||||
|
||||
* Foo: FOO's Node This tells about FOO
|
||||
|
||||
The subtopic name is Foo, and the node describing it is `FOO's Node'.
|
||||
The rest of the line is just for the reader's Information. [[ But this
|
||||
line is not a real menu item, simply because there is no line above it
|
||||
which starts with `* Menu:'.]]
|
||||
|
||||
When you use a menu to go to another node (in a way that will be
|
||||
described soon), what you specify is the subtopic name, the first thing
|
||||
in the menu line. Info uses it to find the menu line, extracts the
|
||||
node name from it, and goes to that node. The reason that there is
|
||||
both a subtopic name and a node name is that the node name must be
|
||||
meaningful to the computer and may therefore have to be ugly looking.
|
||||
The subtopic name can be chosen just to be convenient for the user to
|
||||
specify. Often the node name is convenient for the user to specify and
|
||||
so both it and the subtopic name are the same. There is an
|
||||
abbreviation for this:
|
||||
|
||||
* Foo:: This tells about FOO
|
||||
|
||||
This means that the subtopic name and node name are the same; they are
|
||||
both `Foo'.
|
||||
|
||||
>> Now use SPCs to find the menu in this node, then come back to
|
||||
the front with a `b'. As you see, a menu is actually visible in its
|
||||
node. If you cannot find a menu in a node by looking at it, then
|
||||
the node does not have a menu and the `m' command is not available.
|
||||
|
||||
The command to go to one of the subnodes is `m'--but *do not do it
|
||||
yet!* Before you use `m', you must understand the difference between
|
||||
commands and arguments. So far, you have learned several commands that
|
||||
do not need arguments. When you type one, Info processes it and is
|
||||
instantly ready for another command. The `m' command is different: it
|
||||
is incomplete without the "name of the subtopic". Once you have typed
|
||||
`m', Info tries to read the subtopic name.
|
||||
|
||||
Now look for the line containing many dashes near the bottom of the
|
||||
screen. There is one more line beneath that one, but usually it is
|
||||
blank If it is empty, Info is ready for a command, such as `n' or `b'
|
||||
or SPC or `m'. If that line contains text ending in a colon, it mean
|
||||
Info is trying to read the "argument" to a command. At such times,
|
||||
commands do not work, because Info tries to use them as the argument.
|
||||
You must either type the argument and finish the command you started,
|
||||
or type `Control-g' to cancel the command. When you have done one of
|
||||
those things, the line becomes blank again.
|
||||
|
||||
The command to go to a subnode via a menu is `m'. After you type
|
||||
the `m', the line at the bottom of the screen says `Menu item: '. You
|
||||
must then type the name of the subtopic you want, and end it with a RET.
|
||||
|
||||
You can abbreviate the subtopic name. If the abbreviation is not
|
||||
unique, the first matching subtopic is chosen. Some menus put the
|
||||
shortest possible abbreviation for each subtopic name in capital
|
||||
letters, so you can see how much you need to type. It does not matter
|
||||
whether you use upper case or lower case when you type the subtopic.
|
||||
You should not put any spaces at the end, or inside of the item name,
|
||||
except for one space where a space appears in the item in the menu.
|
||||
|
||||
Here is a menu to give you a chance to practice.
|
||||
|
||||
* Menu: The menu starts here.
|
||||
|
||||
This menu givs you three ways of going to one place, Help-FOO.
|
||||
|
||||
* Foo: Help-FOO. A node you can visit for fun.
|
||||
* Bar: Help-FOO. Strange! two ways to get to the same place.
|
||||
* Help-FOO:: And yet another!
|
||||
>> Now type just an `m' and see what happens:
|
||||
|
||||
Now you are "inside" an `m' command. Commands cannot be used now;
|
||||
the next thing you will type must be the name of a subtopic.
|
||||
|
||||
You can change your mind about doing the `m' by typing Control-g.
|
||||
|
||||
>> Try that now; notice the bottom line clear.
|
||||
|
||||
>> Then type another `m'.
|
||||
|
||||
>> Now type `BAR' item name. Do not type RET yet.
|
||||
|
||||
While you are typing the item name, you can use the DEL character to
|
||||
cancel one character at a time if you make a mistake.
|
||||
|
||||
>> Type one to cancel the `R'. You could type another `R' to
|
||||
replace it. You do not have to, since `BA' is a valid abbreviation.
|
||||
|
||||
>> Now you are ready to go. Type a RET.
|
||||
|
||||
After visiting Help-FOO, you should return here.
|
||||
|
||||
>> Type `n' to see more commands.
|
||||
|
||||
Here is another way to get to Help-FOO, a menu. You can ignore this
|
||||
if you want, or else try it (but then please come back to here).
|
||||
|
||||
* Menu:
|
||||
|
||||
* Help-FOO::
|
||||
|
||||
|
||||
File: info.info, Node: Help-FOO, Up: Help-M
|
||||
|
||||
The `u' command
|
||||
---------------
|
||||
|
||||
Congratulations! This is the node `Help-FOO'. Unlike the other
|
||||
nodes you have seen, this one has an `Up': `Help-M', the node you just
|
||||
came from via the `m' command. This is the usual convention--the nodes
|
||||
you reach from a menu have `Up' nodes that lead back to the menu.
|
||||
Menus move Down in the tree, and `Up' moves Up. `Previous', on the
|
||||
other hand, is usually used to "stay on the same level but go backwards"
|
||||
|
||||
You can go back to the node `Help-M' by typing the command `u' for
|
||||
"Up". That puts you at the *front* of the node--to get back to where
|
||||
you were reading you have to type some SPCs.
|
||||
|
||||
>> Now type `u' to move back up to `Help-M'.
|
||||
|
||||
|
||||
File: info.info, Node: Help-Adv, Next: Help-Q, Prev: Help-M, Up: Getting Started
|
||||
|
||||
Some advanced Info commands
|
||||
===========================
|
||||
|
||||
The course is almost over, so please stick with it to the end.
|
||||
|
||||
If you have been moving around to different nodes and wish to
|
||||
retrace your steps, the `l' command (`l' for "last") will do that, one
|
||||
node at a time. If you have been following directions, an `l' command
|
||||
now will get you back to `Help-M'. Another `l' command would undo the
|
||||
`u' and get you back to `Help-FOO'. Another `l' would undo the `m' and
|
||||
get you back to `Help-M'.
|
||||
|
||||
>> Try typing three `l''s, pausing in between to see what each
|
||||
`l' does.
|
||||
|
||||
Then follow directions again and you will end up back here.
|
||||
|
||||
Note the difference between `l' and `p': `l' moves to where *you*
|
||||
last were, whereas `p' always moves to the node which the header says
|
||||
is the `Previous' node (from this node, to `Help-M').
|
||||
|
||||
The `d' command gets you instantly to the Directory node. This
|
||||
node, which is the first one you saw when you entered Info, has a menu
|
||||
which leads (directly, or indirectly through other menus), to all the
|
||||
nodes that exist.
|
||||
|
||||
>> Try doing a `d', then do an `l' to return here (yes, *do*
|
||||
return).
|
||||
|
||||
Sometimes, in Info documentation, you will see a cross reference.
|
||||
Cross references look like this: *Note Cross: Help-Cross. That is a
|
||||
real, live cross reference which is named `Cross' and points at the
|
||||
node named `Help-Cross'.
|
||||
|
||||
If you wish to follow a cross reference, you must use the `f'
|
||||
command. The `f' must be followed by the cross reference name (in this
|
||||
case, `Cross'). You can use DEL to edit the name, and if you change
|
||||
your mind about following any reference you can use `Control-g' to
|
||||
cancel the command.
|
||||
|
||||
Completion is available in the `f' command; you can complete among
|
||||
all the cross reference names in the current node.
|
||||
|
||||
>> Type `f', followed by `Cross', and a RET.
|
||||
|
||||
To get a list of all the cross references in the current node, you
|
||||
can type `?' after an `f'. The `f' continues to await a cross
|
||||
reference name even after printing the list, so if you do not actually
|
||||
want to follow a reference you should type a `Control-g' to cancel the
|
||||
`f'.
|
||||
|
||||
>> Type "f?" to get a list of the footnotes in this node. Then type
|
||||
a `Control-g' and see how the `f' gives up.
|
||||
|
||||
>> Now type `n' to see the last node of the course.
|
||||
|
||||
|
||||
File: info.info, Node: Help-Cross, Up: Help-Adv
|
||||
|
||||
The node reached by the cross reference in Info
|
||||
-----------------------------------------------
|
||||
|
||||
This is the node reached by the cross reference named `Cross'.
|
||||
|
||||
While this node is specifically intended to be reached by a cross
|
||||
reference, most cross references lead to nodes that "belong" someplace
|
||||
else far away in the structure of Info. So you cannot expect the
|
||||
footnote to have a `Next', `Previous' or `Up' pointing back to where
|
||||
you came from. In general, the `l' (el) command is the only way to get
|
||||
back there.
|
||||
|
||||
>> Type `l' to return to the node where the cross reference was.
|
||||
|
||||
|
||||
File: info.info, Node: Help-Q, Prev: Help-Adv, Up: Getting Started
|
||||
|
||||
Quitting Info
|
||||
=============
|
||||
|
||||
To get out of Info, back to what you were doing before, type `q' for
|
||||
"Quit".
|
||||
|
||||
This is the end of the course on using Info. There are some other
|
||||
commands that are not essential or are meant for experienced users;
|
||||
they are useful, and you can find them by looking in the directory for
|
||||
documentation on Info. Finding them will be a good exercise in using
|
||||
Info in the usual manner.
|
||||
|
||||
>> Type `d' to go to the Info directory node; then type `mInfo'
|
||||
and RET, to get to the node about Info and see what other help is
|
||||
available.
|
||||
|
||||
|
||||
File: info.info, Node: Advanced Info, Next: Create an Info File, Prev: Getting Started, Up: Top
|
||||
|
||||
Info for Experts
|
||||
****************
|
||||
|
||||
This chapter describes various advanced Info commands, and how to
|
||||
write an Info as distinct from a Texinfo file. (However, in most
|
||||
cases, writing a Texinfo file is better, since you can use it *both* to
|
||||
generate an Info file and to make a printed manual. *Note Overview of
|
||||
Texinfo: (texinfo)Top.)
|
||||
|
||||
* Menu:
|
||||
|
||||
* Expert:: Advanced Info commands: g, s, e, and 1 - 5.
|
||||
* Add:: Describes how to add new nodes to the hierarchy.
|
||||
Also tells what nodes look like.
|
||||
* Menus:: How to add to or create menus in Info nodes.
|
||||
* Cross-refs:: How to add cross-references to Info nodes.
|
||||
* Tags:: How to make tag tables for Info files.
|
||||
* Checking:: Checking an Info File
|
||||
|
||||
|
||||
File: info.info, Node: Expert, Next: Add, Up: Advanced Info
|
||||
|
||||
Advanced Info Commands
|
||||
======================
|
||||
|
||||
`g', `s', `1', - `5', and `e'
|
||||
|
||||
If you know a node's name, you can go there by typing `g', the name,
|
||||
and RET. Thus, `gTopRET' would go to the node called `Top' in this
|
||||
file (its directory node). `gExpertRET' would come back here.
|
||||
|
||||
Unlike `m', `g' does not allow the use of abbreviations.
|
||||
|
||||
To go to a node in another file, you can include the filename in the
|
||||
node name by putting it at the front, in parentheses. Thus,
|
||||
`g(dir)TopRET' would go to the Info Directory node, which is node `Top'
|
||||
in the file `dir'.
|
||||
|
||||
The node name `*' specifies the whole file. So you can look at all
|
||||
of the current file by typing `g*RET' or all of any other file with
|
||||
`g(FILENAME)RET'.
|
||||
|
||||
The `s' command allows you to search a whole file for a string. It
|
||||
switches to the next node if and when that is necessary. You type `s'
|
||||
followed by the string to search for, terminated by RET. To search for
|
||||
the same string again, just `s' followed by RET will do. The file's
|
||||
nodes are scanned in the order they are in in the file, which has no
|
||||
necessary relationship to the order that they may be in in the tree
|
||||
structure of menus and `next' pointers. But normally the two orders
|
||||
are not very different. In any case, you can always do a `b' to find
|
||||
out what node you have reached, if the header is not visible (this can
|
||||
happen, because `s' puts your cursor at the occurrence of the string,
|
||||
not at the beginning of the node).
|
||||
|
||||
If you grudge the system each character of type-in it requires, you
|
||||
might like to use the commands `1', `2', `3', `4', and `5'. They are
|
||||
short for the `m' command together with an argument. "1", "2", "3",
|
||||
"4", and "5". `1' goes through the first item in the current node's
|
||||
menu; `2' goes through the second item, etc. Note that numbers larger
|
||||
than 5 are not allowed. If the item you want is that far down, you are
|
||||
better off using an abbreviation for its name than counting.
|
||||
|
||||
The Info command `e' changes from Info mode to an ordinary Emacs
|
||||
editing mode, so that you can edit the text of the current node. Type
|
||||
`C-c C-c' to switch back to Info. The `e' command is allowed only if
|
||||
the variable `Info-enable-edit' is non-`nil'.
|
||||
|
||||
|
||||
File: info.info, Node: Add, Next: Menus, Prev: Expert, Up: Advanced Info
|
||||
|
||||
Adding a new node to Info
|
||||
=========================
|
||||
|
||||
To add a new topic to the list in the directory, you must:
|
||||
|
||||
1. Create a node, in some file, to document that topic.
|
||||
|
||||
2. Put that topic in the menu in the directory. *Note Menu: Menus.
|
||||
|
||||
The new node can live in an existing documentation file, or in a new
|
||||
one. It must have a ^_ character before it (invisible to the user;
|
||||
this node has one but you cannot see it), and it ends with either a ^_,
|
||||
a ^L, or the end of file. Note: If you put in a ^L to end a new node,
|
||||
be sure that there is a ^_ after it to start the next one, since ^L
|
||||
cannot *start* a node. Also, a nicer way to make a node boundary be a
|
||||
page boundary as well is to put a ^L *right after* the ^_.
|
||||
|
||||
The ^_ starting a node must be followed by a newline or a ^L
|
||||
newline, after which comes the node's header line. The header line
|
||||
must give the node's name (by which Info finds it), and state the names
|
||||
of the `Next', `Previous', and `Up' nodes (if there are any). As you
|
||||
can see, this node's `Up' node is the node `Top', which points at all
|
||||
the documentation for Info. The `Next' node is `Menus'.
|
||||
|
||||
The keywords "Node", "Previous", "Up" and "Next", may appear in any
|
||||
order, anywhere in the header line, but the recommended order is the
|
||||
one in this sentence. Each keyword must be followed by a colon, spaces
|
||||
and tabs, and then the appropriate name. The name may be terminated
|
||||
with a tab, a comma, or a newline. A space does not end it; node names
|
||||
may contain spaces. The case of letters in the names is insignificant.
|
||||
|
||||
A node name has two forms. A node in the current file is named by
|
||||
what appears after the `Node: ' in that node's first line. For
|
||||
example, this node's name is `Add'. A node in another file is named by
|
||||
`(FILENAME)NODE-WITHIN-FILE', as in `(info)Add' for this node. If the
|
||||
file name is relative, it is taken starting from the standard Info file
|
||||
directory of your site. The name `(FILENAME)Top' can be abbreviated to
|
||||
just `(FILENAME)'. By convention, the name `Top' is used for the
|
||||
"highest" node in any single file--the node whose `Up' points out of
|
||||
the file. The Directory node is `(dir)'. The `Top' node of a document
|
||||
file listed in the Directory should have an `Up: (dir)' in it.
|
||||
|
||||
The node name `*' is special: it refers to the entire file. Thus,
|
||||
`g*' shows you the whole current file. The use of the node `*' is to
|
||||
make it possible to make old-fashioned, unstructured files into nodes
|
||||
of the tree.
|
||||
|
||||
The `Node:' name, in which a node states its own name, must not
|
||||
contain a filename, since Info when searching for a node does not
|
||||
expect one to be there. The `Next', `Previous' and `Up' names may
|
||||
contain them. In this node, since the `Up' node is in the same file,
|
||||
it was not necessary to use one.
|
||||
|
||||
Note that the nodes in this file have a file name in the header
|
||||
line. The file names are ignored by Info, but they serve as comments
|
||||
to help identify the node for the user.
|
||||
|
||||
|
||||
File: info.info, Node: Menus, Next: Cross-refs, Prev: Add, Up: Advanced Info
|
||||
|
||||
How to Create Menus
|
||||
===================
|
||||
|
||||
Any node in the Info hierarchy may have a "menu"--a list of subnodes.
|
||||
The `m' command searches the current node's menu for the topic which it
|
||||
reads from the terminal.
|
||||
|
||||
A menu begins with a line starting with `* Menu:'. The rest of the
|
||||
line is a comment. After the starting line, every line that begins
|
||||
with a `* ' lists a single topic. The name of the topic-the argument
|
||||
that the user must give to the `m' command to select this topic--comes
|
||||
right after the star and space, and is followed by a colon, spaces and
|
||||
tabs, and the name of the node which discusses that topic. The node
|
||||
name, like node names following `Next', `Previous' and `Up', may be
|
||||
terminated with a tab, comma, or newline; it may also be terminated
|
||||
with a period.
|
||||
|
||||
If the node name and topic name are the same, than rather than
|
||||
giving the name twice, the abbreviation `* NAME::' may be used (and
|
||||
should be used, whenever possible, as it reduces the visual clutter in
|
||||
the menu).
|
||||
|
||||
It is considerate to choose the topic names so that they differ from
|
||||
each other very near the beginning--this allows the user to type short
|
||||
abbreviations. In a long menu, it is a good idea to capitalize the
|
||||
beginning of each item name which is the minimum acceptable
|
||||
abbreviation for it (a long menu is more than 5 or so entries).
|
||||
|
||||
The nodes listed in a node's menu are called its "subnodes", and it
|
||||
is their "superior". They should each have an `Up:' pointing at the
|
||||
superior. It is often useful to arrange all or most of the subnodes in
|
||||
a sequence of `Next' and `Previous' pointers so that someone who wants
|
||||
to see them all need not keep revisiting the Menu.
|
||||
|
||||
The Info Directory is simply the menu of the node `(dir)Top'--that
|
||||
is, node `Top' in file `.../info/dir'. You can put new entries in that
|
||||
menu just like any other menu. The Info Directory is *not* the same as
|
||||
the file directory called `info'. It happens that many of Info's files
|
||||
live on that file directory, but they do not have to; and files on that
|
||||
directory are not automatically listed in the Info Directory node.
|
||||
|
||||
Also, although the Info node graph is claimed to be a "hierarchy",
|
||||
in fact it can be *any* directed graph. Shared structures and pointer
|
||||
cycles are perfectly possible, and can be used if they are appropriate
|
||||
to the meaning to be expressed. There is no need for all the nodes in
|
||||
a file to form a connected structure. In fact, this file has two
|
||||
connected components. You are in one of them, which is under the node
|
||||
`Top'; the other contains the node `Help' which the `h' command goes
|
||||
to. In fact, since there is no garbage collector, nothing terrible
|
||||
happens if a substructure is not pointed to, but such a substructure is
|
||||
rather useless since nobody can ever find out that it exists.
|
||||
|
||||
|
||||
File: info.info, Node: Cross-refs, Next: Tags, Prev: Menus, Up: Advanced Info
|
||||
|
||||
Creating Cross References
|
||||
=========================
|
||||
|
||||
A cross reference can be placed anywhere in the text, unlike a menu
|
||||
item which must go at the front of a line. A cross reference looks
|
||||
like a menu item except that it has `*note' instead of `*'. It
|
||||
*cannot* be terminated by a `)', because `)''s are so often part of
|
||||
node names. If you wish to enclose a cross reference in parentheses,
|
||||
terminate it with a period first. Here are two examples of cross
|
||||
references pointers:
|
||||
|
||||
*Note details: commands. (See *note 3: Full Proof.)
|
||||
|
||||
They are just examples. The places they "lead to" do not really
|
||||
exist!
|
||||
|
||||
|
||||
File: info.info, Node: Tags, Next: Checking, Prev: Cross-refs, Up: Advanced Info
|
||||
|
||||
Tag Tables for Info Files
|
||||
=========================
|
||||
|
||||
You can speed up the access to nodes of a large Info file by giving
|
||||
it a tag table. Unlike the tag table for a program, the tag table for
|
||||
an Info file lives inside the file itself and is used automatically
|
||||
whenever Info reads in the file.
|
||||
|
||||
To make a tag table, go to a node in the file using Emacs Info mode
|
||||
and type `M-x Info-tagify'. Then you must use `C-x C-s' to save the
|
||||
file.
|
||||
|
||||
Once the Info file has a tag table, you must make certain it is up
|
||||
to date. If, as a result of deletion of text, any node moves back more
|
||||
than a thousand characters in the file from the position recorded in
|
||||
the tag table, Info will no longer be able to find that node. To
|
||||
update the tag table, use the `Info-tagify' command again.
|
||||
|
||||
An Info file tag table appears at the end of the file and looks like
|
||||
this:
|
||||
|
||||
^_
|
||||
Tag Table:
|
||||
File: info, Node: Cross-refs^?21419
|
||||
File: info, Node: Tags^?22145
|
||||
^_
|
||||
End Tag Table
|
||||
|
||||
Note that it contains one line per node, and this line contains the
|
||||
beginning of the node's header (ending just after the node name), a DEL
|
||||
character, and the character position in the file of the beginning of
|
||||
the node.
|
||||
|
||||
|
||||
File: info.info, Node: Checking, Prev: Tags, Up: Advanced Info
|
||||
|
||||
Checking an Info File
|
||||
=====================
|
||||
|
||||
When creating an Info file, it is easy to forget the name of a node
|
||||
when you are making a pointer to it from another node. If you put in
|
||||
the wrong name for a node, this is not detected until someone tries to
|
||||
go through the pointer using Info. Verification of the Info file is an
|
||||
automatic process which checks all pointers to nodes and reports any
|
||||
pointers which are invalid. Every `Next', `Previous', and `Up' is
|
||||
checked, as is every menu item and every cross reference. In addition,
|
||||
any `Next' which does not have a `Previous' pointing back is reported.
|
||||
Only pointers within the file are checked, because checking pointers to
|
||||
other files would be terribly slow. But those are usually few.
|
||||
|
||||
To check an Info file, do `M-x Info-validate' while looking at any
|
||||
node of the file with Emacs Info mode.
|
||||
|
||||
|
||||
File: info.info, Node: Create an Info File, Prev: Advanced Info, Up: Top
|
||||
|
||||
Creating an Info File from a Makeinfo file
|
||||
******************************************
|
||||
|
||||
`makeinfo' is a utility that converts a Texinfo file into an Info
|
||||
file; `texinfo-format-region' and `texinfo-format-buffer' are GNU Emacs
|
||||
functions that do the same.
|
||||
|
||||
*Note Creating an Info File: (texinfo)Create an Info File, to learn
|
||||
how to create an Info file from a Texinfo file.
|
||||
|
||||
*Note Overview of Texinfo: (texinfo)Top, to learn how to write a
|
||||
Texinfo file.
|
||||
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top913
|
||||
Node: Getting Started1431
|
||||
Node: Help-Small-Screen2179
|
||||
Node: Help3921
|
||||
Node: Help-P4949
|
||||
Node: Help-^L5811
|
||||
Node: Help-M8462
|
||||
Node: Help-FOO14030
|
||||
Node: Help-Adv14766
|
||||
Node: Help-Cross17148
|
||||
Node: Help-Q17794
|
||||
Node: Advanced Info18434
|
||||
Node: Expert19330
|
||||
Node: Add21601
|
||||
Node: Menus24635
|
||||
Node: Cross-refs27509
|
||||
Node: Tags28211
|
||||
Node: Checking29510
|
||||
Node: Create an Info File30434
|
||||
|
||||
End Tag Table
|
||||
10
docs/FAQ/linux.info.FAQ/info.install
Normal file
10
docs/FAQ/linux.info.FAQ/info.install
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
OWNER=root.system
|
||||
chown $OWNER info
|
||||
chmod 755 info
|
||||
cp info /usr/bin
|
||||
mkdir /usr/gnu
|
||||
mkdir /usr/gnu/info
|
||||
chown $OWNER *.info* dir
|
||||
chmod 644 *.info* dir
|
||||
cp *.info* dir /usr/gun/info
|
||||
362
docs/FAQ/linux.info.FAQ/linux-faq.info
Normal file
362
docs/FAQ/linux.info.FAQ/linux-faq.info
Normal file
@@ -0,0 +1,362 @@
|
||||
This is Info file linux-faq.info, produced by Makeinfo-1.55 from the
|
||||
input file faq.texi.
|
||||
|
||||
Answers to Frequently asked questions about Linux (v1.19) Last
|
||||
Modified 93/06/11 v1.19
|
||||
|
||||
|
||||
Indirect:
|
||||
linux-faq.info-1: 182
|
||||
linux-faq.info-2: 49795
|
||||
linux-faq.info-3: 96261
|
||||
linux-faq.info-4: 146221
|
||||
linux-faq.info-5: 196205
|
||||
linux-faq.info-6: 245758
|
||||
linux-faq.info-7: 295314
|
||||
|
||||
Tag Table:
|
||||
(Indirect)
|
||||
Node: Top182
|
||||
Node: 0-001645
|
||||
Node: Authors1990
|
||||
Node: FAQ Introduction3961
|
||||
Node: Other Help6361
|
||||
Node: Books6701
|
||||
Node: 0-017277
|
||||
Node: I-0010836
|
||||
Node: I-0112745
|
||||
Node: I-0213898
|
||||
Node: I-0314857
|
||||
Node: I-0415331
|
||||
Node: I-0516432
|
||||
Node: I-0617771
|
||||
Node: I-0718629
|
||||
Node: I-0820812
|
||||
Node: I-0921238
|
||||
Node: I-1021583
|
||||
Node: I-1121791
|
||||
Node: I-1222281
|
||||
Node: I-1322803
|
||||
Node: I-1423583
|
||||
Node: I-1524056
|
||||
Node: I-1625100
|
||||
Node: I-1725557
|
||||
Node: I-1826255
|
||||
Node: I-1926469
|
||||
Node: I-2026937
|
||||
Node: I-2127305
|
||||
Node: I-2227737
|
||||
Node: I-2327985
|
||||
Node: I-2428862
|
||||
Node: I-2529749
|
||||
Node: II-0032036
|
||||
Node: IIA-0032290
|
||||
Node: II-0133117
|
||||
Node: II-0235654
|
||||
Node: II-0336992
|
||||
Node: II-0438054
|
||||
Node: II-0543219
|
||||
Node: II-0644326
|
||||
Node: II-0744909
|
||||
Node: II-0845316
|
||||
Node: II-0947563
|
||||
Node: IIB-0048477
|
||||
Node: II-1049521
|
||||
Node: II-1149795
|
||||
Node: II-1250386
|
||||
Node: II-1350948
|
||||
Node: II-1451452
|
||||
Node: II-1551890
|
||||
Node: II-1654205
|
||||
Node: II-1755753
|
||||
Node: II-1873821
|
||||
Node: III-0074241
|
||||
Node: IIIA-0074876
|
||||
Node: III-0175193
|
||||
Node: III-0277564
|
||||
Node: IIIB-0078232
|
||||
Node: III-0378858
|
||||
Node: III-0482504
|
||||
Node: III-0582999
|
||||
Node: III-0685571
|
||||
Node: III-0788287
|
||||
Node: III-0891062
|
||||
Node: IIIC-0091941
|
||||
Node: III-0994583
|
||||
Node: III-1096261
|
||||
Node: III-11102651
|
||||
Node: III-12103148
|
||||
Node: III-13104140
|
||||
Node: III-14104938
|
||||
Node: III-15105987
|
||||
Node: III-16106741
|
||||
Node: III-17107390
|
||||
Node: III-18108388
|
||||
Node: III-19110185
|
||||
Node: III-20110900
|
||||
Node: III-21111295
|
||||
Node: III-22114986
|
||||
Node: III-23116779
|
||||
Node: III-24117778
|
||||
Node: III-25118690
|
||||
Node: III-26121313
|
||||
Node: III-27122414
|
||||
Node: III-28122947
|
||||
Node: III-29123860
|
||||
Node: III-30124694
|
||||
Node: III-31125378
|
||||
Node: IV-00125784
|
||||
Node: IV-01127064
|
||||
Node: IV-02128873
|
||||
Node: IV-03129122
|
||||
Node: IV-04129601
|
||||
Node: IV-05129930
|
||||
Node: IV-06130309
|
||||
Node: IV-07130782
|
||||
Node: IV-08131238
|
||||
Node: IV-09132229
|
||||
Node: IV-10132583
|
||||
Node: IV-11134378
|
||||
Node: IV-12135139
|
||||
Node: IV-13135341
|
||||
Node: V-00135817
|
||||
Node: V-01137476
|
||||
Node: V-02138078
|
||||
Node: V-03138734
|
||||
Node: V-04139644
|
||||
Node: V-05140827
|
||||
Node: V-06141242
|
||||
Node: V-07142123
|
||||
Node: V-08142794
|
||||
Node: V-09143371
|
||||
Node: V-10143662
|
||||
Node: V-11144029
|
||||
Node: V-12144639
|
||||
Node: V-13144991
|
||||
Node: V-14145603
|
||||
Node: V-15146221
|
||||
Node: V-16146608
|
||||
Node: VI-00146941
|
||||
Node: VIA-00147501
|
||||
Node: VI-01147949
|
||||
Node: VI-02149457
|
||||
Node: VI-03150883
|
||||
Node: VI-04151940
|
||||
Node: VIB-00152405
|
||||
Node: VI-05153904
|
||||
Node: VI-06166233
|
||||
Node: VIC-00167256
|
||||
Node: VI-07169313
|
||||
Node: VI-08170045
|
||||
Node: VI-09170526
|
||||
Node: VI-10170948
|
||||
Node: VI-11172510
|
||||
Node: VI-12172917
|
||||
Node: VI-13174393
|
||||
Node: VI-14175302
|
||||
Node: VII-00177536
|
||||
Node: VII-01180366
|
||||
Node: VII-02181129
|
||||
Node: VII-03181665
|
||||
Node: VII-04183187
|
||||
Node: VII-05183700
|
||||
Node: VII-06184026
|
||||
Node: VII-07185425
|
||||
Node: VII-08185936
|
||||
Node: VII-09186238
|
||||
Node: VII-10186927
|
||||
Node: VII-11187340
|
||||
Node: VII-12187821
|
||||
Node: VII-13188281
|
||||
Node: VII-14189009
|
||||
Node: VII-15189964
|
||||
Node: VII-16190552
|
||||
Node: VII-17191044
|
||||
Node: VII-18191576
|
||||
Node: VII-19192529
|
||||
Node: VII-20193376
|
||||
Node: VII-21193960
|
||||
Node: VII-22194427
|
||||
Node: VII-23195572
|
||||
Node: VII-24196205
|
||||
Node: VII-25196628
|
||||
Node: VII-26197096
|
||||
Node: VII-27197565
|
||||
Node: VII-28198111
|
||||
Node: VIII-00201082
|
||||
Node: VIII-01203861
|
||||
Node: VIII-02204382
|
||||
Node: VIII-03204944
|
||||
Node: VIII-04205348
|
||||
Node: VIII-05206294
|
||||
Node: VIII-06206598
|
||||
Node: VIII-07207408
|
||||
Node: VIII-08207979
|
||||
Node: VIII-09208432
|
||||
Node: VIII-10210088
|
||||
Node: VIII-11210495
|
||||
Node: VIII-12211183
|
||||
Node: VIII-13211466
|
||||
Node: VIII-14211736
|
||||
Node: VIII-15212185
|
||||
Node: VIII-16212866
|
||||
Node: VIII-17214358
|
||||
Node: VIII-18214685
|
||||
Node: VIII-19215227
|
||||
Node: VIII-20215830
|
||||
Node: VIII-21216619
|
||||
Node: VIII-22217031
|
||||
Node: VIII-23217679
|
||||
Node: VIII-24220905
|
||||
Node: VIII-25223001
|
||||
Node: VIII-26225435
|
||||
Node: VIII-27225726
|
||||
Node: VIII-28226504
|
||||
Node: VIII-29227637
|
||||
Node: VIII-30228789
|
||||
Node: VIII-31229732
|
||||
Node: VIII-32230535
|
||||
Node: VIII-33231145
|
||||
Node: VIII-34231479
|
||||
Node: VIII-35232998
|
||||
Node: VIII-36235460
|
||||
Node: VIII-37236052
|
||||
Node: VIII-38236534
|
||||
Node: IX-00236740
|
||||
Node: IXA-00236961
|
||||
Node: IX-01238949
|
||||
Node: IX-02240576
|
||||
Node: IX-03241027
|
||||
Node: IX-04241554
|
||||
Node: IX-05241861
|
||||
Node: IX-06242097
|
||||
Node: IX-07242284
|
||||
Node: IX-08242529
|
||||
Node: IX-09243171
|
||||
Node: IX-10243804
|
||||
Node: IX-11243987
|
||||
Node: IX-12244134
|
||||
Node: IX-13244462
|
||||
Node: IX-14244796
|
||||
Node: IX-15245051
|
||||
Node: IX-16245315
|
||||
Node: IX-17245563
|
||||
Node: IX-18245758
|
||||
Node: IX-19246671
|
||||
Node: IX-20246904
|
||||
Node: IX-21247429
|
||||
Node: IX-22249305
|
||||
Node: IX-23249503
|
||||
Node: IX-24250855
|
||||
Node: IXB-00254941
|
||||
Node: IX-25255711
|
||||
Node: IX-26256185
|
||||
Node: IX-27256585
|
||||
Node: IX-28257065
|
||||
Node: IX-29258124
|
||||
Node: IX-30258753
|
||||
Node: IX-31259191
|
||||
Node: X-00259921
|
||||
Node: X-01261520
|
||||
Node: X-02262343
|
||||
Node: X-03262920
|
||||
Node: X-04263248
|
||||
Node: X-05263562
|
||||
Node: X-06264441
|
||||
Node: X-07265251
|
||||
Node: X-08265642
|
||||
Node: X-09266021
|
||||
Node: X-10266313
|
||||
Node: X-11266549
|
||||
Node: X-12267035
|
||||
Node: X-13268173
|
||||
Node: X-14269540
|
||||
Node: X-15269837
|
||||
Node: X-16270381
|
||||
Node: X-17270692
|
||||
Node: X-18271806
|
||||
Node: X-19273010
|
||||
Node: X-20273609
|
||||
Node: X-21274114
|
||||
Node: X-22274572
|
||||
Node: X-23275219
|
||||
Node: XI-00276217
|
||||
Node: XIA-00276517
|
||||
Node: XIB-00277068
|
||||
Node: XI-01278249
|
||||
Node: XI-02278637
|
||||
Node: XI-03279210
|
||||
Node: XI-04279426
|
||||
Node: XI-05279969
|
||||
Node: XI-06280404
|
||||
Node: XI-07280737
|
||||
Node: XI-08281349
|
||||
Node: XI-09281935
|
||||
Node: XI-10282530
|
||||
Node: XI-11283424
|
||||
Node: XI-12283738
|
||||
Node: XI-13284052
|
||||
Node: XI-14284588
|
||||
Node: XI-15285053
|
||||
Node: XI-16285519
|
||||
Node: XII-00285931
|
||||
Node: XIIA-00287196
|
||||
Node: XII-01287539
|
||||
Node: XII-02288095
|
||||
Node: XII-03288732
|
||||
Node: XII-04289070
|
||||
Node: XIIB-00289489
|
||||
Node: XII-05290221
|
||||
Node: XII-06293624
|
||||
Node: XII-07293919
|
||||
Node: XII-08295314
|
||||
Node: XIIC-00296307
|
||||
Node: XII-09296601
|
||||
Node: XII-10296951
|
||||
Node: XII-11297869
|
||||
Node: XIID-00299214
|
||||
Node: XII-12299676
|
||||
Node: XII-13300203
|
||||
Node: XII-14300841
|
||||
Node: XII-15302074
|
||||
Node: XII-16302929
|
||||
Node: XIIE-00304032
|
||||
Node: XII-17304678
|
||||
Node: XII-18304947
|
||||
Node: XII-19306287
|
||||
Node: XII-20306778
|
||||
Node: XII-21307748
|
||||
Node: XII-22308142
|
||||
Node: XII-23308695
|
||||
Node: XII-24309523
|
||||
Node: XIIF-00310625
|
||||
Node: XII-25311421
|
||||
Node: XII-26312010
|
||||
Node: XII-27312650
|
||||
Node: XII-28313895
|
||||
Node: XII-29314897
|
||||
Node: XII-30315672
|
||||
Node: XII-31317338
|
||||
Node: XII-32318057
|
||||
Node: XIIG-00318530
|
||||
Node: XII-33319398
|
||||
Node: XII-34319861
|
||||
Node: XII-35320229
|
||||
Node: XII-36320518
|
||||
Node: XII-37320896
|
||||
Node: XII-38321255
|
||||
Node: XII-39321724
|
||||
Node: XII-40322402
|
||||
Node: XIIH-00324625
|
||||
Node: XII-41325178
|
||||
Node: XII-42325822
|
||||
Node: XII-43326340
|
||||
Node: XII-44327571
|
||||
Node: XII-45329330
|
||||
Node: XII-46331927
|
||||
Node: XII-47333684
|
||||
Node: XII-I-00334531
|
||||
Node: XIII-00335312
|
||||
Node: Concept Index336233
|
||||
|
||||
End Tag Table
|
||||
1178
docs/FAQ/linux.info.FAQ/linux-faq.info-1
Normal file
1178
docs/FAQ/linux.info.FAQ/linux-faq.info-1
Normal file
File diff suppressed because it is too large
Load Diff
1022
docs/FAQ/linux.info.FAQ/linux-faq.info-2
Normal file
1022
docs/FAQ/linux.info.FAQ/linux-faq.info-2
Normal file
File diff suppressed because it is too large
Load Diff
1124
docs/FAQ/linux.info.FAQ/linux-faq.info-3
Normal file
1124
docs/FAQ/linux.info.FAQ/linux-faq.info-3
Normal file
File diff suppressed because it is too large
Load Diff
1160
docs/FAQ/linux.info.FAQ/linux-faq.info-4
Normal file
1160
docs/FAQ/linux.info.FAQ/linux-faq.info-4
Normal file
File diff suppressed because it is too large
Load Diff
1256
docs/FAQ/linux.info.FAQ/linux-faq.info-5
Normal file
1256
docs/FAQ/linux.info.FAQ/linux-faq.info-5
Normal file
File diff suppressed because it is too large
Load Diff
1287
docs/FAQ/linux.info.FAQ/linux-faq.info-6
Normal file
1287
docs/FAQ/linux.info.FAQ/linux-faq.info-6
Normal file
File diff suppressed because it is too large
Load Diff
1161
docs/FAQ/linux.info.FAQ/linux-faq.info-7
Normal file
1161
docs/FAQ/linux.info.FAQ/linux-faq.info-7
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/FAQ/linux.info.FAQ/linux.info.faq.src.tgz
Normal file
BIN
docs/FAQ/linux.info.FAQ/linux.info.faq.src.tgz
Normal file
Binary file not shown.
740
docs/FAQ/serialFAQ1.1.txt
Normal file
740
docs/FAQ/serialFAQ1.1.txt
Normal file
@@ -0,0 +1,740 @@
|
||||
Serial FAQ version 1.1 Wed Sep 8 21:40:31 EDT 1993
|
||||
maintained by Greg Hankins <gregh@cc.gatech.edu>.
|
||||
|
||||
This FAQ attempts to provide answers to a variety of serial type problems.
|
||||
There is a surprising complexity in getting things to work, and a broad
|
||||
range of topics.
|
||||
|
||||
(1). How are serial devices named?
|
||||
|
||||
(2). What is all this about 'getty_ps 2.0.7b'?
|
||||
|
||||
(3). How do I dial out with my modem?
|
||||
|
||||
(4). How do I dial in and out with my modem?
|
||||
|
||||
(5). How do I set up a terminal connected to my PC?
|
||||
|
||||
(6). Can I use more than 2 serial ports? What are these interrupts all about?
|
||||
|
||||
(7). How can I get Linux to automagically configure the serial devices?
|
||||
|
||||
(8). What kind of serial boards does Linux support?
|
||||
|
||||
(9). What major and minor numbers should my serial devices in /dev have?
|
||||
|
||||
(10). How should I configure my modem?
|
||||
|
||||
(11). How can I hook up a printer to my serial port?
|
||||
|
||||
(12). What are locks, and what are they for?
|
||||
|
||||
(13). What are UARTs? How do they affect performance?
|
||||
|
||||
(14). 'kermit' quick start
|
||||
|
||||
(A). Troubleshooting
|
||||
|
||||
1. I keep getting "line XXX of inittab invalid"
|
||||
|
||||
2. When I try to dial out, it says "/dev/cuaX: Device or resource busy"
|
||||
|
||||
3. I keep getting "respawning too fast, disableing for 5 minutes".
|
||||
|
||||
4. I have a modem/terminal connected, but root can't login from the
|
||||
serial device.
|
||||
|
||||
5. I have my terminal connected to my PC, but after I type in a login
|
||||
name, it just locks up.
|
||||
|
||||
6. At high speeds, my modem looses characters, and my computer gets
|
||||
really slow!
|
||||
|
||||
(B). Linux FTP sites
|
||||
|
||||
(C). Recommended Reading
|
||||
|
||||
(D). Contributions
|
||||
|
||||
===============================================================================
|
||||
|
||||
(1). How are serial devices named?
|
||||
|
||||
There are 4 basic serial devices corresponding to COM1 - COM4, /dev/cua0 -
|
||||
/dev/cua3 and /dev/ttyS0 - /dev/ttyS3. The /dev/ttyS* devices are for dialin
|
||||
and /dev/cua* devices for dialout.
|
||||
|
||||
Furthermore, when you install from SLS two extra devices will be created,
|
||||
/dev/modem for your modem and /dev/mouse for your mouse. Both of these
|
||||
are symbolic links to the appropriate /dev/cua* port which you specified
|
||||
during the installation (unless you have a bus mouse, then /dev/mouse will
|
||||
point to the bus mouse device).
|
||||
|
||||
There has been some discussion on the merits of /dev/mouse and /dev/modem.
|
||||
I recommend using the "real" device names, and not the symbolic links. It just
|
||||
seems less confusing to me. Use them if you like, but make sure they point
|
||||
to the right device.
|
||||
|
||||
On the other hand, if you use the links, and they point to the correct devices,
|
||||
using /dev/modem may be simpler for some people. It's really up to you
|
||||
what you use.
|
||||
|
||||
A program like 'kermit' for instance uses the /dev/modem device if there is
|
||||
no .kermrc file present in your $HOME which contains the settings for kermit.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(2). What is 'getty_ps 2.0.7b'? What's so great about it?
|
||||
|
||||
This is just another version of 'getty', which is a program that handles
|
||||
some of the login process when you log in to a UNIX box. This version is
|
||||
better than the stock 'getty' that comes with most recent Linux distributions.
|
||||
It was written by Paul Sutcliffe, Jr. <paul@devon.lns.pa.us>. 2.0.7b is the
|
||||
latest version, and supercedes any older versions.
|
||||
|
||||
Please make sure you use 'getty_ps 2.0.7b' only if you're running on a pl6
|
||||
or higher kernel. Previous versions of 'getty_ps' will not work with these.
|
||||
Furthermore, users of SLS 1.0.1/1.0.2 should be very carefull because there
|
||||
might be two versions of 'getty_ps' lurking on your disks! The default one
|
||||
is 2.0.4 and the non-default one is 2.0.7b. Make sure you use the right one.
|
||||
|
||||
Be sure that the new 'getty_ps' works correctly *before* you remove all the
|
||||
other stuff! I recommend changing one of your virtual console lines from:
|
||||
c2:23456:respawn:/etc/getty tty2
|
||||
to:
|
||||
c2:23456:respawn:/etc/getty_ps tty2 VC console
|
||||
|
||||
Put this line in your /etc/gettydefs:
|
||||
VC# B9600 SANE CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #VC
|
||||
|
||||
and restart 'init':
|
||||
yourbox# init q (for poegil init, use "kill -HUP 1")
|
||||
|
||||
If you can log in with 'getty_ps', it's working. Remove all the old 'getty's.
|
||||
Move 'getty_ps' to 'getty', or link it. Be sure to update your /etc/inittab
|
||||
to correctly invoke the new 'getty'. 'getty_ps' can handle the stock
|
||||
'getty's syntax.
|
||||
|
||||
Once you have installed it, and are certain it is working, you can remove any
|
||||
other versions of 'getty' you have. Be sure to check in /bin, /etc,
|
||||
/usr/bin, /usr/etc, /usr/man/man1, and /usr/man/cat1 for any thing called
|
||||
"getty" - there are old versions lurking everywhere... Also, you can safely
|
||||
remove the old config file /etc/gettytab - you only need /etc/gettydefs.
|
||||
|
||||
There are lots of parameters you can tweak for each port you have. These
|
||||
are implemented in seperate config files for each port (if you want). I'm not
|
||||
convinced you need them at all. Mine works fine without them. In general you
|
||||
should only need them to implement setups for unusual situations. You might
|
||||
consider using the ALTLOCK option, to be sure that all locks are checked
|
||||
properly. Here are a couple of /etc/default sample files - note the
|
||||
/etc/default/getty will be used by *all* instances of 'getty', and that
|
||||
/etc/default/getty.ttySX will only be used by that one port.
|
||||
|
||||
/etc/default/getty:
|
||||
SYSTEM=<systemname>
|
||||
VERSION=/proc/version
|
||||
LOGIN=/bin/login
|
||||
ISSUE=/etc/issue
|
||||
CLEAR=NO
|
||||
HANGUP=YES
|
||||
|
||||
/etc/default/getty.ttySX:
|
||||
SYSTEM=<systemname>
|
||||
VERSION=/proc/version
|
||||
LOGIN=/bin/login
|
||||
ISSUE=/etc/issue
|
||||
CLEAR=NO
|
||||
HANGUP=YES
|
||||
INIT="" ATZ\r OK
|
||||
TIMEOUT=60
|
||||
WAITFOR=RING
|
||||
CONNECT="" ATA\r CONNECT \s\A
|
||||
ALTLINE=cuaX
|
||||
|
||||
/etc/default/uugetty.ttySX:
|
||||
ALTLOCK=cuaX
|
||||
TIMEOUT=60
|
||||
INIT="" ATZ\r OK
|
||||
DELAY=1
|
||||
CLEAR=NO
|
||||
|
||||
/etc/default/uugetty.ttySX:
|
||||
SYSTEM=<systemname>
|
||||
VERSION=/proc/version
|
||||
LOGIN=/bin/login
|
||||
ISSUE=/etc/issue
|
||||
CLEAR=NO
|
||||
HANGUP=YES
|
||||
INIT="" ATZ1\r
|
||||
ALTLINE=cuaX
|
||||
ALTLOCK=cuaX
|
||||
INITLINE=cuaX
|
||||
TIMEOUT=60
|
||||
|
||||
===============================================================================
|
||||
|
||||
(3). How do I dial out with my modem?
|
||||
|
||||
- First, make sure you have the right hardware. You probably want to hook
|
||||
the modem to COM2, the DB25 pin port on your PC. This requires a straight
|
||||
through cable, with no pins crossed. (The 9 pin COM1 port works nicely for
|
||||
a mouse, since most serial mice already have a DB9 connector.)
|
||||
|
||||
For an internal modem, you will not need a modem cable. You may have trouble
|
||||
if you are using Rockwell chipsets claiming to emulate 16550A UARTs.
|
||||
Ted T'so is currently working on the problem.
|
||||
|
||||
Most internal modems try to emulate a 8250, 16450, 16550A UART. It all depends
|
||||
on the quality of this emulation if it will work under Linux too. (DOS
|
||||
is too simple about these things).
|
||||
|
||||
Many people prefer an external modem over an internal one, because
|
||||
it allows you to check the little lights which tell you what is going on.
|
||||
Furthermore in case of some real trouble, you can switch off the modem
|
||||
without switching of the complete PC. Lastly, an external modem has its
|
||||
own power supply, which means it doesn't draw power from your PC. It doesn't
|
||||
dissipate heat inside your PC, either.
|
||||
|
||||
- For now, make sure that nothing is using that port. Check to see if there
|
||||
is a 'getty' watching it, or it is not locked by anything else. If there is
|
||||
a 'getty' process, check your /etc/inittab file for entries using your
|
||||
serial port. Comment the line out (with "#"), and restart 'init'. Do
|
||||
not comment any lines that contain a tty* device, only ones containing ttyS*
|
||||
or cua*. tty* are your virtual consoles.
|
||||
|
||||
- Use 'kermit' to test the setup. You should set your line to
|
||||
/dev/cua1, and the speed to the highest speed your modem can handle. Try
|
||||
dialing out, or talking to the modem. If you are properly connected, your
|
||||
modem should respond to "AT" commands. If you say "AT" to your modem, it
|
||||
should respond with "OK". Once you are sure that the modem is functional,
|
||||
you can use more complex programs, like 'Seyon', or 'xconn'.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(4). How do I dial in and out with my modem?
|
||||
|
||||
- Get your modem to dial out correctly.
|
||||
|
||||
- Replace the stock 'getty' with 'getty_ps' as described in FAQ (2).
|
||||
Update /etc/gettydefs to include entries for modems:
|
||||
(note that the entries point to each other, these are not for fixed baud)
|
||||
|
||||
# Modem entries
|
||||
38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200
|
||||
|
||||
19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600
|
||||
|
||||
9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400
|
||||
|
||||
2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #1200
|
||||
|
||||
1200# B1200 CS8 # B1200 SANE -ISTRIP HUPCL #@S @L @B login: #300
|
||||
|
||||
300# B300 CS8 # B300 SANE -ISTRIP HUPCL #@S @L @B login: #38400
|
||||
|
||||
If you have a 9600 baud or higher modem with flow control, you can lock
|
||||
your serial port at 19200 or 38400 and let the modem handle the
|
||||
translation to other baud rates. Then, instead of the step down series
|
||||
of lines listed below, /etc/gettydefs only needs to contain one line for the
|
||||
modem:
|
||||
|
||||
38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S login: #38400
|
||||
or
|
||||
|
||||
19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S login: #19200
|
||||
|
||||
- If you have your modem set up to do RTS/CTS hardware flow control, you
|
||||
can add CRTSCTS to the entries.
|
||||
|
||||
- Next, make sure that you have a dialin and dialout device for the port
|
||||
your modem is on. If you have your modem on /dev/cua1, you will need
|
||||
a device called /dev/ttyS1. If you don't have the correct devices,
|
||||
see the question on how to create devices, and create the devices.
|
||||
|
||||
- Edit your /etc/inittab, so that 'getty' is run on your serial port:
|
||||
|
||||
Add the following line:
|
||||
S1:456:respawn:/etc/getty ttyS1 38400
|
||||
( ^-- put your highest modem speed here)
|
||||
|
||||
|
||||
- Restart 'init':
|
||||
yourbox# init q (for poegil init, use "kill -HUP 1")
|
||||
|
||||
Now Linux will be watching your serial port for connections.
|
||||
|
||||
- Dial in from another site and log in to you Linux system. Rejoice. Party.
|
||||
|
||||
- For sites with UUCP feeds, you probably want to use 'uu_getty', instead of
|
||||
plain 'getty'. It's designed for use with UUCP. Look at the README for
|
||||
it for exact differences. Most importantly, it checks the lock files
|
||||
that UUCP creates.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(5). How do I set up a terminal connected to my PC.
|
||||
|
||||
- Make sure you have the right kind of cable! A null modem cable bought at a
|
||||
computer store should do it. At a minimum, you should have:
|
||||
(If none of these work, please tell me what works for you!)
|
||||
|
||||
2 - 3 This works for me on a
|
||||
3 - 2 Wyse terminal.
|
||||
7 - 7 You milage may vary.
|
||||
20 - 20
|
||||
|
||||
If that doesn't work, try the following (a full null modem cable):
|
||||
|
||||
2 - 3 Pin names:
|
||||
3 - 2 1 Frame Ground
|
||||
4 - 5 2 TxD
|
||||
5 - 4 3 RxD
|
||||
6 - 20 4 RTS
|
||||
7 - 7 5 CTS
|
||||
8 - 20 6 DSR
|
||||
20 - 6 7 Signal Ground
|
||||
20 - 8 8 DCD
|
||||
20 DTR
|
||||
|
||||
You will need pins 4 and 5 if you want to do any kind of hardware flow
|
||||
control.
|
||||
|
||||
- Connect your terminal to your computer. If you can, tell you terminal
|
||||
to ignore modem control signals. Try using 9600 bps, 8 data bits, 1 stop
|
||||
bit, no parity bits.
|
||||
|
||||
- Replace the stock 'getty' with 'getty_ps' as described in FAQ (2).
|
||||
Add an entry for 'getty' to use for your terminal in /etc/gettydefs.
|
||||
Mine looks like this:
|
||||
|
||||
# 9600 baud Dumb Terminal entry
|
||||
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
|
||||
|
||||
You might add HUPCL so the login is killed whenever you switch of
|
||||
the terminal (provided you use a proper null-modem cable).
|
||||
|
||||
- Edit your /etc/inittab file to run getty on the serial port. Mine looks like
|
||||
this:
|
||||
|
||||
S1:456:respawn:/etc/getty ttyS1 DT9600 vt100
|
||||
|
||||
- restart 'init'
|
||||
yourbox# init q (for poegil init, use "kill -HUP 1")
|
||||
|
||||
- at this point, you should see a login prompt on your terminal. Rejoice.
|
||||
Party. Login on your terminal and PC. 'talk' to yourself from accross
|
||||
the room.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(6). Can I use more than 2 serial ports? Can I use a modem, a terminal, and
|
||||
my mouse?
|
||||
|
||||
That depends. The number of serial ports you can use is limited by the number
|
||||
of interrupts (IRQ) we have to use. Each serial devices must be assigned
|
||||
it's own interrupt. On a PC, each serial port counts as a device.
|
||||
However, there are specially designed multiport serial cards which have
|
||||
multiple serial ports on one device. (For those of you who are hardware
|
||||
minded, all it means that is that there is a OR gate combining all of the
|
||||
IRQ outputs from each serial port.)
|
||||
|
||||
Your PC will normally come with COM1 and COM3 at IRQ 4, and COM2 and COM4
|
||||
at IRQ 3. To use more than 2 serial devices, you will have to give up an
|
||||
interrupt to use. A good choice is to reassign an interrupt from your
|
||||
parallel port. Your PC normally comes with IRQ 5 and IRQ 7 set up as
|
||||
interrupts for your parallel ports, but hardly anyone uses 2 parallel ports.
|
||||
You can reassign one of the interrupts to a serial device, and still happily
|
||||
use your parallel port. You will need the 'setserial' program to do this
|
||||
(or you can play with the jumpers on your boards - 'setserial' is *much*
|
||||
easier!). As far as I know, 'setserial' will work with Linux >= 0.99pl9.
|
||||
It is pretty much mandatory for Linux 0.99pl10, since this version of Linux
|
||||
does not do much auto detection of serial devices.
|
||||
|
||||
You will need to set things up so that there is one, and only one interrupt
|
||||
for each serial device. Here is how I set mine up (in /etc/rc.local - you
|
||||
should do it upon startup somewhere):
|
||||
|
||||
/etc/setserial /dev/cua0 irq 5 # my mouse
|
||||
/etc/setserial /dev/cua1 irq 4 # my terminal
|
||||
/etc/setserial /dev/cua3 irq 3 # my modem
|
||||
# my printer is hooked up on my parallel port IRQ 7 - no change necessary
|
||||
|
||||
The problem is that all of the bus lines on the ISA bus are electrically
|
||||
connected together, in parallel, and all of the bus lines are driven by
|
||||
TTL gates. If there are two devices simultaneously trying to drive an
|
||||
IRQ line, they end up "fighting" over that line. You get undefined
|
||||
behavior when one of the TTL gates is trying to drive the IRQ line low,
|
||||
and the other TTL gate is trying to drive the IRQ line high. Usually
|
||||
one of the gates will consistently win, with the net result that the
|
||||
computer will only see interrupts from one of the serial devices --- but
|
||||
this is not guaranteed; there may be very erratic behavior as a result.
|
||||
|
||||
Standard IRQ assignments:
|
||||
IRQ 0 Timer channel 0
|
||||
IRQ 1 Keyboard
|
||||
IRQ 2 Cascade for controller 2
|
||||
IRQ 3 Serial port 2
|
||||
IRQ 4 Serial port 1
|
||||
IRQ 5 Parallel port 2 (Reserved in PS/2)
|
||||
IRQ 6 Floppy diskette
|
||||
IRQ 7 Parallel port 1
|
||||
IRQ 8 Real-time clock
|
||||
IRQ 9 Redirected to IRQ2
|
||||
IRQ 10 Reserved
|
||||
IRQ 11 Reserved
|
||||
IRQ 12 Reserved (Auxillary device in PS/2)
|
||||
IRQ 13 Math coprocessor
|
||||
IRQ 14 Hard disk controller
|
||||
IRQ 15 Reserved
|
||||
|
||||
There is really no Right Thing to do when choosing interrupts. Just make sure
|
||||
it isn't being used. 5 is a good choice.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(7). Can Linux detect the serial devices automatically?
|
||||
|
||||
Yes. To get Linux to detect and set up the serial devices automatically
|
||||
on startup, add the line:
|
||||
#define CONFIG_AUTO_IRQ
|
||||
to /usr/src/linux/chr_drv/serial.c (look for where the other #defines are).
|
||||
You'll have to recompile your kernel.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(8). What kind of serial boards does linux support?
|
||||
|
||||
Linux supports standard PC serial boards, internal modems, and
|
||||
a number of multiport serial boards, including the Usenet Serial Board
|
||||
II, the Boca 4-port (BB-1004), 8-port (BB-1008), and 16-port (BB-2016)
|
||||
boards, and AST FourPort boards and clones. In general, Linux will
|
||||
support any multiport serial board which uses a 8250, 16450, 16550, or
|
||||
16550A (or compatible) UART, and assignes the UART registers to a
|
||||
contiguous block of 8 I/O ports on the 386/486.
|
||||
|
||||
Linux does not support any intelligent serial ports, nor is it likely
|
||||
that it will in the future.
|
||||
|
||||
The Usenet Serial Board II is available from:
|
||||
South Coast Computing Services, Inc.
|
||||
phone +1 713 661 3301
|
||||
email info@sccsi.com
|
||||
|
||||
===============================================================================
|
||||
|
||||
(9). What numbers should my serial devices in /dev have?
|
||||
|
||||
The recommended convention is:
|
||||
|
||||
/dev/ttyS0 major 4, minor 64 /dev/cua0 major 5, minor 64
|
||||
/dev/ttyS1 major 4, minor 65 /dev/cua1 major 5, minor 65
|
||||
/dev/ttyS2 major 4, minor 66 /dev/cua2 major 5, minor 66
|
||||
/dev/ttyS3 major 4, minor 67 /dev/cua3 major 5, minor 67
|
||||
|
||||
If you don't have a device, you will have to create it with the 'mknod'
|
||||
command.
|
||||
|
||||
Example, suppose you needed to create devices for /dev/cua0:
|
||||
|
||||
yourbox# mknod /dev/cua0 c 5 64
|
||||
yourbox# mknod /dev/ttyS0 c 4 64
|
||||
|
||||
===============================================================================
|
||||
|
||||
(10). How should I configure my modem?
|
||||
|
||||
- You'll have to get you modem connected before you try to set registers.
|
||||
|
||||
- For dial out use only, configure it however you want.
|
||||
|
||||
I like to see result codes, so I set Q0. I also like to see what I'm typing,
|
||||
so I set E1.
|
||||
|
||||
- For dial in and dial out use, you have to set it up a certain way.
|
||||
|
||||
Here is what you have to set:
|
||||
|
||||
E0 Command echo OFF
|
||||
Q1 NO result codes are reported
|
||||
|
||||
If you don't shut up the modem completely, it will talk to 'getty'.
|
||||
'getty' will think someone is trying to log in, and will spawn 'login'. This
|
||||
will cause all sorts of confusion. Not setting these correctly will probably
|
||||
cause the dreaded "respawning to fast" message.
|
||||
|
||||
&C1 DCD is on after connect *only*
|
||||
|
||||
If DCD is always on, there will always be a connection, and 'getty' will try
|
||||
to log people in. Not setting this can cause "device busy" errors.
|
||||
|
||||
Other things you should set:
|
||||
|
||||
&S0 DSR is always on
|
||||
&D3 DTR on/off resets modem
|
||||
enable your data compression (setting depend on modem manufacturer, consult
|
||||
manual)
|
||||
autobaud (same applies here)
|
||||
|
||||
===============================================================================
|
||||
|
||||
(11). How can I hook up a printer to my serial port?
|
||||
|
||||
The answer to this question can be found in the printing FAQ. It is
|
||||
available on both tsx-11.mit.edu, and sunsite.unc.edu. There
|
||||
may be more than one of these around. Look for the one maintained by
|
||||
Brian McCauley <b.a.mccauley@bhan.ac.uk>.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(12). What are locks, and what are they for?
|
||||
|
||||
Locks are simply a file saying that a particular device is in use. They are
|
||||
kept in /usr/spool/uucp. Locks are named LCK..<name>, where <name> is either a
|
||||
device name, or a UUCP site name. Certain processes create these locks so that
|
||||
they can have exclusive access to devices, for instance if you dial out on your
|
||||
modem, a lock will appear telling other programs that someone is using the
|
||||
modem already. Locks mainly contain the PID of the process that has locked
|
||||
the device. Most programs look at the lock, and try to determine if that lock
|
||||
is still valid by checking the process table for the process that has locked
|
||||
the device. If the lock is found to be valid, the program should exit. If
|
||||
not, some programs remove the stale lock, and use the device, creating their
|
||||
own lock in the process.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(13). What are UARTs? How do they affect performance?
|
||||
|
||||
UARTs (Universal Asyncronous Receiver Transmitter) are chips inside
|
||||
your communication devices (terminal, PC). There is one on each end. Their
|
||||
purpose is to convert characters to bits, send it down the line, and then
|
||||
rebuild characters again on the other end. The UARTs are asyncronous
|
||||
devices, bacause the time interval between transmission of characters is
|
||||
not fixed.
|
||||
|
||||
Say you have a terminal hooked up to your PC. When you type a character,
|
||||
the terminal presents it to it's UART. The UART shifts that character (a byte) out
|
||||
onto the serial line one bit at at time, at a specific rate. Hence, we
|
||||
have the rates 110, 300, 1200, 2400, ... bits/sec. This is simple a measure
|
||||
of how fast the UART is sending bits. On the other end, the receiving UART
|
||||
takes all the bits and rebuilds the character.
|
||||
|
||||
There are several different types of UARTs. You have probably heard of
|
||||
dumb UARTs - the 8250 and 16450, and smart or FIFO UARTs - the 16550A.
|
||||
To understand their differences, first let's examine what happens when
|
||||
a UART has received a character.
|
||||
|
||||
The UART itself can't do anything with the character, it just sends and
|
||||
receives them. The CPU gets an interrupt ever time a character is done
|
||||
(receiving or sending). The CPU then moves that character out of the UART
|
||||
and into memory somewhere. The 8250 and 16450 UARTs only have a 1
|
||||
character buffer. That means, that every time a character is done, it
|
||||
interrupts the CPU. At low rates, this is OK. But, at high transfer
|
||||
rates, the CPU get so busy dealing with the UART, that is doesn't have time
|
||||
to tend to other tasks. In some cases, the CPU does not get around to
|
||||
servicing the interrupt in time, and the character is overwritten. It's
|
||||
kinda like the famous cream pie/conveyor belt setup. When the belt is going
|
||||
slow, the person on the end has enough time to remove each pie, and safely
|
||||
store it. But, when the belt is going fast, the person doesn't have time
|
||||
to get each pie, and things wind up getting messy.
|
||||
|
||||
That's where the 16550 UARTs come in. These chips come with 16 character
|
||||
FIFOs. This means that it can receive or transmit up to 16 characters
|
||||
before it has to interrupt the CPU. Not only can it wait, but the CPU
|
||||
then can transfer all 16 characters at a time. This is a significant
|
||||
advantage over the other UARTs, which only have the 1 character buffer.
|
||||
The CPU receives significantly less interrupts, and is free to do other
|
||||
things.
|
||||
|
||||
In general, the 8250 and 16450 UARTs should be fine for speeds up to
|
||||
19200 bps. After 19200, you might start seeing character losses, and a
|
||||
reduction in computing speed.
|
||||
|
||||
Keep in mind that these UART types are not bad, or harmful, they just
|
||||
aren't good for high speeds. You should have no problem connecting a
|
||||
terminal, or a mouse to these UARTs. But, for a high speed modem,
|
||||
the 16550 is definately a must.
|
||||
|
||||
You can buy serial cards with the FIFO UARTs for a little more money,
|
||||
just ask your dealer what type of UART is on the card.
|
||||
Or if you want to upgrade your existing card, you can simply purchase
|
||||
16550 chips and replace your existing UARTs. They are pin-to-pin compatible.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(14). 'kermit': a quick start.
|
||||
|
||||
'kermit' is one of the many communications programs available to you. If you
|
||||
are a beginning user, 'kermit' is a simple way to start using your modem.
|
||||
|
||||
Fire up 'kermit' by typing "kermit". You'll need to set a few basic things
|
||||
up before you can use your modem. You can keep these command in $HOME/.kermrc
|
||||
so you don't have to type them every time. Here is my .kermrc as an example.
|
||||
You'll have to adjust things to fit your setup.
|
||||
|
||||
set line /dev/cua3 # tell 'kermit' which serial device you want to use
|
||||
set modem v42-telebit # which type of modem you are using
|
||||
set speed 38400 # speed
|
||||
|
||||
At this point, you can just type "c" to connect to your modem, and dial
|
||||
manually with "at" commands. Or, from the kermit> prompt, you can use the
|
||||
"dial" command.
|
||||
|
||||
If you want to use the zmodem protocol, you can include:
|
||||
define rz !rz </dev/cua3 >/dev/cua3
|
||||
define sz !sz \%0 >/dev/cua3 </dev/cua3
|
||||
|
||||
in your .kermrc.
|
||||
|
||||
This has been a really quick intro, for more info on 'kermit', RTFM.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(A). Troubleshooting:
|
||||
|
||||
1. I keep getting "line XXX of inittab invalid"
|
||||
|
||||
Make sure you are using the correct syntax for your version of 'init'. The
|
||||
different 'init's that are out there use different syntax in the /etc/inittab
|
||||
file. Make sure you are using the correct syntax for your version of 'getty'.
|
||||
|
||||
2. When I try to dial out, it says "/dev/cuaX: Device or resource busy"
|
||||
|
||||
- This is one of the most frequent errors people get. It can happen for a
|
||||
variety of reasons. If you followed the instructions carefully, this should
|
||||
not happen, so double check to make sure you did everything right.
|
||||
|
||||
This problem usually arrises when DCD is not set correctly. DCD should only be
|
||||
set when there is an actual connection (ie someone is dialed in), not when
|
||||
'getty' is watching the port. When 'getty' sees DCD get set, it will lock
|
||||
the port and probably spawn 'login'. Check to make sure that you modem is
|
||||
configured to only set DCD when there is a connection. DTR and RTS
|
||||
should be set whenever something is using, or watching the line, like 'getty',
|
||||
'kermit', or some other comm program.
|
||||
|
||||
- Another common cause of "device busy" errors, is that you set up your serial
|
||||
port with an interrupt already taken by something else. As each device
|
||||
initializes, it asks Linux for permission to use its hardware interrupt.
|
||||
Linux keeps track of which interrupt is assigned to whom, and if your interrupt
|
||||
is already taken, your device won't be able to initialize properly. The
|
||||
device really doesn't have much of any way to tell you that this happened,
|
||||
except that when you try to use it, it will return a device-busy error.
|
||||
|
||||
A fix for this may be to remake the kernel, after doing "make config", and
|
||||
answering "no" to all the devices that you don't actually have. If they're
|
||||
compiled in, the software for these devices may be grabbing your interrupt,
|
||||
even though the physical device does not exist. Also, you can search through
|
||||
the source and include files. For example,
|
||||
"grep IRQ /usr/src/linux/include/linux/*" yields a "#define MOUSE_IRQ 5" line
|
||||
in busmouse.h. Another good place to look is in
|
||||
/usr/src/linux/net/tcp/Space.c.
|
||||
|
||||
- You might experience problems when you use the WAITFOR or WAITCHAR options in
|
||||
your /etc/defaults/getty.whatever file. Try taking them out.
|
||||
|
||||
3. I keep getting "respawning too fast, disableing for 5 minutes".
|
||||
|
||||
Make sure your modem is configured correctly. Look at registers E and Q.
|
||||
This usually occurs when your modem is chatting with 'getty'.
|
||||
|
||||
4. I have a modem/terminal connected, but root can't login from the serial
|
||||
device.
|
||||
|
||||
This is done on purpose for security reasons. Generally, you should only
|
||||
have root logins enabled on the console. It is considered dangerous to
|
||||
allow root logins on anything other than the console.
|
||||
|
||||
Edit /etc/login.defs, and find the line that says CONSOLE. Add the name
|
||||
of the serial device to it. Say I have my terminal on /dev/ttyS1. I would
|
||||
change the line:
|
||||
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty8
|
||||
to
|
||||
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty8:ttyS1
|
||||
|
||||
There are a lot of other interesting options to set in login.defs, too.
|
||||
|
||||
5. I have my terminal connected to my PC, but after I type in a login name,
|
||||
it just locks up.
|
||||
|
||||
You probably don't have CLOCAL in your /etc/gettydefs entry for the terminal.
|
||||
You need CLOCAL. Here is what it should look like:
|
||||
|
||||
# 9600 baud Dumb Terminal entry
|
||||
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
|
||||
|
||||
You might have to reboot for the changes to take effect.
|
||||
|
||||
6. At high speeds, my modem looses characters, and my computer gets really
|
||||
slow!
|
||||
|
||||
If you are trying to run your modem at > 19200 bps, and you don't have 16550
|
||||
UARTs, you should upgrade them. See the section about UARTs.
|
||||
|
||||
===============================================================================
|
||||
|
||||
(B). Linux ftp sites: (please choose the site nearest to you)
|
||||
|
||||
tsx-11.mit.edu:/pub/linux (MA, USA)
|
||||
sunsite.unc.edu:/pub/Linux (NC, USA)
|
||||
nic.funet.fi (Finland)
|
||||
|
||||
===============================================================================
|
||||
|
||||
(C). Recommended Reading:
|
||||
|
||||
init(1), getty(1), login(1)
|
||||
gettydefs(4)
|
||||
setserial(8)
|
||||
|
||||
Your modem manual
|
||||
|
||||
"The UNIX System Administration Handbook" by Nemeth, Snyder and Seebass
|
||||
|
||||
"Managing UUCP and Usenet" by Tom O'Reilly and Grace Todino,
|
||||
O'Reilly Associates, Inc ISBN 0-937175-93-5
|
||||
(highly recommended by nearly everyone)
|
||||
|
||||
===============================================================================
|
||||
|
||||
(D). There was no possible way to write this FAQ alone. Much of the material
|
||||
is repeated verbatim from the original sources.
|
||||
|
||||
Contributions, ideas, suggestions, and material:
|
||||
Brandon S. Allbery <bsa@kf8nh.wariat.org>
|
||||
Karl Buck <kxb@cis.ksu.edu>
|
||||
Bryan Curnutt <bryan%uhura1@uunet.uu.net>
|
||||
Arthur Donkers <arthur%ptt-iat@nluug.nl>
|
||||
Karlheinz Hagen <kalle@dg8lav.toppoint.de>
|
||||
Michael Hamilton <hamilton@golem.wcc.govt.nz>
|
||||
Wayne Hayes <wayne@csri.toronto.edu>
|
||||
John Henders <jhenders@jonh.wimsey.bc.ca>
|
||||
Ed Carp <erc@apple.com>
|
||||
Cheng Chang Huang <huangch@cps.msu.edu>
|
||||
Camillus Jayewardena <jayeward@abs.ascom.ch>
|
||||
Jerry Kaidor <jkaidor@synoptics.com>
|
||||
Juha Laiho <jlaiho@ichaos.nullnet.fi>
|
||||
Bambang N. Prastowo <prastowo@qucis.queensu.ca>
|
||||
Mark Schwabacher <schwabac@yoko.rutgers.edu>
|
||||
Andrew Tefft <teffta@engr.dnet.ge.com>
|
||||
Theodore Ts'o <tytso@Athena.MIT.EDU>
|
||||
|
||||
And also thanks to Ian Kluft <ikluft@uts.amdahl.com> for his cool AUTO-FAQ
|
||||
software.
|
||||
|
||||
Please send me any comments, suggestions, or additional material you have.
|
||||
I'm always eager to hear about what you thing about the FAQ. I'm also
|
||||
always on the lookout for improvements! But, please don't just tell me
|
||||
"it sucks". Tell me what exactly you don't understand, or what could
|
||||
be clearer.
|
||||
|
||||
If you find any wrong information, please contact me ASAP.
|
||||
|
||||
- Greg <gregh@cc.gatech.edu>
|
||||
|
||||
===============================================================================
|
||||
|
||||
Some things still to be answered:
|
||||
|
||||
- More detail on internal modems.
|
||||
|
||||
- More info on using multiport cards. Should 'setserial' be used with them?
|
||||
|
||||
BIN
docs/FAQ/serialFAQ_1.0.z
Normal file
BIN
docs/FAQ/serialFAQ_1.0.z
Normal file
Binary file not shown.
Reference in New Issue
Block a user