1567 lines
60 KiB
Plaintext
1567 lines
60 KiB
Plaintext
Newsgroups: comp.os.linux,comp.os.linux.announce,news.answers,comp.answers
|
|
Distribution: world
|
|
Followup-To: poster
|
|
From: corsini@labri.greco-prog.fr
|
|
Reply-To: linux@numero6.greco-prog.fr
|
|
Organization: Greco Prog. CNRS & LaBRI, Bordeaux France
|
|
Subject: Linux Frequently Asked Questions 3/4 [monthly posted]
|
|
Summary: Linux, a small and free unix-like for 386-AT computers.
|
|
|
|
Archive-name: linux-faq/part3
|
|
Last-Modified: 93/03/28
|
|
Version: 1.17
|
|
|
|
*********************************************************
|
|
* *
|
|
* Answers to Frequently asked questions about Linux *
|
|
* *
|
|
*********************************************************
|
|
|
|
This post contains Part 3 of the Linux FAQ (4 parts).
|
|
It must be read *after* the 2 first parts.
|
|
|
|
===================================8<====>8============================
|
|
CONTENTS (of this part)
|
|
|
|
VI. MISCELLANEOUS HINTS (part3)
|
|
VII. MORE HINTS (part3)
|
|
VIII. FEATURES (part3)
|
|
|
|
===================================8<====>8============================
|
|
|
|
|
|
|
|
VI. MISCELLANEOUS HINTS
|
|
=======================
|
|
*** This section is maintained by Matt Welsh (mdw@tc.cornell.edu). Please
|
|
*** mail me if you have any changes/updates/questions. Thanks -mdw
|
|
|
|
Special gcc information are located in section IX. A special section is
|
|
devoted to it since it's *the* compiler of Linux. I have subsectionned
|
|
this part in 3 subsections: Misc/Device Major-Minor/Serial Information.
|
|
|
|
|
|
VI.A. Misc information
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
VI.01) It seems that $#@! ported on linux don't run correctly, what
|
|
do I do about reporting bugs?
|
|
|
|
ANSWER: (Matt Welsh) It's possible that either the program itself has a bug
|
|
or that Linux has a problem that this program brings out. :) But first check
|
|
that the size of the file(s) corresponds that of the files(s) on the FTP
|
|
sites where it's available. If they're different, either you downloaded them
|
|
incorrectly (i.e. you forgot to turn on "bin") or whoever put them on the
|
|
FTP site uploaded them incorrectly.
|
|
|
|
If that's not the problem, then post to comp.os.linux asking about the
|
|
program, to verify that it is a bug. PLEASE: when posting possible "bug
|
|
reports" include all error and output information from running/compiling
|
|
the program. Just saying "it doesn't work" isn't very helpful. Also mention
|
|
your specific setup, Linux version, GCC version, etc. Some of these things
|
|
depend on running under certain versions and you may have missed that
|
|
information.
|
|
|
|
Note that my "ml-linux-bugs@dg-rtp.dg.com" bug reporting list has been
|
|
phased out. It turns out that Linux has so few bugs, most of which are
|
|
resolved on the newsgroup or through Linus before I can accumulate them
|
|
and post. :) In short: if there's a bug in Linux or in Linux-ported
|
|
software, it will usually be fixed in the next patchlevel or version.
|
|
|
|
|
|
VI.02) Has $#@! been ported to Linux?
|
|
|
|
ANSWER: First check out the FTP sites and read the monthly INFO-SHEET,
|
|
as well as the new "Linux News" and the META-FAQ's (all of which are
|
|
either available on the FTP sites and/or posted to the newsgroup as they're
|
|
written). Also check out the "Linux Project Registry" (posted to the
|
|
newsgroup and on the FTP sites) which lists ongoing/current Linux projects.
|
|
Also look in the "old" Linux digests and mailing-list archives, kept on
|
|
tsx-11.mit.edu and nic.funet.fi. Also, see if there's a GNU(*) version
|
|
of the program you're looking for (which are available everywhere).
|
|
Since Linux uses GCC as its native compiler, most GNU software ports
|
|
directly to Linux without problems. If all else fails, ask on the
|
|
mailing list or newsgroup if the program is ported and where it's
|
|
available.
|
|
|
|
|
|
(*) GNU stands for GNU's Not Unix, which (besides being a recursive
|
|
acronym) is a project started by the Free Software Foundation (the FSF)
|
|
to write a freely distributable version of Unix. The GNU kernel is
|
|
named HURD, and is based on Mach. It is currently being written, and is
|
|
not yet done. Many of the GNU utilities, however, are completed and are
|
|
much more functional than the original Unix utilities. Since they are
|
|
freely available, Linux is using them as well.
|
|
|
|
|
|
|
|
VI.03) I've ported $#@! to Linux, what should i do to add it in the
|
|
standard distribution?
|
|
|
|
ANSWER: (Matt Welsh) First read the previous Q/A, then talk to the
|
|
maintainers of the various releases (MCC interim, SLS, and so on)
|
|
about including your program with those releases. The best way to make
|
|
programs available to the rest of the world is to upload it to one of
|
|
the Linux FTP sites (such as tsx-11.mit.edu:/pub/incoming or
|
|
sunsite.unc.edu:/pub/Linux/Incoming).
|
|
|
|
BTW Whenever you submit binaries, please think that if you link them
|
|
with shared libraries, this might cause problems for those who (gasp!)
|
|
don't have the shared libraries installed. You can either link them
|
|
using -static, and if someone wants to build a shared version on their
|
|
own machine they can get the sources (which you should also make
|
|
available) and build it themself. Or else provide the shared lib.
|
|
|
|
|
|
VI.04) I want to port $#@! to Linux, what are the flags?
|
|
|
|
ANSWER: Recall that Linux implements subset of SYSV and POSIX, so
|
|
-DUSG and -DPOSIX work in general.
|
|
|
|
NOTE1: SIGBUS is not there, and can be safely commented out in general.
|
|
NOTE2: see section related to GCC, in the third part of this FAQ, for
|
|
more details.
|
|
|
|
|
|
VI.B. Major/Minor device number
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
*** This section is maintained by Rick Miller, any comments,
|
|
*** suggestions, remarks should be mailed to him at <rick@ee.uwm.edu>
|
|
*** Last Update: 17 Feb 1993 21:12:24 +0200
|
|
|
|
VI.05) What are the device minor/major numbers?
|
|
|
|
The Linux Device List
|
|
maintained by rick@ee.uwm.edu (Rick Miller, Linux Device Registrar)
|
|
February 17, 1993
|
|
|
|
Many thanks to richard@stat.tamu.edu, Jim Winstead Jr., and many others.
|
|
|
|
Majors:
|
|
0. Unnamed . (unknown) .... for proc-fs, NFS clients, etc.
|
|
1. Memory .. (character) .. ram, mem, kmem, null, port, zero, cmem
|
|
2. Floppy .. (block) ...... fd[0-1]<[dhDH]{360,720,1200,1440} or fd[01]
|
|
3. Hard Disk (block) ...... hd[a-b]<[0-8]>
|
|
4. Tty ..... (character) .. {p,t}ty<{S,[p-s][0-f]}><#>
|
|
5. tty ..... (character) .. tty, cua[0-63]
|
|
6. Lp ...... (character) .. lp[0-2] or par[0-2]
|
|
7. Tape .... (block) ...... t[0-?] (reserved for Non-SCSI tape drives)
|
|
8. Scsi Disk (block) ...... sd[a-h]<[0-8]>
|
|
9. Scsi Tape (block) ...... <n>rmt[0-1]
|
|
10. Mouse ... (character) .. bm, psaux (mouse)
|
|
11. CD-ROM .. (block) ...... scd[0-1]
|
|
12. QIC-tape? (character) .. rmt{8,16}, tape<{-d,-reset}>
|
|
13. XT-disk . (block) ...... xd[a-b]<[0-8]>
|
|
14. Audio ... (character) .. audio, dsp, midi, mixer, sequencer
|
|
|
|
Breakdown of minors by Majors:
|
|
------------------------------
|
|
0. Unnamed . (unknown) .... for proc-fs, NFS clients, etc.
|
|
Minors?
|
|
|
|
1. Memory .. (character) .. ram, mem, kmem, null, port, zero, cmem
|
|
0. /dev/ram
|
|
1. (block): RAM-Disk (character): /dev/mem
|
|
2. /dev/kmem
|
|
3. /dev/null
|
|
4. /dev/port
|
|
5. /dev/zero
|
|
6. /dev/cmem
|
|
|
|
2. Floppy .. (block) ...... fd[0-1]<[dhDH]{360,720,1200,1440}>
|
|
Minors are [drive + [4 * type]] where drive 0-3 == A:-D: (floppy)
|
|
and type is: 0: Autodetect 4: 720k in 3.5"
|
|
1: 360k in 5.25" 1.2M 5: 360k in 5.25" 1.2M
|
|
2: 1.2M in 5.25" 1.2M 6. 720k in 5.25" 1.2M
|
|
3: 360k in 3.5" 7. 1.44M in 3.5" 1.44
|
|
|
|
0. /dev/fd0: Autodetected first floppy.
|
|
1. /dev/fd1: Autodetected second floppy.
|
|
2. /dev/fd2: Autodetected third floppy.
|
|
3. /dev/fd3: Autodetected fourth floppy.
|
|
4. /dev/fd0d360: 360k in 5.25" 1.2M first drive
|
|
5. /dev/fd1d360: 360k in 5.25" 1.2M second drive
|
|
(You can work out the rest of the intermediates...)
|
|
8. /dev/fd0h1200: 1.2M in 5.25" 1.2M first drive
|
|
12. /dev/fd0D360 (/dev/fd0H360): 360k in 3.5" first drive
|
|
16. /dev/fd0D720 (/dev/fd0H720): 720k in 3.5" first drive
|
|
20. /dev/fd0h360: 360k in 5.25" 1.2M first drive
|
|
24. /dev/fd0h720: 720k in 5.25" 1.2M first drive
|
|
28. /dev/fd0H1440: 1.44M in 3.5" 1.44M first drive
|
|
|
|
Naming goes like this:
|
|
fd[drive][type][size] where:
|
|
[drive]=0-3: Just like DOS's "A:"-"D:".
|
|
[type]={d,h,D,H}: Enlighten me. All I can tell you
|
|
for certain is that the capital
|
|
letters represent 3.5" drives.
|
|
[size]={360,720,1200,1440} kilobytes.
|
|
|
|
3. Hard Disk (block) ...... hd[a-b]<[0-8]>
|
|
0. /dev/hda (/dev/hda0): The whole first HD, including its MBR.
|
|
1-4. /dev/sda{1-4}: Primary partitions on the first SCSI drive.
|
|
5-8. /dev/sda{5-8}: Extended partitions on the first SCSI drive.
|
|
64. /dev/hdb (/dev/hdb0): The whole second HD, including its MBR.
|
|
65-68. /dev/sdb{1-4}: Primary partitions on the second drive.
|
|
69-72. /dev/sdb{5-8}: Extended partitions on the second drive.
|
|
|
|
Notes: BE *VERY* CAREFUL WITH /dev/hda AND /dev/hdb!! These two
|
|
devices signify the *entire* *drive*, not just one partition.
|
|
The only things that use /dev/hda or /dev/hdb are things that
|
|
need to read/change the partition table (like fdisk).
|
|
|
|
Linux doesn't order anything. It perceives partitions in the
|
|
order in which they appear in the partition table. Thus,
|
|
/dev/hd?1 may follow /dev/hd?2 in the cylinder numbering.
|
|
|
|
The names of the hard drives are not the same as under Minix.
|
|
|
|
4. Tty ..... (character) .. {p,t}ty<{S,[p-s][0-f]}><#>
|
|
0. /dev/tty0: This is the currently active Virtual Console.
|
|
1-63. /dev/tty[1-63]: Specific virtual consoles.
|
|
64-127. /dev/ttyS[0-63]: Serial ports (dial-in mode).
|
|
128-191. /dev/pty[p-s][0-f]: PTY Masters.
|
|
192-255. /dev/tty[p-s][0-f]: PTY Slaves. ([0-f]=0123456789abcdef)
|
|
|
|
Notes: There are several constants set in the kernel sources which
|
|
can be changed to compile a more customized kernel. They're
|
|
found in [/usr/src]/linux/include/linux/tty.h:
|
|
|
|
NR_CONSOLES The number of virtual consoles.
|
|
NR_SERIALS The number of serial lines.
|
|
NR_PTYS The number of pty's.
|
|
|
|
5. tty ..... (character) .. tty, cua[0-63]
|
|
0. /dev/tty: the tty that owns the process calling it.
|
|
64-127. /dev/cua[0-63]: Serial ports (dial-out mode).
|
|
|
|
6. Lp ...... (character) .. lp{0-2} or par{0-2}
|
|
Parallel (printer) ports. (Increasable in include/linux/lp.h)
|
|
0. /dev/lp0
|
|
1. /dev/lp1: Same as MS-DOS's "LPT1:" on my machine...
|
|
2. /dev/lp2
|
|
|
|
Notes: The number of line printers is defined by LP_NO which is
|
|
found in [/usr/src]/linux/include/lp.h.
|
|
|
|
Even if you only have one printer port, Linux may still call
|
|
it /dev/lp1 (rather than /dev/lp0). Watch during boot-up to
|
|
see how it recognizes your printer port.
|
|
|
|
7. Tape .... (block) ...... t[0-?] (reserved for Non-SCSI tape drives)
|
|
This one's getting old. No minor numbers are yet assigned.
|
|
It's not even in the source code. Maybe it never will be...
|
|
|
|
8. Scsi Disk (block) ...... sd[0-?] or sd[0-?][0-?]
|
|
Minors numbers are [[16 * DiskNR] + partition]
|
|
|
|
The system autoconfigures at boot time, and the kernel simply
|
|
assigns numbers (DiskNR) to each disk as it finds them, starting with 0.
|
|
|
|
0. First HD (/dev/sda), whole drive including Master Boot Record.
|
|
1-4. Partitions on the first HD.
|
|
5-15. Logical partitions within an extended partition on first HD.
|
|
16. Second HD (/dev/sdb), whole drive including Master Boot Record.
|
|
17-20. Partitions on the second HD.
|
|
21-31. Logical partitions within an extended partition on second HD.
|
|
etc.
|
|
|
|
|
|
9. Scsi Tape (character) .. st[0-?]
|
|
|
|
For a SCSI tape, each physical device has two minor numbers
|
|
that are associated with it. If you have two tape drives, then
|
|
minors 0 and 1 will refer to the first and second drives and the
|
|
tape will be rewound when the device is closed. Minor numbers 128
|
|
and 129 (i.e. 128+n) also refer to the first and second physical
|
|
drives, but the tape will not be rewound after closing the device.
|
|
If you have one tape, you could create the devices with the
|
|
following commands:
|
|
|
|
mknod /dev/rmt0 c 9 0
|
|
mknod /dev/nrmt0 c 9 128
|
|
|
|
10. Mouse (character) .. bm, psaux (mouse)
|
|
(MGR may require that /dev/mouse be linked to one of these...)
|
|
NOTE THE CHANGES TO DIFFERENTIATE MOUSE TYPES!
|
|
(Please implement these in the distributions.)
|
|
0. /dev/logibm: (Logitec?) bus mouse
|
|
1. /dev/psaux: PS/2 mouse port
|
|
2. /dev/inportbm: MicroSoft "InPort" bus mouse
|
|
3. /dev/atibm: ATI XL bus mouse
|
|
|
|
If you don't feel like re-configuring your applications, you can
|
|
just leave the old "/dev/bm" lying around.
|
|
|
|
11. CD-ROM .. (block) ...... scd[0-1]
|
|
0. /dev/scd0: The first (detected) SCSI CD-ROM.
|
|
1. /dev/scd1: The second (detected) SCSI CD-ROM.
|
|
("There's not much more to it than that" says Eric Youngdale.)
|
|
|
|
12. QIC-tape? (character) .. rmt{8,16}, tape<{-d,-reset}>
|
|
(I really don't have much info on this one... )
|
|
6. /dev/rmt8: QIC-120
|
|
8. /dev/rmt16 (/dev/tape): QIC-150
|
|
136. /dev/tape-d: (It has something to do with being 128+8... ?)
|
|
255. /dev/tape-reset: For resetting only.
|
|
|
|
13. XT-disk . (block) ...... xd[a-b]<[0-8]>
|
|
XT (8-bit) hard disk controller devices.
|
|
Minor numbers are assigned in the same manner as for the
|
|
normal Hard Drive devices ("/dev/hd*").
|
|
|
|
14. Audio ... (character) .. audio, dsp, midi, mixer, sequencer
|
|
0. /dev/mixer: Mixer and Control Device
|
|
1. /dev/sequencer: FM-synthesizer and Midi
|
|
2. /dev/midi: (for future use)
|
|
3. /dev/dsp: Digitized voice (DAC/ADC)
|
|
4. /dev/audio: (Reserved for compatibility with Sun)
|
|
|
|
NOTE: all the numbers given are in decimal form (the one you can see if
|
|
you perform ls -l on /dev).
|
|
|
|
|
|
VI.06) Could some one give me indication about the meaning of the
|
|
IRQ's ?
|
|
|
|
|
|
ANSWER: (alawrenc@sobeco.com:)
|
|
Standard IRQ's :
|
|
IRQ 0 - Timer
|
|
IRQ 1 - Keyboard
|
|
IRQ 2 - Slave 8259 (AT)
|
|
IRQ 3 - COM 2 / COM 4
|
|
IRQ 4 - COM 1 / COM 3
|
|
IRQ 5 - (XT) Hard Disk, (AT) LPT2
|
|
IRQ 6 - Floppy Disk
|
|
IRQ 7 - LPT1
|
|
|
|
AT only IRQ 8 - Real Time Clock
|
|
IRQ 9 - Re-direct to IRQ 2
|
|
IRQ 10 - Not Defined
|
|
IRQ 11 - Not Defined
|
|
IRQ 12 - Not Defined
|
|
IRQ 13 - 80287
|
|
IRQ 14 - Hard Disk (AT)
|
|
IRQ 15 - Not Defined
|
|
|
|
VI.07) (Chuck Boyer) Could some one clear up the devices meaning?
|
|
|
|
ANSWER: (Jim Winstead Jr)
|
|
>port
|
|
|
|
This allows programs to access the hardware ports directly. Not
|
|
something you generally mess around with much.
|
|
|
|
>ptyp0-3
|
|
>ptypa...tty
|
|
|
|
These are the pseudo-tty 'master' devices. Each pty connection uses
|
|
a slave-master set of tty devices.
|
|
|
|
>tty0...
|
|
|
|
tty[1-8] are the virtual consoles associated with Alt-F[1-8]. tty0 is
|
|
the current virtual console (so writing something to tty0 goes to the
|
|
current vc).
|
|
|
|
>tty64 I've figured out is the modem connection
|
|
|
|
Yes, that would correspond to COM1 under DOS. However, the tty64 name
|
|
is obsolete - ttys[1-4] should be used instead.
|
|
|
|
>ttyp0...
|
|
>ttypa...
|
|
|
|
These are the pseudo-tty 'slave' devices.
|
|
|
|
>ttys1...
|
|
|
|
These are the serial devices. ttys1 corresponds to COM1 under DOS,
|
|
ttys2 corresponds to COM2, etc.
|
|
|
|
|
|
|
|
VI.C Special Serial
|
|
~~~~~~~~~~~~~~~~~~~
|
|
*** This section is maintained by Jim Gifford
|
|
*** (jgifford@attmail,world.std}.com
|
|
*** Last update October 1992.
|
|
|
|
Douglas E. Quale:
|
|
This has come up a couple of times already (including the case of
|
|
serial mice as well), but for the record stty acts on stdin not
|
|
stdout. Old stty's (from V7 through BSD4.3) used stdout, but this is
|
|
suboptimal and doesn't conform to POSIX. The GNU stty you are likely
|
|
using on Linux uses stdin, as does the stty distributed with BSD
|
|
Networking Release 2. (Also, ``stty -a'' is more informative about
|
|
possible parameters, although it's pretty hard for me to remember what
|
|
90% of that stuff does without refering to the man page.)
|
|
Jim Gifford:
|
|
However, there are a few older (of mysterious origin) stty's that work
|
|
on stdout(I have one myself!)
|
|
|
|
VI.08) Is there a list somewhere where I can get help with serial
|
|
communications under Linux?
|
|
|
|
ANSWER: (Jim Gifford -- jgifford@world.std.com)
|
|
There is a list for the discussion of serial communications under
|
|
Linux. It is for problems, drivers, new developments, etc... with
|
|
the Linux serial devices. The list is: linux-serial@stolaf.edu
|
|
To join, send mail to linux-serial-request@stolaf.edu
|
|
I hope that this list will prove beneficial to the improvement of
|
|
Linux. This list is maintained by Michael K. Johnson as
|
|
linux-serial-request@stolaf.edu
|
|
|
|
VI.09) When I run kermit under Linux, I get "Warning, Read access
|
|
to lock directory denied". What am I doing wrong?
|
|
|
|
ANSWER: Nothing, you just need to create /usr/spool/uucp (kermit 4.6?)
|
|
or /usr/spool/locks (this is for the kermit5A), which is where kermit
|
|
like to lock files.
|
|
|
|
VI.10) What are the major, minor numbers for the serial ports under linux?
|
|
|
|
ANSWER: Major 4, Minor :
|
|
64 /dev/ttys0 - com1
|
|
65 /dev/ttys1 - com2
|
|
66 /dev/ttys2 - com3
|
|
67 /dev/ttys3 - com4
|
|
|
|
VI.11) can anyone give me a sample /etc/inittab entry for login
|
|
from a pc attached to serial line /dev/ttys2?
|
|
|
|
ANSWER: "Humberto speaking :), updated by Rick Miller"
|
|
First set up the modem to turn off echo and enable auto answer, I do
|
|
this in kermit by connecting to the modem and typing "ate0s0=1"
|
|
followed by enter (w/o quotes). Then setup inittab to spawn getty on
|
|
the modem
|
|
ttys2:vt100:/etc/getty -m 1200 ttys2
|
|
(Replace "vt100" with the name of the /etc/termcap entry for the
|
|
terminal type you will use, or use "dumb" if you don't have one.)
|
|
|
|
Then it should work. Some modems can be permanently set to disable
|
|
echo and set auto answer, see your manual.
|
|
|
|
Jim Weigand says:
|
|
disable all messages. This will prevent getty from hanging up
|
|
your modem.
|
|
Set For:
|
|
ATE0 No echo
|
|
ATQ1 No messages
|
|
ATS0=2 Answer 2nd ring
|
|
ATS7=60 1 minute to answer (shorter if 2400 baud)
|
|
You can use kermit to set these. Do an AT&W to save for power-up.
|
|
|
|
Michael K. Johnson says:
|
|
If you would rather not save these commands as defaults to come up
|
|
on power-up, perhaps because you want to use your current modem
|
|
settings under a DOS communications package, you can also shove
|
|
these command out ttys? from /etc/rc (or /etc/rc.local) using
|
|
the command:
|
|
echo "<modem_settings>" > /dev/ttys?
|
|
|
|
VI.12) How do I set parameters like parity for serial login?
|
|
|
|
ANSWER: Use stty and redirect input from the serial line.
|
|
ex: stty parodd < /dev/ttys2 which gives ttys2 odd parity.
|
|
type stty -a to get an idea of possible parameters.
|
|
Or 'man stty' as well :)
|
|
|
|
|
|
|
|
|
|
VII. MORE HINTS
|
|
===============
|
|
|
|
This part try to keep track of the different information
|
|
that appeared in comp.os.linux and on the list since beginning of
|
|
March. I tried to update it for KERNEL_VERSION, so there might be some
|
|
mistakes. Moreover take care to use the correct library and include
|
|
stuff, and the ad-hoc gcc you use !!!
|
|
|
|
|
|
VII.01) How can I backup my Hd under Linux ?
|
|
|
|
ANSWER: I know at least two ways. One possibility is tar and mtools,
|
|
another possibility is the diskbackup/diskrestore of Diamano Bolla
|
|
(digest37 vol. #2) which saves big hd to floppies using the
|
|
stdin/stdout. These utilities have been uploaded to the major sites in
|
|
file disksplit.tar.Z.
|
|
An example usage (Roger Binns) is:
|
|
|
|
tar cvf - bin dev usr etc .. | compress | diskbackup
|
|
|
|
and to restore:
|
|
|
|
diskrestore | uncompress | tar xvf -
|
|
|
|
BTW: if you are on Ethernet you could send your files via tar..|rsh (tar...)
|
|
or even via NFS to a host which is regularly backed up !
|
|
|
|
|
|
VII.02) Where is 'which' ?
|
|
|
|
ANSWER: It depends on the sh you are running:
|
|
in bash 'type -path'
|
|
in tcsh it's a builtin
|
|
|
|
for rc you can try the following (untested by me) script from
|
|
Kevin Brown:
|
|
|
|
#!/bin/sh
|
|
for i in `echo $PATH | sed 's/:/ /g'` ; do
|
|
for j in ""$@" ; do
|
|
if test -x "$i/$j" ; then
|
|
echo "$i/$j"
|
|
fi
|
|
done
|
|
done
|
|
|
|
VII.03) How to use setterm: for the novice?
|
|
|
|
ANSWER:The setterm utility provides access to most of Virtual Consoles
|
|
(VCs) functionality. You can set your screen up to blank at 10
|
|
minutes using:
|
|
setterm -blank 10
|
|
|
|
You can set colors, and clear the screen. For a full list of commands,
|
|
just type "setterm" with no arguments.
|
|
|
|
There are a few tricks with the screen dumper can really make VCs go a
|
|
long way. Here are a few of the common ones that I use:
|
|
|
|
setterm dump
|
|
|
|
Dumps the contents of the current VC to screen.dump (in the current dir).
|
|
|
|
setterm dump 4
|
|
|
|
Dumps the contents of VC 4 to screen.dump
|
|
|
|
setterm -file mydumpfile -dump 4
|
|
|
|
Dump the contents of VC 4 to the file mydumpfile
|
|
|
|
setterm -file /dev/tty0 -dump 4
|
|
|
|
Dumps the contents of VC 4 to the current VC.
|
|
|
|
setterm -file /dev/tty4 -dump
|
|
|
|
Dumps the contents of the current VC to VC 4.
|
|
|
|
setterm -file /dev/ttys1 -dump
|
|
|
|
Dumps the contents of the current VC to the serial port.
|
|
Handy if you are logged on and want to paste a screen full without
|
|
having to resort to doing a file transfer.
|
|
|
|
setterm -file mydumpfile -append 4
|
|
|
|
Appends to instead of overwriting the dump file. Useful if you
|
|
have several screens you wish to concatenate.
|
|
|
|
|
|
VII.04) I've tried clear/reset which exist on most of unix but it
|
|
doesn't work, have I missed something?
|
|
|
|
ANSWER: setterm -clear or setterm -reset will solve your missing. For
|
|
clear, you can also write a small script (which use the cl: part of
|
|
/etc/termcap wrt your TERM), or use bash where ctrl-l will do it for
|
|
you.
|
|
|
|
|
|
VII.05) I know there are VC, but where is the setterm stuff?
|
|
|
|
ANSWER: It's in the current distribution (i.e. on the images), the
|
|
source can be found in virtcons.tar.Z at nic.
|
|
|
|
|
|
VII.06) I know there are shared libraries; does there exist an easy
|
|
way to check an executable for sharing ?
|
|
|
|
ANSWER: (Claude Morin:) There exists at tsx-11 ldd.tar.Z If you follow
|
|
the instructions, you will be able to type "ldd <executable>" to List
|
|
the Dynamic Dependencies of the executables. In other words 'ldd'
|
|
prints the name of the shared libraries needed by the executable,
|
|
nothing appears for static one.
|
|
|
|
ANSWER: (Josh Yelon & HJ Lu) - very old binaries.
|
|
(J.Y.) An executable which shares a library is linked with an
|
|
(ordinary, non-shared) "stub" version of the library. One of the first
|
|
thing this stub does (when the executable is run) is to ask the kernel
|
|
to load the (big) "shared version" of the library (which is usually
|
|
named /lib/lib.XX.XX) The upshot of this is that in the code for the
|
|
stub (part of the executable), is the string "/lib/lib.XX.XX"; which
|
|
can be searched by using 'strings' or 'grep'.
|
|
(HJ. L.) if you have gcc2.11a or later the shared image is changed to
|
|
/lib/libxxxx_vyy_zzz. And you should better use nm to find
|
|
"__shared_lib" (nm failed on stripped executable). You can also write
|
|
a function for "file", which can even check the version number ....
|
|
|
|
VII.07) What is the rdev program provided in the images?
|
|
|
|
ANSWER: It's a program from Werner Almesberger of ETH. With no
|
|
argument it prints the first line of /etc/mtab. With one argument, a
|
|
boot-image, it prints the device configured as the root device, and
|
|
with two arguments, a boot image and a device, it sets the device as
|
|
default root in the specified image.
|
|
|
|
|
|
VII.08) How to start Linux from drive B?
|
|
|
|
ANSWER: There is a DOS utility called boot_b.exe (look at DOS ftp).
|
|
Another simple way is to open the box and invert the cables.
|
|
|
|
|
|
VII.09) The program boot_b works fine /but/ once the first disk is
|
|
read the system go back to the first drive, any hints?
|
|
|
|
ANSWER: Yes, change the bootimage in just the same way that you change
|
|
it to boot on the hard drive, execept that the major/minor pair is
|
|
different. All these information are in the file INSTALL-0.10.
|
|
Remember that if you use a sun or other endian machine, you will need
|
|
to reverse the byte order when you run the filter program (also in the
|
|
same file).
|
|
|
|
|
|
VII.10) How can I get Linux to boot directly from the harddisk?
|
|
|
|
ANSWER: (Rick) The best option right now is LILO version ALPHA.8. It
|
|
has been generally agreed that the days of using "shoelace" are at an
|
|
end. See Section III of this FAQ for LILO information.
|
|
|
|
VII.11) I use shoelace, but I want to change my root partition, what
|
|
is the process to get rid of it?
|
|
|
|
ANSWER: With Norton utility you can put back a standard boot sector.
|
|
Another possibility is to restore the old boot sector (the one you
|
|
should have backup *before* installing shoelace).
|
|
|
|
|
|
VII.12) Sometimes, when I want to remove a directory, I get an error
|
|
message, is it a (known) bug?
|
|
|
|
ANSWER: No, There is no bug at all, you probaly have another shell
|
|
on another VC whose working directory is either the one you try to
|
|
remove, either a subdirectory of it.
|
|
|
|
|
|
VII.13) I'm looking for init, getty, login, passwd stuff, where
|
|
can I find them?
|
|
|
|
ANSWER: You should find it in shadow.tar.Z (only sources), at least
|
|
at tsx in the usr.bin directory. Many people have reported some troubles
|
|
with the *OLD* shadow-passwd (shadow-bin.tar.Z and shadow-src.tar.Z, so
|
|
do not use them anymore); an alternative might be the mcc-interim
|
|
which contains standard passwd binary. There is also the Peter Orbaek's
|
|
admutil-1.?.tar.Z and poeigl-1.?.tar.Z which contains source for
|
|
shutdown, su, chsh, passwd and a system V init compatible.
|
|
|
|
|
|
VII.14) How can I setup a user account other than root ?
|
|
|
|
ANSWER: You can either use the adduser program, either do it manually.
|
|
In the later case, you have to:
|
|
a) edit /etc/passwd as root and add a line of the following format:
|
|
user:passwd:uid:gid:user name:home directory:login shell
|
|
|
|
user is the login name; uid is the numeric user id, it should be
|
|
unique; gid is the numeric group id, this number should correspond to
|
|
an entry in /etc/group. The passwd field should be left blank 'cause
|
|
it is stored in an encrypted form [to set this field just use the
|
|
passwd program].
|
|
example
|
|
faq::200:5:Marc-Michel:/home/faq:/bin/sh
|
|
b) Still as root, you shoud now create the home directory and set the
|
|
correct ownership.
|
|
mkdir /home/faq
|
|
chown faq /home/faq
|
|
chgrp 5 /home/faq
|
|
|
|
|
|
VII.15) I've been trying to get Linux to run on my [3/4]86 box. It
|
|
can't even boot. Any suggestions?
|
|
|
|
ANSWER: The most common error/problem is writing the bootimage to a
|
|
low density disk. It fits, but the bootstrap code will only recognize
|
|
high density disk. So try to format explicitely disk as high density:
|
|
- for 3.5", 'format a: /n:18 /t:80 '
|
|
- for 5.25", 'format a: /n:15 /t:80 '
|
|
|
|
|
|
VII.16) Does there exist games, languages (other than C), and
|
|
anything which make the system more friendly?
|
|
|
|
ANSWER: Yes, among other things there are rogue and yahtzee; TeX;
|
|
Prolog, Perl.. but in general, if you want some extra tool port it to
|
|
Linux this is also a good beta-testing exercice.
|
|
|
|
|
|
VII.17) Whenever I use uemacs 3.1X on a symlink, the symlink does
|
|
not exist anymore, why?
|
|
|
|
ANSWER: (Tristram Mabbs) Since ue3.10, uemacs uses 'safe save' mode,
|
|
writing the file to a temporary and moving it OVER the original. In
|
|
the process, this deletes the original. To prevent this just add the
|
|
following in your emacs '.rc' file: set $ssave FALSE
|
|
|
|
|
|
VII.18) I have an SVGA, but Linux detect an EGAc/EGAm; is it normal?
|
|
|
|
ANSWER: (Jim Winstead) This is correct actually. You have an EGA+ card
|
|
(SVGA) with a Color/Mono monitor. The only four possibilties are EGAc,
|
|
EGAm, *MDA and *CGA (according to the code in
|
|
kernel/chr_drv/console.c).
|
|
The true test, if Linux detects your video card, is if you press
|
|
<RETURN> at the "Press <RETURN> to see SVGA- ..." boot-time message.
|
|
If you have a SVGA recognized card, it will ask you to choose a
|
|
screen size. If not detected, the default is 80x50 mode.
|
|
BTW if you have no SVGA, press the <space> and you are in 80x25 mode.
|
|
|
|
If you have dowloaded the kernel, you can automatically skip this
|
|
query at boot-time if you set the SVGA_MODE variable in the main
|
|
Makefile before compiling a new bootimage.
|
|
|
|
|
|
VII.19) How can I change the keyboard repeat rate?
|
|
|
|
ANSWER: (Michael K Johnson) In boot/setup.S there are the lines:
|
|
! set the keyboard repeat rate to max
|
|
mov ax,#0x0305
|
|
mov bx,0x0000
|
|
int 0x16
|
|
|
|
If you don't want to change the repeat rate at all, just comment out
|
|
these lines. If you want something in the middle, change the
|
|
mov bx,0x000
|
|
by mov bx,0x??yy
|
|
where ??yy is determined by (Ralf Brown's interrupt list)
|
|
bh= delay value (0x00 = 250ms to 0x03= 1000ms (one sec))
|
|
this is the delay before the repeat is performed
|
|
bl= repeat rate (0x00 =30/sec to 0x1f=2/sec; 0x0c=10/sec [default])
|
|
|
|
|
|
VII.20) I compiled fdformat.c and ran it on 1.44Mb and 1.2Mb, the
|
|
results are unreadable, any clue?
|
|
|
|
ANSWER: (M. Pereckas) fdformat only low-level formats the disk. to use
|
|
the fdformatted disk with DOS filesystem, run mformat on the disk.
|
|
Mformat writes DOS filesystem information but is unable to low-format
|
|
:). In order to put a Linux filesystem on a (low)formatted disk you
|
|
have to mkfs it.
|
|
|
|
VII.21) Is it possible to disable the 3-fingers salute
|
|
(ctrl-alt-del) ?
|
|
|
|
ANSWER: Yes, in kernel/sys.c you can read the following:
|
|
|
|
/*
|
|
* this indicates wether you can reboot with ctrl-alt-del: the deault is yes
|
|
*/
|
|
static int C_A_D = 1;
|
|
|
|
there is also a small utility written by Linus in digest242 vol#2
|
|
|
|
|
|
VII.22) Could some one explain the information provided at boot-time?
|
|
|
|
ANSWER: (Jim Winstead Jr)
|
|
> serial port at 0x03f8 is a 16450
|
|
> serial port at 0x02f8 is a 16450 (what's that the uart chip?)
|
|
|
|
Right, the last number should either be 8250, 16450, 16550, or 16550a,
|
|
and on the two 16550 models, it will report that FIFO's have been
|
|
disable (16550) or enabled (16550a).
|
|
|
|
> 8 virtual consoles (that's how many alt-F's I can get going?
|
|
> but only F1-4 actually work)
|
|
|
|
You can get sessions running on Alt-F[1-8], but the 'standard'
|
|
/etc/inittab only runs getty/login on Alt-F[1-4]. You can start
|
|
sessions on the other consoles by using 'doshell' or adding lines to
|
|
/etc/inittab.
|
|
|
|
> 4 pty's (are these the consoles F1-4?)
|
|
|
|
No, those are 'pseudo' ttys, which programs like MGR use to simulate
|
|
tty connections. That's probably a gross over-simplification, but it
|
|
gives you the general idea, I think. :)
|
|
|
|
> p_init: lp1 exists (0) (is that the (l)ine (p)rinter?)
|
|
|
|
Right.
|
|
|
|
|
|
VII.23) What is the meaning of files ended by .T.Z (or .taz) ?
|
|
|
|
ANSWER: The suffix Z is for compressed files (to uncompress them use
|
|
the command `uncompress file.Z`).
|
|
The suffix T indicates a "tar file" the usual suffix is tar but, the
|
|
14 chars filename limit of the Minix filesystem makes it cumbersome to
|
|
use .tar.Z (to untar a file ended by .T, use the command
|
|
`tar options file.T` (see the man page for more details).
|
|
|
|
For the .taz file, change them as .T.Z and go-ahead.
|
|
|
|
VII.24) What is the meaning of files ended by .T.z (or .tpz) ?
|
|
|
|
ANSWER: The suffix z is for files compressed with the
|
|
gzip utility, which is being used more frequently because it provides
|
|
better compression. These can be uncompressed with the `gzip -d
|
|
file.z` command.
|
|
|
|
|
|
VII.25) I have upgraded the kernel from XX to YY (XX > YY), however the
|
|
login screen still says YY.
|
|
|
|
ANSWER: Just change the message in one of these files: /etc/issue and
|
|
/etc/motd. The former contains the message before the login, the later
|
|
is the one after you are logged in.
|
|
|
|
VII.26) What is doshell good for ?
|
|
|
|
ANSWER: It's an old program provided in the early Linux version (0.12)
|
|
when the getty was not already there, it spawns a shell on any tty's.
|
|
(Mattew Gream): I do this quite often ( getty on tty1, 2, 3 and my
|
|
rc.local spawns a shell on tty4 as follows
|
|
'/usr/bin/doshell /dev/tty4 /bin/tcsh &'
|
|
|
|
|
|
VII.27) I don't have the kernel sources, how can I change the keyboard
|
|
language?
|
|
|
|
ANSWER: You can use the fixkbd program written by Laurent JULLIARD
|
|
(Laurent_JULLIARD@grenoble.hp.com). Its purpose is to fix the keyboard
|
|
map used in your kernel image. It works more or less a la "rootdev"
|
|
(or rdev). It can be found on tsx-11.mit.edu in
|
|
/pub/linux/binaries/sbin/fixkbd.tar.Z.
|
|
|
|
|
|
VII.28) Does there exist a possibility to track down the source of
|
|
kernel pannic messages ?
|
|
|
|
ANSWER: Here's info from Linus on how to track down the source
|
|
of kernel panic messages. The values for EIP, address, and so on are
|
|
JUST EXAMPLES: the EIP, EFLAGS, etc. can be anything.
|
|
|
|
The lines after ">" were written by me; the responses by Linus.
|
|
|
|
> Unable to handle kernel paging request at address C000000A
|
|
|
|
This means something in the kernel tried to access kernel memory at
|
|
address 0x00A (the C0000000 offset is due to the kernel starting at
|
|
virtual address 0xC0000000). The first page of kernel address space is
|
|
unmapped to find these kinds of incorrect references (it's probably a
|
|
NULL dereference to a structure member at offset 0xA).
|
|
|
|
> Oops: 0002
|
|
|
|
Error code. This tells you if it's a read or write (forget which ritgh
|
|
now, and don't have any books handy)
|
|
|
|
> EIP: 0008:000290D2
|
|
|
|
This is where it happened: segment 0008 (kernel code segment) and offset
|
|
0x290D2 into the kernel. So to find this, you generally do something
|
|
like
|
|
|
|
nm /usr/src/linux/tools/system | sort | less
|
|
|
|
and search for the function that contains the address 0x290D2.
|
|
|
|
> EFLAGS: 00010087
|
|
> fs: 0017
|
|
|
|
Eflags and fs when the exception happened. You usually don't need this.
|
|
|
|
> base: C0000000, limit: 000A0000
|
|
> Pid: 0, process nr: 0
|
|
|
|
In what process the exception happened. This is the swapper, which also
|
|
means the thing is fatal (other processes you can just kill). That it's
|
|
in the swapper process probably means that it's an interrupt that did
|
|
it, as the swapper doesn't really do anything.
|
|
|
|
> 89 50 04 c7 03 00 00 00 00 c7
|
|
|
|
This is the instruction that resulted in the error. I usually
|
|
disassemble them by hand and see what it is, then I try to find out
|
|
exactly where in the function this assembly sequence comes up (probably
|
|
by compiling the .c file to a .s file and looking around).
|
|
Alternatively you can just run 'gdb' on /usr/src/linux/tools/system, but
|
|
gdb has some problems.
|
|
|
|
> task[0] (swapper) killed: unable to recover
|
|
> kernel panic: Trying to free up swapper memory space
|
|
> In swapper task - not syncing
|
|
|
|
This is just to tell you not to expect anything from the kernel any
|
|
more: linux cannot go on without the swapper task.
|
|
|
|
> How can I decode the numbers in the message?
|
|
> Also, note that sometimes the "Unable to handle..."
|
|
> message is followed by the "Oops: 0002" block, but
|
|
> the last message is sometimes something else (i.e. not
|
|
> always a "task[0] (swapper)...." message, but something
|
|
> from the TCP driver in this case.
|
|
|
|
It depends on where it happened. If it's an interrupt, it can
|
|
essentially happen in any task (all interrupts are handled in the task
|
|
that happens to be currently active), while "normal" code happens in the
|
|
task that calls it.
|
|
|
|
|
|
|
|
|
|
VIII. FEATURES
|
|
==============
|
|
|
|
VIII.01) I've read that linux has virtual consoles, what must I do to
|
|
get them?
|
|
|
|
ANSWER: Yes there are, you can access them with the left <alt>-key
|
|
together with <Fn>-key. With the Linux Images distribution, 4 consoles
|
|
are available, getty runs on them.
|
|
Notice that they are NOT accessible when running X (contrary to some
|
|
commercial unices).
|
|
|
|
VIII.02) When Linux boots, I get the following message "8 virtual
|
|
consoles"; how can I acess to the 5-8 vc's ?
|
|
|
|
ANSWER: If you want the getty to run on the 5-8, you should add the
|
|
corresponding entries in /etc/inittab. You can also just run sh on
|
|
them by using the doshell soft.
|
|
And then in either case, the ALT-F[5-8] will access the corresponding
|
|
vc.
|
|
|
|
VIII.03) What kind of shell is /bin/sh ?
|
|
|
|
ANSWER: It's the Bourne Again Shell, bash-1.12.3 and
|
|
compilation was straightforward, just "make"
|
|
that's all or nearly.
|
|
BTW There does exist different shells for Linux, these are:
|
|
bash, rc, zsh, tcsh and pdksh (a korn shell).
|
|
|
|
|
|
VIII.04) Does there exist a man page for **** ?
|
|
|
|
ANSWER: Download man.tar.Z from your favorite linux ftp site, there is
|
|
most of the fileutils man page -- either **** or g****, example there
|
|
is nothing on ld, but there is for gld :) --, check the whatis
|
|
database provided. The files in the cat1 dir are pre-formatted man
|
|
pages that the man program can use. Quite recently the man pages for
|
|
section 2 have been written (thanks Drew) and can be found, at least
|
|
at tsx-11 in /pub/linux/docs/man/man2.tar.Z
|
|
|
|
Also manpages are in the SLS on the b? disks.
|
|
|
|
BTW there is nroff and groff for Linux. Cawf 2.0 works just
|
|
fine for simple man pages, and a partial ms support too.
|
|
|
|
|
|
Moreover Michael Johnson is the coordinator for man pages under Linux,
|
|
he is looking for volunteers, so contact the DOC Channel.
|
|
|
|
VIII.05) Is there a simple man package (groff is too big):
|
|
|
|
ANSWER: "Cawf -man" also "fm -m" (Al Clark) tsx-11 in
|
|
/pub/linux/binaries/usr.bin/fm.tar.Z
|
|
|
|
|
|
VIII.06) What are the editors available in linux?
|
|
|
|
ANSWER: Right now there are uemacs-3.11, elvis-1.4 (1.5).
|
|
Gnu Emacs is there, read the section devoted to it in the 4th part of
|
|
this FAQ. Also the port of mg (micro gnu) has been done and can be
|
|
found at least at athos.rutgers.edu (128.6.4.4)
|
|
in pub/linux, mg is the binary and mg.tar.Z is the sources file. You
|
|
can also find a PD ed, and elvis has an ex mode. Finnally there are
|
|
joe, vile-3.11, elle (Elle Looks Like Emacs), Xedit and aXe.
|
|
|
|
VIII.07) Does there exist a printer package for Linux?
|
|
|
|
ANSWER: (R. Miller) Yes. The "plp" package is currently available
|
|
under the directory [/pub/linux]/BETA/plp on tsx-11 and its mirrors.
|
|
You may also print things manually like so: cat filename > /dev/lp1
|
|
(Note that though "/dev/lp0" exists, most people find that their
|
|
printer is on /dev/lp1. Use whatever the kernel says that it detects
|
|
in the boot-up messages.)
|
|
|
|
VIII.08) Are uucp, mail, and/or USENET news available for Linux?
|
|
|
|
ANSWER: (Vince Skakan)
|
|
Yes !!! At this time, the following (at least) have been
|
|
ported to Linux:
|
|
|
|
Package name version
|
|
------------ --------
|
|
taylor uucp 1.03
|
|
elm 2.3-pl11
|
|
smail 3.1.28
|
|
|
|
C-news 12/22/91
|
|
tin 1.1pl4
|
|
trn 2.2
|
|
nn 6.4.18
|
|
|
|
[...coming soon - Expect an announcement in the near future concerning
|
|
the packages above being made available in binary form in the SLS
|
|
distribution and in source form from sunsite.unc.edu and other Linux
|
|
archive sites...]
|
|
|
|
If you are interested in the last uucp features, join the UUCP channel
|
|
(see part1 of this FAQ for more details about the multi channels list).
|
|
|
|
VIII.09) How do I make swapping work?
|
|
|
|
ANSWER: Quite simply, you need the swapon and the mkswap binaries.
|
|
Then you can choose between a swap partition or a swap file.
|
|
The mkswap is used to write the "swap signature", whilst the swapon
|
|
binary is to activate the swapping.
|
|
|
|
First of all you need a partition :), I assume it's the second of your
|
|
first disk namely /dev/hda2, and it's 10MB big
|
|
A) swap partition:
|
|
you have to indicate it's a swap area, this is done via mkswap
|
|
(instead of mkfs) which needs the name of the partition and the size
|
|
in blocks (a block is 1Ko big); the optional -c flag is for bad block
|
|
checking. So for our example you should perform:
|
|
mkswap [-c] /dev/hda2 10000
|
|
Then you need to indicate that you want linux to use the swap area,
|
|
this is done via swapon. In general it is set in the /etc/rc file,
|
|
just put the following entry:
|
|
/bin/swapon /dev/hda2
|
|
It can also be achieved via the /etc/fstab file
|
|
B) swap file:
|
|
The process is quite close; you need a partition, and a swap file.
|
|
Assume that I prefer a swap area of 4MB (I want to keep some place in
|
|
/dev/hda2). I need first to "dd" the file.
|
|
dd if=/dev/hda2 of=/swap_file bs=1024 count=4096
|
|
bs stands for block size, and count is the number of blocks
|
|
then I have to put the "swap signature" on that file:
|
|
mkswap /swap_file 4096
|
|
At this point, you should 'sync', just to be sure the signature is
|
|
effective. And finally add an entry in the rc file:
|
|
/bin/swapon /swap_file
|
|
|
|
|
|
VIII.10) When I boot I get one of the following messages:
|
|
"Unable to find swap signature" or "Bad swap-space bitmap"
|
|
|
|
ANSWER: You probably forgot to make your swap-device, use the mkswap
|
|
command.
|
|
|
|
|
|
VIII.11) How do I know if it is swapping?
|
|
|
|
ANSWER: You will notice it :)) First of all, Linux tells you at boot
|
|
time, "Adding swap: XXX pages of swap space", and if you start running
|
|
out of memory, you will notice that the disk will work overtime, and
|
|
things slow down. Generally a 2Meg RAM will make the system swap
|
|
constantly while running gcc, 4 Meg will swap occasionnaly when
|
|
optimizing big files (and having other things active, such as make).
|
|
Also, the command 'free' (from the ps package) reports total enabled
|
|
swap space and current swap use.
|
|
|
|
|
|
VIII.12) How is it possible to remove a swap file?
|
|
|
|
ANSWER: Simply perform a rm on that file, and remove the swapon of
|
|
your /etc/rc file.
|
|
|
|
|
|
VIII.13) How is it possible to remove a swap device?
|
|
|
|
ANSWER: mkfs the device, and remove the swapon of your /etc/rc file.
|
|
|
|
VIII.14) How much swap space do I need ?
|
|
|
|
ANSWER: Linux does not perform real swapping, it's rather paging (see
|
|
below for a more complete explanation). The swap area is *added* to
|
|
the memory and can be viewed as virtual memory, so choose the size you
|
|
need, example:
|
|
|
|
8MB RAM + 6MB swap => 14MB virtual memory
|
|
|
|
VIII.15) Could someone explain the swap process on Linux?, is it
|
|
swapping or paging ?
|
|
|
|
ANSWER: (Linus) Linux uses swap as /additional/ memory, one page of
|
|
the swap-space is used for the good-page bitmap and the swapspace
|
|
signature.
|
|
In fact Linux does only paging, no swaping in the meaning "write out
|
|
one whole process to disk".
|
|
The reason it's called swapping is that Linux used paging for memory
|
|
management on a low level since the very beginning, but didn't page to
|
|
disk at all until 0.12.
|
|
|
|
VIII.16) Is demand paging different from paging and How ?
|
|
|
|
ANSWER: (Linus) Demand-paging is really "demand loading of
|
|
executables" and is totally independent of the page-swapping
|
|
algorithms, although they have similarities. When Linux strts up a
|
|
process, no actual code space is loaded: I let the page exceptions
|
|
load in the executable as needed. Thus Linux demand-loads the code and
|
|
initialized data it needs.
|
|
Demand-loading has very good points: (a) it simplifies the exec system
|
|
call; (b) it means page sharing between that have excuted the same
|
|
file is easy to implement; (c) it cuts down on the amount of memory
|
|
required. When Linux runs out of real memory, it starts to lock for
|
|
pages it can swap out, but if it notices that the page is clean, it
|
|
just forgets about it, and demand-loads it when it's needed again.
|
|
Thta means that swap-file isn't needed as much, especially when
|
|
running big binaries such as gcc, where the code-pages can be
|
|
demand-loaded as you wish.
|
|
|
|
Point (c) means that even without any swap space, you can usually run
|
|
slightly larger programs that your memory setup would actually permit.
|
|
I've noticed this while running X and doing a kernel compilation +
|
|
something else wshen I've forgotten to turn on swapping: free reports
|
|
0 page available but things still work, although performance is
|
|
slightly down...
|
|
|
|
VIII.17) Is there any way to tell how much swap space you are using
|
|
or have left?
|
|
|
|
ANSWER: The free program provided with the ps package handles this.
|
|
|
|
|
|
VIII.18) I have a 2Megs box, but "free" reports only 1Meg why?
|
|
|
|
ANSWER: (Linus:) "free" doesn't concern with the memory the kernel has
|
|
allocated for itself. In other words what you see is the *user* memory
|
|
available. The kernel has taken the low 1Meg for it's use (~250Ko for
|
|
it and the rest for buffer cache and kernel data structures); for big
|
|
memory machine it could be even 2Megs.
|
|
|
|
VIII.19) What tape drives work with Linux ?
|
|
|
|
ANSWER: (24 sept. P. Riipinen)
|
|
- There is a working QIC-02 device driver for Linux, supporting (at
|
|
least) Everex/Wangtek cards.
|
|
- There are additional patches for the QIC-02 to support Archive
|
|
SC402/499R. You can find them in /pub/linux/alpha/qic-02 at tsx-11
|
|
There are some bugs in the driver but you can backup.
|
|
- Newer drivers are all SCSI, so check the SCSI section in this FAQ.
|
|
|
|
VIII.20) Is there only the %$#@ keyboard ?
|
|
|
|
ANSWER: There are Dannish, Finnish, French, German, Uk, US and DVORAK
|
|
keyboards. Set it in the main Makefile of the kernel sources, then
|
|
(re)compile the kernel again. Make sure the files in kernel/chr_drv
|
|
directory are recompiled.
|
|
|
|
|
|
VIII.21) (special FINNISH/US) I booteed up with the new image and
|
|
everything work except that some keyboard keys produce wrong
|
|
characters. Does anyone know what is happening?
|
|
|
|
ANSWER: Since 0.95a images are US product (and so are US-keyboard
|
|
oriented), BUT linux sources are FINNISH product, and so the default
|
|
keyboard is set to be FINNISH. The solution is in the previous Q/A.
|
|
|
|
|
|
VIII.22) Does there exist shared libs ?
|
|
|
|
ANSWER: (H.J. Lu, hlu@eecs.wsu.edu, 09/01/92)
|
|
|
|
The shared library under Linux started at 0.12. Peter MacDonald
|
|
collaborating with Linus made the first generation of shared library,
|
|
which is the base of the classic shared library which is no longer widely
|
|
used.
|
|
|
|
The kernel support of shared library under Linux is system call
|
|
|
|
extern int uselib (const char *__filename);
|
|
|
|
which loads an executable image with fixed entry point into memory,
|
|
just like the ordinary executables.
|
|
|
|
In crt0.s, a function which can find out if and which shared images
|
|
are needed and loads them is invoked before `main ()' is called if
|
|
necessary. David Engel and I developed a way to tell the loader which
|
|
shared images have to be loaded, utilizing the similar technique used
|
|
in global constructor in g++ 2.x with the help from GNU binary
|
|
utilities.
|
|
|
|
In the classic Linux shared library, we build a big executable image
|
|
for several libraries and make sure no external variables outside of
|
|
the participating libraries are referenced. Then we can get the
|
|
absolute addresses of all the global variables defined in the
|
|
libraries used to build that executable image. After that, we make a
|
|
stub library for each participating library which just has the
|
|
absolute addresses of all the global variable in it.
|
|
|
|
For each shared image, there must be one and only one .o file, which
|
|
defines a global variable containing version, name and entry point of
|
|
the shared image, and a dummy global data. Among those libraries used
|
|
to build the shared image, there must be one library which will always
|
|
be referenced whenever any other library is referenced. We put this .o
|
|
file into the stub library for that library and add a special symbol
|
|
to each of the components of the stub library in order to make sure
|
|
that this .o file is always linked in if any of the participating
|
|
libraries are linked.
|
|
|
|
In gcc 2.2.2d, jump table, developed by David Engel, was introduced in
|
|
the shared library. At the beginning of each shared image, there is
|
|
a table in which every library function has a fixed entry address and
|
|
the instruction at that address is a jump which will lead to the
|
|
real library function. So we can change the library function without
|
|
changing the corresponding entry address of the jump table. For the
|
|
global data we put them at the beginning of data section of the shared
|
|
image. We have to separate them from text code and link them in fixed
|
|
order. It is very hard to maintain the same addresses for the global
|
|
data when library is changed. After the global data are set up properly
|
|
and some spaces are left for possible future changes (that is a very
|
|
tough procedure.), it isn't too difficult to maintain.
|
|
|
|
Starting with libc.4.3, a form of dynamic linking developed by Eric
|
|
Youngdale was introduced into the shared libraries. As part of this,
|
|
the tools that were used to generate the sharable libraries were
|
|
completely redone which made the job of building the libraries much
|
|
easier, and thus the libX*.so.3.0 libraries were made as DLL jumptable
|
|
libraries.
|
|
|
|
VIII.23) Why do I need dynamic linking.
|
|
|
|
ANSWER: The best way to illustrate this is with a simple example of
|
|
what happens without dynamic linking.
|
|
|
|
#include <stdio.h>
|
|
|
|
int errno;
|
|
FILE * foo;
|
|
|
|
main(){
|
|
foo = fopen("/usr/bin/foo","w");
|
|
printf("foo: %x errno: %d\\n",foo, errno);
|
|
}
|
|
|
|
Assume this program is run by a non-root user. Normally you would
|
|
expect that the open will fail because the user does not have
|
|
permission to write to /usr/bin - this means that fopen() would return
|
|
NULL, and errno would contain 13, which means EACCES - Permission
|
|
denied. If you link this to a normal jump table library, it prints
|
|
|
|
foo: 0 errno: 0
|
|
|
|
Now consider the following nearly identical program:
|
|
|
|
#include <stdio.h>
|
|
|
|
extern int errno;
|
|
FILE * foo;
|
|
|
|
main(){
|
|
foo = fopen("/usr/bin/foo","w");
|
|
printf("foo: %x errno: %d\\n",foo, errno);
|
|
}
|
|
|
|
The results for this program are:
|
|
|
|
foo: 0 errno: 13
|
|
|
|
Why does this happen???. First of all you must realize that in the
|
|
first program errno is not declared external, and thus storage will be
|
|
allocated in the data segment for the variable. Unfortunately there
|
|
is no way to tell libc this, and libc has it's own storage for errno.
|
|
Thus libc writes the result in one location and you are looking in the
|
|
other. In the second program errno is declared extern, and thus no
|
|
storage will be allocated. The linker will see the need for a
|
|
definition of errno, and it will find one in libc. Thus in the second
|
|
example the user program is reading the same memory location that the
|
|
library stored the answer in.
|
|
|
|
This is of course a simple example. There are more complicated
|
|
examples involving programs that want to redefine a library function
|
|
and these can lead to quite bizarre behavior which is difficult to debug.
|
|
|
|
With dynamic linking, both of the above programs yield the same
|
|
(correct) result.
|
|
|
|
VIII.24) How does dynamic linking work under linux?
|
|
|
|
ANSWER: Basically, to implement dynamic linking we need to route all
|
|
function calls to global functions through the jump table. We also
|
|
need to make sure that all global data is accessed indirectly through
|
|
a pointer. The actual libraries do not really look very much
|
|
different from the actual jump table libraries that we are currently
|
|
using, but there are additional pointers to the global data in the
|
|
sharable image that are used internally by the library to access all
|
|
global data. There are also additional symbols in the stub library
|
|
that are defined as the address of the various pointers, and are used
|
|
by the linker to help determine whether there is a pointer or a jmp
|
|
instruction that needs to be fixed up.
|
|
|
|
The linker has one new important task with dynamic linking.
|
|
It watches for duplicate definitions of symbols, and if the
|
|
second definition is in a sharable library, it makes a note of it as a
|
|
conflict that needs to be resolved at run time. The linker puts a list
|
|
of all of these conflicts into a table and makes it available to crt0
|
|
through the variable __SHARABLE_CONFLICTS_.
|
|
|
|
At run time, crt0 (through the function __dynamic_resolve)
|
|
will go through and fix up all of the pointers that need to be fixed.
|
|
Let us say for example that you define your own malloc function in a
|
|
program - in this case at run time the startup code will actually
|
|
modify the jmp instruction in the jump table so that it points to the
|
|
malloc function in your program, not the one in the library. The
|
|
library will never refer to the malloc function directly, but it will
|
|
always be referenced through the jump table - in this way we ensure
|
|
that there will only be one function named malloc that is used by a
|
|
given program.
|
|
|
|
If you were to run the first example program in the "Why do I
|
|
need dynamic linking" answer, then the pointer in the library that
|
|
corresponds to the variable errno will be modified so that it points
|
|
to the errno variable that is in your program. The library itself
|
|
will never use errno directly - it will always use it via the special
|
|
pointer variable. In this way we ensure that all references to the
|
|
variable errno both in your program and in the sharable library will
|
|
reference the same memory address.
|
|
|
|
VIII.25) Does Linux work for SCSI drives?
|
|
|
|
ANSWER: Yes since v0.96. At tsx-11.mit.edu in /pub/linux/ALPHA/scsi, you
|
|
will find the last SCSI alpha/beta version and also a special SCSI
|
|
FAQ, read it, it contains the latter information than the one provided
|
|
in the SCSI section. You should, also, contact the linux-scsi list or
|
|
directly drew@cs.colorado.edu
|
|
|
|
|
|
VIII.26) Linux is supposed to work with ESDI drive. However I have
|
|
trouble with my Magtron MT-4115E (Joincom controler), any clue?
|
|
|
|
ANSWER: (Linus) Some harddisk don't like linux (even though they
|
|
should). Maybe not a bug but a deficiency.
|
|
(Mika) I had to remove the printk "unexpected hd interrupt" statement
|
|
in hd.c because I was getting so many of those messages. Be warned
|
|
that if there is any read error the system just hangs, even the
|
|
ctrl-alt-del won't work. You should be able to use your ESDI drives if
|
|
you could live with those nuisances.
|
|
|
|
VIII.27) How does one go about applying a patch to Linux ?
|
|
|
|
ANSWER: (Drew Eckhardt) In the unix world most of distribution are in
|
|
source form. This includes the operating system. To apply a patch, you
|
|
apply it with the 'patch' program to the affected sources. The patch
|
|
program takes as input the differences between the old and the new
|
|
version. After patching you need to recompile the sources.
|
|
|
|
Assume I want to apply a patch enclosed in the file XXX. First of all
|
|
I will look at the top of XXX, where the file affected is identified.
|
|
This may have aleading path attached to it. Either cd out to the
|
|
"root" of the patch, ie if I see
|
|
linux/kernel/blk_drv/blk.h
|
|
|
|
I would cd into /usr/src
|
|
(assuming it's the place where I can find linux/kernel...)
|
|
and then patch as follows
|
|
patch -p0 < whatever_place/XXX
|
|
|
|
or, you can specify a number of path components to strip from the
|
|
path. If I am in the blk_drv directory patching would be
|
|
patch -p3 < whatever_place/XXX
|
|
|
|
|
|
VIII.28) There are a lot of patches available (ps patch, NFS patches,
|
|
CD-ROM patches ...) can I be fairly confident the subsequent patches will
|
|
work?
|
|
|
|
ANSWER: This is not true yet for the current version; but it will be
|
|
so I kept it :)
|
|
No you can't, patching is a real beta tester art :)). People are not
|
|
working on the same patched release, so you have to check if the
|
|
patches you already applied works on the same kernel part, if not,
|
|
/great/, just apply them. If yes, check if there is an order, patch
|
|
creator knows that, and (should) try to warn patch user (in other
|
|
words: beta tester) otherwise you should edit the patch files (and
|
|
possibly make a brief note to others on this list/newsgroup or even a
|
|
cdiff) before applying them, another solution is to keep cool and wait
|
|
for the next version of Linux where, in general, the modifications
|
|
have been done but this behavior is /not/ Linux helpful.
|
|
|
|
|
|
VIII.29) I got the patches on some ftp sites, and applied them to the
|
|
kernel and tried to compile. It didn't !!. Are the patches buggy?
|
|
|
|
ANSWER: Before remake, just do a make clean in the directories
|
|
involved by the patches. This will force a rebuild of the .o and .a
|
|
files.
|
|
If you have a RCS running on your source tree, did you checked a
|
|
patched version of the files changed before /any/ CO either by you or
|
|
make
|
|
|
|
Finally, make sure the patches succeded. Normally, failed patches on a
|
|
file FILE will leave a FILE# file. Moreover you will get a "chunk
|
|
failed" message. It is possible to capture the output while patching,
|
|
with the following:
|
|
|
|
patch -p0 < patchfile | 2>&1 patch.result | more
|
|
|
|
|
|
VIII.30) What is VFS?
|
|
|
|
ANSWER: (Ted) Linux 0.96 already has Virtual FileSystem, which means
|
|
that it acts as a filesystem switch. It makes it easy for someone to
|
|
design another filesystem format and include it in the Linux kernel
|
|
along with the standard minix filesystem format. So it /enables/
|
|
someone to design a robust filesystem which would have some nice
|
|
properties (no 14 chars file name limitation, nor 64Meg limit), and
|
|
could be included in the kernel in such a way that both the Minix and
|
|
the new one could be mounted at the same time. This solves the
|
|
uncompability problem; since the root disk could still use the Minix
|
|
filesystem, while the hardisk could be using the new one.
|
|
|
|
|
|
|
|
VIII.31) What's about Bus Mice ?
|
|
|
|
ANSWER: (Nathan I. Laredo) Since the Linux v0.96c-pl2 the kernel does
|
|
support LOGITECH and BUS MICE
|
|
If you are unsure that you have a bus mouse or not, check to see if
|
|
your mouse card has a selection for a sample rate switchable between
|
|
30Hz and 60Hz (or possibly 25/50Hz), if it does not, then it is NOT a
|
|
true bus mouse (InPort mice for example will not work with this
|
|
driver).
|
|
To create a bus mouse device:
|
|
mknod /dev/mouse c 10 0
|
|
|
|
|
|
VIII.32) What's about TeX ?
|
|
|
|
ANSWER: The primary site for Linux TeX is 129.78.66.1, this is
|
|
P. Williams' site in Australia. The stuff at tsx-11 was posted by
|
|
T. Dunbar who does support/maintain the dvilj stuff.
|
|
|
|
|
|
VIII.33) What's about LILO ?
|
|
|
|
ANSWER: (Werner Almesberger)
|
|
LILO - Generic Boot Loader for Linux ("LInux LOader")
|
|
|
|
This is an ALPHA test release of a new boot loader. Be sure to have
|
|
some means to boot your system from a different media if you install
|
|
LILO on your hard disk.
|
|
|
|
Features
|
|
--------
|
|
|
|
- does not depend on the file system. (Tested with Minix, EXT FS and MS-DOS
|
|
FS.)
|
|
- can be used to boot from floppies and from hard disks.
|
|
- can replace the master boot record.
|
|
- can boot non-Linux systems (MS-DOS, DR DOS, OS/2, ...) and unstripped
|
|
kernels.
|
|
- supports up to 16 different boot images that can be selected at boot
|
|
time. Root and swap disk/partition can be set independently for each
|
|
image.
|
|
- boot sector, file map and boot images can be all on different disks or
|
|
partitions.
|
|
|
|
|
|
Restrictions and known problems
|
|
-------------------------------
|
|
|
|
- SCSI disks are not fully supported yet. (Still waiting for some kernel
|
|
changes.) (Should work in current release - EY).
|
|
- booting other operating systems doesn't seem to work everywhere. If
|
|
everything but booting a non-Linux OS from LILO works on your system,
|
|
you should boot LILO by BOOTACTV and select the alternate OS with the
|
|
latter as a temporary work-around.
|
|
- booting non-Linux systems from the second hard disk ("D:") is not yet
|
|
supported.
|
|
|
|
Please send all bug reports to almesber@nessie.cs.id.ethz.ch
|
|
|
|
|
|
VIII.34) What's about MGR ?
|
|
|
|
ANSWER: (General Information grabbed from various sources)
|
|
There is a MGR channel available , contact the request adress with
|
|
help in the body: linux-activists-request@niksula.hut.fi
|
|
The stuff can be found at tsx-11 in pub/linux/packages/MGR
|
|
In brief:
|
|
|
|
MGR provides:
|
|
- multiple overlapping windows
|
|
- multiple fonts
|
|
- text and graphics in each windows
|
|
- a simple popup menu package
|
|
- a client/server model 'a la' X
|
|
- independance from any peculiar networking technology
|
|
|
|
MGR consist of a server process and some clients. Each client has his
|
|
own window, and can create subwindows. Clients communicate with the
|
|
server via a bidirectionnal channel. A C library is provided.
|
|
|
|
When a new window starts, it is as a terminal emulator running the
|
|
shell; for more information you can grab the mgr-man.out from
|
|
bellcore.com
|
|
|
|
The information hereafter appeared on the MGR channel on 19th Jan.
|
|
> From: u31b3hs@POOL.informatik.rwth-aachen.de
|
|
> Subject: MGR 0.53
|
|
>
|
|
>
|
|
> MGR, version 0.53 for Linux and SunOS (Coherent unfinished yet).
|
|
>
|
|
> Unpack the src* stuff under in /src/lbin/mgr and the usr* stuff in
|
|
> /usr/mgr. I splitted things that way for making it easier to ftp
|
|
> them and carry them home. If you don't like these paths, then use
|
|
> others, but remember to edit the Configfile after generating it.
|
|
> YOU NEED TO INSTALL ALL FILES FOR COMPILING.
|
|
>
|
|
> This is a beta release for programmers, there are no binaries. It
|
|
> makes my work available for people who either also work on MGR and
|
|
> like to get new sources and for adventerous beta testers. WARNING:
|
|
> I assume using Linux 0.99.2 and GCC 2.3.3.
|
|
>
|
|
> There is some new m4 code to generate menus. It is more powerful
|
|
> than menu(1), but a little harder to use.
|
|
>
|
|
> MGR is currently being ported to Coherent 4.0, but this version
|
|
> doesn't include everything yet. There is already a beta version
|
|
> running on Coherent, although not too stable yet.
|
|
>
|
|
> For questions, write to the mailing list, channel MGR. Please be
|
|
> sure to talk about the latest version of MGR plus having read the
|
|
> README files in the directories containing the problem.
|
|
>
|
|
> You got this stuff from ftp.thp.uni-koeln.de:pub/linux/mgr or from
|
|
> tsx-11.mit.edu:~ftp/pub/linux/packages/MGR, which is a mirror of the
|
|
> Cologne directory.
|
|
|
|
VIII.35) I have successfully compiled MGR, but when I try to run the
|
|
program I get "can't find mouse" or "already in use", any clue?
|
|
|
|
ANSWER: try the following "mgr -m /dev/ttys1" if the mouse is on
|
|
the serial 1. Another possibility is to link /dev/mouse with
|
|
/dev/ttys1 (assuming your mouse is on serial 1). Or if it's a bus
|
|
mouse, "mknod /dev/mouse c 10 0" once.
|
|
|
|
VIII.36) Any tips for MGR?
|
|
|
|
ANSWER: Well, I have tried it on my 386Sx Ega/Vga; the screen is Ok
|
|
but the Logitech mouse I have is not well recognized.
|
|
|
|
BTW check the major/minor number for pty's; they should be character
|
|
device with 4 as major and 128 and bigger as minor:
|
|
ptyp0 c 4 128
|
|
ptyp1 c 4 129
|
|
...
|
|
ttyp0 c 4 192
|
|
ttyp1 c 4 193
|
|
|
|
VIII.37) What's about X11 ?
|
|
|
|
ANSWER: See the section XII. devoted to X11 in this FAQ.
|
|
|
|
|
|
===================8<==========>8================
|
|
|
|
|
|
|