Category : Linux Files
Archive   : FAQ1092.ZIP
Filename : FAQ

Output of file : FAQ contained in archive : FAQ1092.ZIP
Newsgroups: comp.os.linux,news.answers
Distribution: world
Followup-To: poster
From: [email protected]
Reply-To: [email protected]
Organization: Greco Prog. CNRS & LaBRI, Bordeaux France
Subject: Linux Frequently Asked Questions 1/2 [monthly posted]
Expires: Mon, 11 November 92 09:00:41 GMT
Approved: [email protected]
Summary: Linux, a small unix for 386-AT computers, that has the advantage
to be free.

Archive-name: linux-faq/part1
Last-Modified: 92/10/05 15:35:30
Version: 1.10

* *
* Answers to Frequently asked questions about Linux *
* *

This post contains Part 1 of the Linux FAQ

Hi Linuxers!

The originall FAQ 1st version was posted in Dec. 19, by Robert Blum,

Most credits of this work to Linus, Robert and Ted. The first X11
section was written by Peter Hawkins, the rest was either on the list
posted by many (real) activists, not me ;-), either in some other news
groups, or else by direct posting to me (thanks Humberto, Dan,
Michael, Drew, Audoin). I haven't systematically copyrighted them, so
thanks to every one who participated even indirectly to this FAQ.

Since September 1992, the FAQ is co-written by:

Lars Wirzenius (META-FAQ) [email protected]
Mark Komarinski (DOS) [email protected]
Matt Welsh (INSTALLATION) [email protected]
A. V. Le Blanc (MCC, DOS) [email protected]
Ward (MGR) [email protected]
Drew Eckhardt (SCSI)
Hongjiu Lu (GCC) [email protected]
Krishna Balasubramanian (X11) [email protected]
Jim Gifford (SERIAL) jgifford@{attmail,world.std}.com
Zane Healy (BBS INFO) [email protected]
Marc-Michel Corsini (FAQ collector) corsini@{labri,firmin}

If anyone is interested to participate to this FAQ, just send me a
note with:
your name/e-mail and the section you want to maintain.
Many of the questions could be avoided, if people had read the FAQ of
the following newsgroups:
news.announce.newusers, comp.lang.c,,

[The last-change-date of this posting is always "two minutes ago". :-)]

This is the introduction to a list of frequently asked questions (FAQ
for short) about Linux with answers (Yeap!). This article contains a
listing of the sections, followed by the question/answer part.

This FAQ is supposed to reduce the noise level ๐Ÿ˜‰ in the comp.os.linux
newsgroup, and spare the time of many activists. I will cross-post it each
month to news.answers. This FAQ is NOT an introduction to UNIX, there
are many books for unix, and there is *also* an FAQ for unix (it's the
one of comp.unix.questions which contains things such as "How do I
remove a file named -". I DO NOT WANT TO ADD SUCH THINGS IN THIS FAQ
Some books to read:
The C Programming Language: Kernighan & Ritchie
Unix System Administration Handbook: Nemeth, Snyder & Seebass.
Unix for the Impatient: Abrahams & Larson

BTW This FAQ is available at the main Linux sites in the doc
directory, the addresses are given in section II. of this FAQ. There
is also an automated FAQ FTP/mailserver archive at

Please suggest any change, rephrasing, deletions, new questions,
answers ...
Please include "FAQ" in the subject of messages sent to me about FAQ.
Please use [email protected] whatever will be the From part
of this message. Finally discussion about the FAQ can be done on the
mailing-list [email protected] (see section II below).

Thanks in advance,

Future Plan:
- verification/location/organization for files available
via FTP (I've tried what a mess!!). In fact I can't handle
this, so if there is some kind soul...
- reorganization of the FAQ. I don't know what will be the
next step of this, may be numbering and subsectionning.

0. WARNINGS (part1)
IV. LINUX and DOS (part1)
XI. X11, THE MINIMUM and MORE (part2)


The FAQ contains a lot of information sometimes I've put it down
in 3 different ways because people seems not to understand what they
read (or what I wrote, you know I'm just a froggy and english is not
my natural language). What I mean is that not all is in the FAQ but
many things are there, so please just take time to read it this will
spare a lot of the other linuxers [and if you think I should rephrase
some Q/A just drop me a note with the corrections].

In what follows I'll consider Linux v0.97 as the current version.
Linus Torvalds wrote the following about the 0.97 release:

- The VESA-support was removed. I'd be happy to put it back once it
works on all hardware. Instead of the VESA-code, I finally put in
the automatic SVGA setup patches. See the top-level Makefile.

- The IRQ code has solidified, and should work on all machines. Not
all of the SCSI drivers use it yet, so I expect patches for that..

- Serial interrupts are handled slightly differently, and performance
should be up. I've sent out a few alpha-releases, and testing seems
to indicate that's actually true this time. Reactions have ranged
from "nice" to "wonderful" ๐Ÿ™‚

- The buffer-cache and memory management code has been edited quite a
bit. ps/free etc programs that reads kernel memory directly no
longer work, and even a recompilation won't be enough. They actually
need editing before they work.

The buffer-cache now grows and shrinks dynamically depending on how
much free memory there is. Shift+PrintScreen will give some memory
statistics. (Ctrl+PrSc gives task-info, ALT+PrSc gives current
register values).

The mm code changes removed some race-conditions in the VM code, and
I also tried to make the Out-of-swapspace error less severe (better
thrashing-detection etc).

- The super-block code has been cleaned up. Especially the extended fs
needs to be edited a bit to take advantage of the new setup, and I
expect Remy Card will have a patch out eventually.

- include-files have been moved around some more: there are still some
names that clash with the standard headers, but not many.

- Unswappable processes implemented: by default only 'init' is
unswappable. This is a bit safer in low-memory conditions, as at
least init won't die due to low memory. I also made killing init
impossible: if init doesn't recognize a signal, it simply won't get
it. Some other changes ("while (1) fork();" won't kill the machine
for non-root users etc)

- The new SCSI drivers are in. These make the kernel noticeably
bigger, but you can leave them out if you don't want them.

- The floppy- and hd-drivers print out more debugging-info in case of
errors: this might be irritating if you have hardware that works, but
often gives soft-errors. On the other hand, some old debugging-info
was removed - notably for user-level protection errors etc.

- Various minor fixes. I haven't made cdiffs (and I haven't gotten any
requests for them, so I probably never will), but they would be
pretty big.


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. The current
version is 0.97, date: 01 August 1992. The previous version v0.96c
was on the 05 July 1992.

Linux is a freely distributable UNIX clone. It implements a subset of
System V and POSIX functionality. LINUX has been written from
scratch, and therefore does not contain any AT&T or MINIX code--not in
the kernel, the compiler, the utilities, or the libraries. For this
reason it can be made available with the complete source code via
anonymous FTP. LINUX runs only on 386/486 AT-bus machines; porting to
non-Intel architectures is likely to be difficult, as the kernel makes
extensive use of 386 memory management and task primitives.

QUESTION: What is the current state of Linux?

ANSWER: do "finger [email protected]", or read the
comp.os.linux newsgroup.

QUESTION: I've just heard about linux, what should I do to get it?

ANSWER: First read all this FAQ, then
go to the nearest ftp site (see below), download the Images there are
two a rootimage and a bootimage (in general in the images directory),
for the present version, you need boot-image097 and root-image097
(or later), then download the INSTALL and RELNOTES files. Find
the rawrite utility (for example at tsx-11 it's in
/pub/linux/INSTALL), then rawrite the images on HIGH density floppies
(5.25 or 3.5), finally boot on the root diskette and that's it.

BTW From another Unix system a "dd" works fine. On "my" sun I use the
following "uncompress -c root-image.Z > /dev/fd0", assuming I had a
formatted floppy in /dev/fd0

After playing a while, you should want to install linux on HD (since v0.95
there are scripts on the images for that purpose, I guess they are better
now), see also section III for INSTALLATION. Then you will need
a compiler (gcc) and utilities, all can be found at the different
places described in section II below.

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, and the system must be ISA. A high density floppy
drive -- either 5".25 or 3".5

{Drew's information:
Linux supports anything that's register compatable with a WD1003 MFM
disk controller (ie, the original PC-AT disk controller.) Most AT
MFM, RLL, ESDI, and IDE setups look like this.

XT compatable disk controllers won't work.

Generally, the rule is if you have the disk configured into the
CMOS setup of your machine, it will work (because the BIOS is talking
to a WD 1003 compatable board), otherwise it won't.}

IDE and MFM seem to work with no problem. It works, also, for some
ESDI drive (Joincom controller with Magtron drive after you have
commented out the "unexpected hd interrupt"-message from hd.c). There
exists a high-level SCSI driver, under which low-level drivers are
placed; a ST-01/ST-02 low driver has been completed see the FEATURES
and the USEFUL ADDRESSES sections.

Otherwise the requirements seem relatively small: a 386 (SX, DX or any
486). Any video card of the following: Hercules, CGA, EGA, (S)VGA.

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).

BTW On some high speed machine (486/33 DTK, 64KB cache, 4MB RAM),
there might be some trouble with the HD driver ; one possible cure is
to switch off the "turbo" i.e. set the speed to 8MHz instead of 33MHz

QUESTION: Why the suggested 4Meg, for Linux?

ANSWER: Linux uses the first 640k for kernel text, kernel data and
buffercache. Your mother board may eat up 384K because of the chipset.
Moreover there is: init/login, a shell, update possibly other daemons.
Then, while compiling there is make and gcc (1.40 ~530k; 2.01 ~770k).
So you don't have enough real memory and have to page.

QUESTION: How would this operate in an OS/2 environment?

ANSWER: Linux will coexist with *any* other operating system(s) which
respects the "standard" PC partionning scheme - this includes Dos,
Os/2, Minix etc.

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: Will Linux run on a 386 Laptop?

ANSWER: It works for some at least.

QUESTION: (Dan) How long has Linux been publicly available?

ANSWER (partial): Few months, v0.10 went out in Nov. 91, v0.11 in Dec.
and the current version 0.97 is available since August 1st. But even
it is pretty recent it is quite reliable. There are very few and small
bugs and in its current state it is mostly useful for people who are
willing to port code and write new code.
As Linux is very close to a reliable/stable system, Linus decides that
v0.13 will be known as v0.95
Believe it or not: the whole story started (nearly) with two processes
that printed AAAA... and BBBB...
BTW consult the digest#136 Vol2 for a complete story

QUESTION: What is the proper pronounciation for "Linux"?

ANSWER: (Linus himself)
'li' is pronounced with a short [ee] sound: compare prInt, mInImal etc.
'nux' is also short, non-diphtong, like in pUt. It's partly due to
minix: linux was just my working name for the thing, and as I wrote it
to replace minix on my system, the result is what it is... linus' minix
became linux.

I originally intended it to be called freax (although buggix was one
contender after I got fed up with some of the more persistent bugs ๐Ÿ™‚
and I think the kernel makefiles up to version 0.11 had something to
that effect ("Makefile for the freax kernel" in a comment). But arl
called the linux directory at pub/OS/Linux, and the name
stuck. Maybe just as well: freax doesn't sound too good either (freax
is obviosly free + freak + the obligatory -x).

QUESTION: What's about the copyright of linux.

ANSWER: This is an except of the RELEASE Notes v.095a: Linux is
NOT public domain software, but is copyrighted by Linus Torvalds. The
copyright conditions are the same as those imposed by the GNU
copyleft: get a copy of the GNU copyleft at any major ftp-site (if it
carries linux, it probably carries a lot of GNU software anyway, and
they all contain the copyright).

QUESTION: Should I be a UNIX and/or a DOS wizard to install/use Linux?

ANSWER: Not at all, just follow the install rules, of course it will be
easier for you if you know things about Unix. Right now Linux is used
by more than 400 persons, very few of them enhance the kernel, some
adds/ports new soft, most of us are only (but USEFUL) beta testers.
Last but not least, various Linuxers work on manpages, newuser_help,
file-system organization. So join us and choose your "caste"

QUESTION: Does Linux use TSS segments to provide multitasking?


QUESTION: If my PC runs under Linux, is it possible to ftp, rlogin,
rsh etc.. to other Unix boxes?

ANSWER: Not yet, but kermit has been ported to Linux, and the ka9q too.

QUESTION: Does linux do paging? Can I have virtual memory on my small

ANSWER: Yes, it does.

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. This
restriction is due to the file-system, pretty soon there will be a
workable VFS (it's in test) and the limitation will disappear.

QUESTION: Does the bigger program sizes mean I can run X?

ANSWER: X is ported to linux, it's in beta and needs some special
hardware stuff. There is some support since the Linux 0.96 release.

QUESTION: What are the differences, pros and cons compared to Minix ?

ANSWER (partial):
- Linux is not as mature as Minix, there is less working software right now.
- Linux only works on 386 and 486 processors.
- Linux needs 2M of memory just to run, 4M to be useful.
- Linux is a more traditional unix kernel, it doesn't use message passing.

- Linux is free, and freely distributable, BUT copyrighted.
- Linux has some advanced features such as:
- Memory paging with copy-on-write
- Demand loading of executables
- Page sharing of executables
- Multi-threaded file system
- job control and virtual memory, virtual consoles and pseudo-ttys.
- Linux is a more traditional unix kernel, it doesn't use message

QUESTION: What are the pros and cons compared to 386BSD ?

ANSWER: First of all I had never tested 386BSD.

Linux and 386BSD started out as completly different projects, with
completely different goals and design criteria in mind.

These are information found in comp.unix.bsd in sept. 1992

| This is a free BSD for the 386. It does NFS and X.
| Grab it from (
| Bill Jolitz is writing a book on it.
| It has a neat, small kernel, and is stable enough to run for a week or
| more without crashing/hanging. It works fine with 4MB RAM and 80MB
| disk. Running X however needs 8MB RAM, and supports only vanilla VGA.
| The TCP/IP implementation in this is functional, but not optimised.
| This means that FTP throughput is about 5KB/sec on Ethernet, when
| almost anything else gives you about 70KB to 100KB per second.
| Read comp.unix.bsd. That is almost entirely Jolitz's 386BSD now.
| 3. How much disk space for:
| *kernel
| *X
| *source to kernel
| *source to X
| Binary only: 49 M (30 disk, 5 swap, 14 extraction)
| Source: 125 M (49 bin, 37 disk, +6 extraction, 25 recompile)
| User software: +51 M
| X Binaries require about 61 Meg (?)
| I don't know about the sources.

QUESTION: How much space will Linux take up on my hard drive?

ANSWER: It depends on which release to choose. See the section
INSTALLATION below. Usually it's somewhere between 10 megs (for a
nominal system+swap space) and 30-40 megs (for everything plus space
for user directories, etc.).


II.A. LINUX ON THE NET: ftp, mailing-list
II.B. OBTAINING LINUX FROM BBS'S: everything about bbs


QUESTION: Where can I get linux?

ANSWER: Linux can be gotten by anonymous ftp from
1) Major Sites
directory /pub/OS/Linux (
directory /pub/linux
US: (
directory /pub/linux

2) Mirroring sites (some of them)
directory /pub/OS/Linux
directory /pub/os/Linux (
directory pub/linux (
directory pub/Linux
US: (
directory linux
directory pub/pc-stuff/Linux
directory misc/linux

You might want to check out which of these is the most up-to-date.
Moreover is no longer a Linux ftp site ๐Ÿ™

[email protected] forwarded me the following message from
Louis. LaBash Jr.
Washington University St Louis, a SIMTEL mirror, is also mirroring
Note: logins allowed 24 Hrs a day
login anonymous your-net-address []
pub/mirrors4/linux LINUX tsx-11 mirror
pub/mirrors/unix-c SIMTEL mirror
pub/mirror/msdos SIMTEL mirror
pub/mirrors3/ Garbo mirror

If you don't have ftp-capability, you are in trouble. See next Q/A. If
you have no uncompress utility, there are a lot even for DOS, have a
look on SIMTEL, or else use facilities provided by some sites to
uncompress for you. Don't do that if you can, because it's lengthy,
expensive and causes troubles to other users on ftp sites.

QUESTION: I do not have FTP access, what can I do to get linux?

ANSWER: You can either read the next subsection related to BBS's
otherwise, read the following.
Try to contact a friend on the net with those access, or try
mailserver/ftpmail server otherwise contact [email protected]. You
might try mailing "[email protected]" with "help" in the body of
the mail. If you choose ftpmail server (example: [email protected]),
with "help" in the body, the server will send back instructions and
command list. As an exemple to get the list of files available at tsx-11
in /pub/linux send:

mail [email protected]
subject: anything
chdir /pub/linux
dir -R

In Europe is accessible via e-mail (send
"help" in the body to [email protected])

QUESTION: Is there a newsgroup or mailing-list about linux? Where can
I get my questions answered? How about bug-reports?

ANSWER: comp.os.linux is formed, for those who can't access to the
news you can ask for digest to:
[email protected]. On the other hand, mail
sent to [email protected] are posted to

DO NOT mail "I want to [un]subscribe" to the newsgroup, use
the request-address. IF not your mail-box will be over-crowded by

Questions and bug-reports can be sent either to the newsgroup or to
"[email protected]", depending on which you find more

People are working on the man pages and users guide.
contact [email protected]

And last but not least there is the original mailing-list, which is
now a multi-channel list.
contact [email protected]

QUESTION: Could you be more explicit about the multi-channel list?

ANSWER: Well, there are many things to say:
- these channels are rather devoted to hackers
- the one I am aware of are: GCC, MGR, X11, SCSI, NEW-CHANNELS,
MSDOS (emulator discussion) , NORMAL, KERNEL, FTP, LAPTOP ...
- whenever you want to JOIN or LEAVE a channel you have to
contact the request address
- you have to use special header (Mn-Key and Mn-Admin); Mn-Key
is *ONLY* for regular post, the Mn-Admin is for *REQUEST*

QUESTION: How can I join the channel XXX on the linux-activists
mailing list?

ANSWER: just send a mail to the request address with help in the body;
you will get back a mail which gives you the list of channels and the
way to join/leave them (or simply send a mail to the request address
with the following line:
X-Mn-Admin: join XXX

QUESTION: How can I leave the channel XXX on the linux-activists
mailing list?

ANSWER: just send a mail to the request address with help in the body;
you will get back a mail which gives you the list of channels and the
way to join/leave them (or simply send a mail to the request address
with the following line:
X-Mn-Admin: leave XXX

QUESTION: Does there exist a place where the traffic of the newsgroup
is kept?

ANSWER: Yes, on nic and tsx-11 (see the ftp addresses above), and since
12th March, a Gopher server is up at
( The archives go back to Nov. 18. 91
Also recently a WAIS server for the linux mail archive has been setup
at contact tw at that address.

This section has been complety written by Zane H. Healy,

QUESTION: I don't have access to FTP, how can I obtain Linux?

ANSWER: Linux is available from various BBS's around the world.

QUESTION: How can I get a list of BBS's that carry Linux?

ANSWER: I (Zane Healy) post a list of BBS's to comp.os.linux as well as
the RIME and Fidonet UNIX conferences on the 1st and 15th of each month.

QUESTION: There is a local BBS that carries Linux, but it isn't on the
Linux BBS List. How do I go about submitting it for inclusion in the

ANSWER: Send the following information to me:

BBS Name:
Phone Number:
Modem Speed:
City and State/Country:
Whatever Network it's on (i.e. FidoNet, RIME, etc.):
First Time access to D/L Linux Files (Y/N):
Free Access to Linux Files (Y/N):
Allow File Requests (Y/N):
BBS Rating (1-5):

I can be reached at one of the following:
Internet -- [email protected]
CompuServe -- 70332,14
Prodigy -- SCNN49A
Fido NetMail -- Zane Healy at 1:109/615
RIME UNIX Conf. -- Zane Healy

QUESTION: What can I do to help ensure the continued development of

I would like to point out that a very large number of the Linux
enthusiests don't have FTP access. In fact it is possible that by now
most of the Linux fan's don't. So I would like to suggest that those
of us that do, find at least one BBS to post the Linux file's to. I,
for one post every file that I get to at least one of the local BBS's,
and from there they the file's tend to find there way to other local
BBS's. I've seen post's about the future of Linux etc., well here is a
way to help guarentee it. I think it's safe to assume that most people
with FTP access also have a modem. So how about doing other Linux fan's
a favor and finding a BBS to upload the Linux files to.

QUESTION: How do I read the data contained in the Linux BBS List?

ANSWER: The list uses the following format:

State YYY BBS Name Phone Number Modem Speed
Rating City Other data

The BBS's are rated by the number of Linux related file's that they
carry. This is so you can choose one's that has a better chance of
carrying the file's you are looking for if you are calling long
distance. The BBS's are rated on a scale of one to five.

1 -- Only enough the most basic of files
2 -- The basic's and a little more
3 -- So, so
4 -- A respectable amount
5 -- Pretty much everything you need

Information about the board's access policies can be obtained by
checking a three digit field.

YYY -- Either a Yes/No/? answer to the question
||Free access to Linux files
|Allow file requests (FidoNet)
First time D/L of Linux related files

NOTE: Just because a board has N's in the first two field's does not
mean that it is a board to stay away from. A lot of board's require
that you register and be varified before you can access most of their
feature's, hence the first N. The second field is, to the best of my
knowledge, limited to BBS's that are part of FidoNet.

QUESTION: What are some of the best BBS's to check out?


In the US:

CA Bill of Rights 818-895-0455 this is NODE 2 and is private
5 San Fernando Valley Does anyone have a NODE 1 #?
CA YNY hip-hop 408-773-0768 14.4k V.32bis/HST
5 Sunnyvale Login: guest (no password)
DC NNY When Gravity Fails 202-686-9086 14.4k
5 Washington
FL Slut Club 813-236-1232 14.4k
5 Tampa/St.Pete Fidonet 1:377/42
GA YYY Information Overload 404-471-1549 9600 HST
5 FidoNet 1:133/308
ID Rebel BBS 208-887-3937 9600
5 Boise
IL YYY EchoMania BBS 618-233-1659 14.4k HST
3 Belleville Fido 1:2250/1 (f'reg LINUX)
F'reqs from unlisted nodes, online callback verifire (works L.D.)
MD Brodmann's Place 301-843-5732 14.4k
NC MAC's Place 919-891-1111 DS modem
5 Dunn RIME ->MAC
NY YYY Prism BBS,Middleton 914-344-0350 9600 HST/v.32
5 Middletown, NY Fidonet 1:272/38
NY YYY The Laboratory 212-927-4980 16.8k HST, 14.4k v.32bis
3-4 FidoNet 1:278/707
OR YYY Intermittent Connection 503-344-9838 14.4k HST v.32bis
5 Eugene, Ore 1:152/35
TX YYY Advanced BBS 512-578-2720 9600
5 Victoria, TX Fidonet 1:3802/215
VA VTBBS 703-231-7498
5 Blacksburg
WA YYY S'Qually Holler 206-235-0270 9600
5 Renton Fidonet 1:343/34

And here are all the known BBS's outside the US:

NSW YYN Linux-Support-Oz +61-2-418-8750 2400
2-3 Sydney Intlnet, SBCNet
? 500cc Formula 1 BBS +61-2-550-4317 V.32
? (2-3)
ON EX-10 Kitchner 519-725-4400
ON Ned's Ottawa 613-739-1591
ON Bytown 613-236-1232
2 SmartNet
PQ Synapse 819-246-2344 819-561-5268
5 Gatineau RIME->SYNAPSE
GERMANY: 00 49 421 870532 9600
? D 2800 Bremen [email protected]
?????????????? +49-40-735-5349 14.4k
Hipposoft's Mail Server +49-241-875090 14.4k V.32bis/HST
3 D-W5100 Aachen Fidonet 2:242/6
? TOPPSI +353-1-711047 or 773547 9600
Fidonet 2:263/151
? Thunderball Cave 472567018
? DownTown BBS Lelystad, Linux Support BBS 14.4k
+31-3200-48852 FIDONET
Andre Skarzynski - Linux Activists of Southern Africa
? +27 2231 78148 (Is this voice or data?)
NYN The Purple Tentacle +44-734-590990 HST/V32bis
3-4 Reading Fidonet 2:252/305
A6 BBS +44-582-460273 14.4k
Herts Fidonet 2:440/111


*** Note1: this FAQ section should be kept up-to-date, and should
*** be the most 'reliable' source for installation info. Please mail
*** any corrections or changes to this section's coordinator,
*** Matt Welsh ([email protected]).

III.A. LINUX PACKAGES: Where and how install a complete Linux package
III.B. SOME COMMON PROBLEMS: Simple problems and simple solutions

QUESTION: I want to install Linux on my machine. Where do I start?

ANSWER: The first thing you should do is read through the various
introductory files, and ESPECIALLY the FAQ (this file). Especially
this section :). A lot of effort has been done on these intro files,
but note that some of them conflict with each other and cover older
versions of Linux. When in doubt consult this file.

These files are all found on

The Linux Frequently Asked Questions list
It's sitting in your hands now. This section is probably the best
place to start to get the most up-to-date Linux installation

Linux Information Sheet, by J. Winstead
This is J. Winstead's general information sheet on Linux, and along
with this FAQ is a good place to start for info.

Linux version xxxxx Release Notes, by Linus Torvalds
This is Linus's release notice for version xxxxx of the kernel.

Beginner's Guide to Linux for DOS Users, by C. Boyer
Last version was for Linux 0.95a. A bit dated, but still has
lots of useful information for getting started on Linux.

Beginner's Installation Guide, by I. Reid
Last version was for Linux 0.95a. Generally covers how to install
Linux using the "bootdisk/rootdisk" combo (for a basic setup): this
is discussed below.

Install notes for version xxxxx of Linux, by J. Winstead
This is Jim Winstead's installation notes on the "bootdisk/rootdisk"
combo, much like "install.notes" above. The last version for this
was 0.96. More recent copies are on the rootdisk itself, so follow
the directions below and read the file ON the rootdisk for more.

Changes to the version xxxxx rootdisk, by J. Winstead
These are the notes on the changes to the most recent version
of Jim Winstead's "rootdisk". Notes on that are below.

Kernel compilation README file, by L. Wirzenius
This is the README notes for recompiling the Linux kernel from the
sources. You don't need it unless you're planning to upgrade
your kernel by compiling it yourself.

QUESTION: Is there some kind of limit on how large my Linux partitions
and/or filesystems can be?

ANSWER: There's no limit on partition size (just the size of your drive),
but Linux mainly uses the minix filesystem which limits filesystems to
64 megs each. You can also use the extended filesystem (which is still
in testing, but has been included with recent kernel versions) which
has a limit of 4 terabytes. Probably enough unless you have a disk array. ๐Ÿ™‚

This section contains information about *SOME* of the possible Linux
packages available. The information related to the MCC package were
written by A.V. Le Blanc.

QUESTION: Does there exist a way to get all (or nearly all) of the Linux

ANSWER: Yes. To install Linux, you're going to want to choose one of the
"releases" of Linux, all of which have a different method of installation
and set up. Each release also has its own README and installation docs,
which you'll want to read first. But I'll summarize here. The major
releases are:

* The "bootdisk/rootdisk" combo
Linus's "bootdisk" (a kernel) and Jim Winstead's "rootdisk"
which contains the tools for installing a basic Linux system
to hard disk. See below for more.

* H.J. Lu's "bootable rootdisk"
Essentially the same as the "bootdisk/rootdisk" combo, above,
but exists on one disk. This is still a fairly new release.
READMEs and docs for this are found where the bootable rootdisk
image itself is (under

* The "MCC Interim Release" ("Manchester Computing Centre")
Several (at this point, seven) disk images that contain the
Linux kernel, root filesystem, and binaries for every major
program that you'll need, including GCC, file utils, bash,
everything. Everything, that is, except X11 (which is easy to
install on top of this release). The MCC interim release is
very easy to install, and contains all the programs you'll
need to partition your hard drive and create filesystems, etc.
first before installing the Linux system itself. See below
for more.

* The "Softlanding Linux System Release"
Also known as the "SLS" release, consists of 10 disks for Linux
and 5 for X11. The nice thing about this release is that you can
pick and choose which disks and packages you want to install. The
first 2 disks must be "rawritten" (using rawrite.exe) on floppies,
and the rest of the images are put onto DOS format floppies.
Contains all of the stuff in the MCC release plus a lot more
(like mail/uucp), and includes X11 on the last 5 disks. Is also
very easy to install for newcomers.

* Others
There are other releases and distributions of the Linux software,
such as the "sc.tamu" and "MJ" releases. Information on some of
them is given below.

QUESTION: Where can I get these versions of Linux?

ANSWER: The "bootdisk/rootdisk" combo can be found at
/pub/linux/INSTALL, as well as at many mirror sites (which is true
for ALL of this software).

The MCC Interim release is at It's
also mirrored to /pub/OS/Linux/images/mcc-interim, and /pub/linux/mirrors/mcc-interim.

The MJ release (discussed more below) can be found at

The SLS release is at

The sc.tamu versions can be found at

QUESTION: What should I get to install the bootdisk/rootdisk combo

ANSWER: FTP to one of the major Linux sites, such as
(directory /pub/linux/INSTALL) or (directory
/pub/Linux) and get the files (you may have to look through some
rawrite.exe (or rawrite2.exe) -- DOS executable to write the
images to floppies
bootimage-0.97.Z -- The kernel bootimage floppy itself
rootimage-0.97.1.Z -- The root filesystem and installation floppy

Also get the associated README files.

Then transfer these files to DOS, uncompress the two images (you can
either uncompress them under UNIX using the "uncompress" command or
with the DOS executable "uncomp.exe"), and run rawrite on them.
Note that rawrite2.exe may have problems on some drives and setups;
rawrite.exe is older but more trustworthy. Rawrite will copy,
sector-by-sector, the two images to two newly formatted floppies (of
course when this is done the floppies no longer work under DOS).

Note: you can also just use "dd" on your UNIX system (if it has a
floppy drive attached to it) to copy the images to floppies. Something
like "dd if=bootimage-0.97 of=/dev/fd0" should work; consult your
system's manuals for the exact device name of the floppy drive.

Now you have two floppies: one with the bootimage and the other with the
rootimage. Boot off of the bootimage disk and, when prompted, insert the
rootimage disk. You're all set... look at the README files on the
rootimage disk. To install the system from this disk you generally
log in as "install" and follow the procedures outlined in the READMEs
to create and format Linux partitions on your hard drive, install the
software, and so on.

Note: with the bootimage/rootimage combo release, even though you
can install Linux on your hard drive, you can't BOOT Linux from your
hard drive (you have to boot from a kernel floppy, the only drawback
of which is that it's slower booting but afterwards you can take out
the floppy and everything). To boot from your harddrive you have to
install either the "LILO" program which changes the boot sector of your
harddrive. This program is included with the MCC Interim and the SLS releases,
or you can get is from one of the FTP sites seperately.

QUESTION: What are the files /bin/sh and /bin/tar provided on the
0.97 rootdisk image (rootdisk-0.97)?

ANSWER: This image has been setup by Jim Winstead Jr, thanks to him.
The bin/sh is bash, the GNU tar is NOT on the root disk, instead the
PAX utility is there, NOTICE that this pseudo-tar does NOT handle the
'z' option for compressed tar files, instead you have to do the
following assuming the tared compressed file is myfile.Z and you want
to test it (flag t):

uncompress -c myfile.Z | tar tv -

But otherwise it works fine.

QUESTION: How do I get and install H.J. Lu's "bootable rootdisk" release?

ANSWER: Basically follow the directions above for the 2-disk "combo"
release, but you only have to rawrite a single floppy image and boot
it. It contains both the kernel and the root filesystem. This release
is new and in a state of flux, so this may change (as many things in
Linux are subject to do).

QUESTION: What is the MCC interim version of Linux?

ANSWER: The MCC (Manchester Computing Centre) versions of Linux are
designed to provide an installation/recovery system for Linux at
various release levels. As of Sept 92, five MCC versions of Linux
have appeared at intervals of 6-8 weeks. The current versions include

basic system utilities, many GNU utilities, man pages, groff, gcc and
g++, gdb, and full kernel sources. MCC interim Linux is distributed
entirely on floppy disk images, of which there are 7 in release
0.97p2 (boot, utilities, misc, comp1, comp2, g++, and gdb). The
original intention was to create a basic Linux installation on two
floppies, and other disks have been added in the course of time.

QUESTION: What are the advantages and drawbacks of using MCC or another
version over using the standard boot/root disks?

ANSWER: It is not possible to keep a large distribution like the MCC
interim versions absolutely up-to-date; if you want the very latest
copy of one or another program, you must get it from one of the ftp
sites yourself, and it might not cooperate with existing utilities.
On the other hand, MCC interim versions provide a large number of
utilities in a simple form, compiled in the same way, and integrated
into a fairly stable system. An MCC version of Linux will not have
its bugs fixed as rapidly.

QUESTION: How is installing MCC interim Linux different from installing
Linux from the standard boot/root disks?

ANSWER: The MCC interim versions of Linux do not use a floppy as their
root disk; instead they use a ramdisk contained on the boot image.
This means that more programs can fit on fewer disks, but that more
memory is used during installation. This may cause problems on
systems with only 2megabytes of memory. Also, parts of the MCC
interim systems may assume that some utility or library has been
installed from the same MCC interim system, and so may not work
properly if you have installed Linux from the standard root/boot

QUESTION: How can I find out more about the MCC interim versions of

ANSWER: The file README in mcc-interim/0.97p2 at the various sites
mentioned describes the available files. The file README.install in
the same directory describes the installation in detail.

QUESTION: How do I go about installing the MCC Interim release?

ANSWER: FTP to or one of the
mirror sites and grab all of the images and the gobs of README files.

Just rawrite these images to floppies and boot from the boot-US (or
boot-UK) image (read the Q/A above on the bootdisk/rootdisk combo for
instructions on using rawrite and so on). The reason you have a US and a UK
boot and util disk is that the keyboard codes are different depending on the

After booting the boot disk, you'll be prompted to put in the util-US (or
util-UK) disk and proceed with the installation. The basic steps that you'll
take are:

-- run fdisk to create Linux partitions
-- reboot from the boot floppy, then put in the util disk when asked
-- run mkfs to make filesystems and mkswap to make swap space on those
-- Mount each of the disks in turn and run the install script on each
of them

It's actually pretty simple, and the installation scripts take care of
most of the work. The tough part is making the partitions and
filesystems, just read the "README.fdisk" with the MCC release on how
to do this.

QUESTION: Any information about the MJ-stuff ?

ANSWER: You can grab the mj-base-[123].Z set to upgrade all your
software to the new shared library structure. There are some extra
files in the mj set. Following Wayne Davidson advice "the mcc-interium
distribution has slightly smaller binaries on it, so I only used the
mj set to fill in a few extra executables that I was missing. Now I
not only have more executables on my disk than before but more free
disk space than I started with." mj**** is the Martin Junius package
and can be found at in pub/linux/mj-bin

QUESTION: What's about SLS ?

ANSWER: (this is part of the README of SLS 0.96c)
SLS (Softlanding Linux System) Copywrite 1992, Softlanding Software.

which is NOT just an image dump of someones Unix system.

This distribution is freely available if you have internet
access, or an obliging friend with access to it.

The purposes of the SLS are the following:
0) provide an initial installation program (for the queasy).
1) utilities compiled to use minimal disk space.
2) provide a reasonably complete/integrated U*ix system.
3) provide a means to install and uninstall packages.
4) permit partial installations for small disk configs.
5) add a menu driven, extensible system administration.
6) take the hassle out of collecting and setting up a system.
7) give non internet users access to Linux.

SLS is a binary mostly distribution (except for the kernel), and
is broken into 2 parts: base (10 disks) and X (5 disks).
Highlights of the base are: gcc/g++, emacs, kermit, elm/mail/uucp,
gdb, sc (spreadsheet), man pages, groff, elvis, zip/zoo/lh and menu.
Highlights of X are: X, programmers libs, 75 dpi fonts, games (spider,
tetris, xvier, chess, othello, xeyes, etc) and utilities like xmag,
xmenu, xcolormap, and gwm.

Utilities < 40K are linked -N (in most cases) to eliminate the
header, so much disk space is saved. Disk usage is as follows:

Minimal base system: 6 Meg
Full base system: 20 Meg
Full base system + X11: 30 Meg

The distribution is made up of 15 disks, only the first two of
which are not DOS formatted floppies. Each disk contains about
1100K of stuff. You can, however, get a pretty complete system with
just disk 1-4, or if you already have linux up, just disks 3 and 4.
You may want to get just 1-4 first and do a minimal install, just
to get a feel for the system.

Please read the file COPYING which outlines the GNU copying
restrictions. The linux kernel is copywrite Linux B. Torvalds.
Various other copywrites apply, but the upshot is that you
may do whatever you like with SLS, except restrict others
in any way from doing likewise, and you must leave all copywrites
intact, and you can not misrepresent or take credit for others work.

QUESTION: How do I go about getting and installing the SLS release?

ANSWER: Ftp to one of the Linux sites and check out the files in the
"SLS" directory (usually under "packages" in the Linux directory).
The README files there explain it all; basically you download the
images (which are almost all DOS format files), rawrite the boot
disk to a floppy, and boot from it. Because the SLS release files are
DOS format, you don't have to rawrite them: the SLS installation reads
them directly. You can also get the SLS release on floppies by
snail mail for a nominal fee (for non-netters). See the SLS README
file for details.


QUESTION: How can I boot Linux off of my hard drive?

ANSWER: You need to install the "LILO" program which changes the boot sector
of your hard drive to allow you to choose between a DOS or a Linux partition to
boot from. These programs are provided with most major releases, or you can
get them seperately from one of the FTP sites.

QUESTION: I have the previous Linux version, how can I upgrade it?

ANSWER: If you've never done this before, get the kernel sources from
your nearest FTP site (in a file named something like linux-0.97.4.tar.Z)
and unpack them into /usr/src/linux. Then edit the Makefile to your
taste, and run "make". Assuming you have GCC installed correctly, the
kernel should compile and you'll be left with a new "Image" which is your
new kernel: if you boot from harddrive, copy the Image to wherever you
told LILO or shoelace to look for it, or if you boot from floppy dd the
Image to a new floppy. Make sure that you run "rdev" on the Image to make
it look for the correct partition for your root filesystem (if you
specified this correctly in the Makefile you don't need to do this).

Note: You may need to get the new sources for programs like "mount" or "ps"
corresponding to your new kernel version as well. These programs tend to
change with each kernel version, so after making your new kernel make
sure you have the most recent versions of these programs and compile them.

If you HAVE done this before, you can just apply the source patches
to your old sources and then recompile (i.e. you don't have to get the
entire kernel sources all over again). Use the "patch" program to do this.

QUESTION: How can I be sure I won't be writing over anything
important? I have to use DOS 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 linux to
examine which of the partitions you used.

QUESTION: Linux 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 Linux BLOCKS (1024 bytes), not
sectors. Also make sure that you have the right partition: partitions
are numbered "/dev/hda1", "/dev/hda2", and so on (and "/dev/hdb1",
"/dev/hdb2" for the second hard drive)... DON'T use "/dev/hda" or
"/dev/hdb" as they correspond to the entire disk, not just single

QUESTION: I just rebooted my machine, and now Linux dies with a
"panic: trying to free unused inode". What's going on??

ANSWER: You probably forgot to "sync" before rebooting, which stores
on the disk physically the contents of the kernel buffers. You can
either run "fsck" on the partition to TRY to correct the problem (it
might fail), or re-mkfs and re-install the software on that partition.

QUESTION: I have a one partitionned 40Mb disk. If I run mkfs, what

ANSWER: If you do that, you will have an empty 40Mb Linux file system.
You should, at least, make on your hard disk, one partition per
operating system you want to use.


QUESTION: Is is possible to access DOS from Linux?

(1) The mtools package allows you to access DOS files;
it emulates the DOS commands CD, COPY, DEL, DIR, TYPE, and others.
(2) Since approximately version 0.97 of the kernel, you can mount
DOS file systems as part of your Linux directory tree, providing you
have an appropriate mount command.
(3) A DOS emulator is in alpha test, which will allow DOS programs
and utilities to run under Linux.

QUESTION: So why use mtools?

ANSWER: Mtools is good if you want to do something quickly. For
example, if you want to get directories on a bunch of floppies. The
mount procedure requires you to mount the drive, get a directory, then
umount it. Mtools lets you get the directory with one command.

QUESTION: How do I get the mtools package set up correctly?

ANSWER: The mtools package is available in source form on most Linux
ftp sites. The most recent version (As of Sept 1992) is mtools.n2,
and there are linked binaries and library (.a) files available as
well (for example, as part of MCC interim releases of Linux).
In the n2 release of mtools, there is only one executable binary
which works differently depending on its name: you can create hard
or symbolic links to it named mcopy, mdel, mdir, mtype, etc; this
is how the Makefile in version n2 of mtools does it, and it saves
several hundred kilobytes of disk space. Finally, you need the
correct information in the file /etc/mtools, which is described below.

QUESTION: What is the format of the file /etc/mtools?

ANSWER: A complete entry in the file /etc/mtools contains the following
fields: drive, device, fat, cylinders, heads, sectors, offset. Two
examples of entries from /etc/mtools are

A /dev/fd0 12 80 2 15
C /dev/hda1 16 0 0 0

which defines the DOS disk A: as accessible through the device /dev/fd0,
having a 12-bit FAT, 80 cylinders, 2 heads, and 15 sectors per track;
DOS disk C: is accessible through the device /dev/hda1, has a 16-bit
FAT, and its geometry is simply that of the hard disk where it lives.
The last three numbers can be 0 if you wish; this allows mtools to
try to figure out the disk's geometry itself, and perhaps to fail.
A 12-bit FAT is common for floppies, but may occur in small hard
disk partitions. A 16-bit FAT is common for hard disks.
This is an extract of my /etc/mtools file:
A /dev/fd0 12 0 0 0 # 3.5 1.4 Meg (autodetect)
B /dev/fd1 12 0 0 0 # 5.25 1.2 Meg (autodetect)
C /dev/hda1 16 0 0 0 # 1st partition of my Disk

QUESTION: Where can I find out more about mtools?

ANSWER: There are two detailed README files in the mtools.n2 distribu-
tion. These files treat compiling and using mtools. There is a file
README.mtools which treats only using mtools, which is a part of the
MCC interim version of Linux.

QUESTION: How do I use the DOS file system?

ANSWER: The DOS file system is part of the kernel. If you have a
kernel of level 97.1 or above, and an appropriate mount command, type

mount -t msdos [-o conv=text] /dev/hda1 /dos

to mount the partition /dev/hda1 as an MS/DOS file system on the
directory /dos. You'll need a recent mount command, from at least
release 97 or later of the root disk. Recent mount commands also
accept the options conv=binary|text|auto (default is binary) to
specify that text end-of-lines in DOS files are to be converted to
UNIX end-of-lines (by omitting carriage return characters) in no cases
(binary) or in all cases (text) or in cases that don't have 'well-
known binary extensions' (e.g., .EXE or .COM) (auto).

QUESTION: I want to use the DOS file system with either conv=binary or
conv=auto, but I want to convert text files from DOS to UNIX format,
or from UNIX to DOS format.

ANSWER: Use the utility todos/fromdos which comes as part of the
dosfs package, currently (Sept 92) in released in version 8, or
use the flip utility by Rahul Dhesi.

QUESTION: Where can I find out more about the DOS file system?

ANSWER: There is a README file included in dosfs.XX.tar.Z (the current
value of XX is 8), and an abbreviated version of this in the MCC
interim package.

QUESTION: Whenever I use mtools to read a 720K in an 1.44MB drive, I
get a long sequence of reset-floppy-errors, why?

ANSWER: This is what happens if you use the /dev/PS0 device (b 2 28),
to read a 720k floppy you have to use another device, for example
/dev/ps0 (b 2 16). Or you may use the setfdprm utility.

QUESTION: This sounds me like a chicken and eggs problem, how can I
install the mtools package at the very beginning.

ANSWER: You have to use the rawrite stuff or the mount procedure.

QUESTION: Could someone explain how to use rawrite?

ANSWER: Well, rawrite is a DOS util, which write sequential sector of
a formatted disk/floppy. When a floppy has been rawritten, you can
(under Linux) untar it (use x, v, z and f flags). As an example:
a) under Dos use rawrite
source: kermit.z
destination: a
b) boot under Linux, and perform a tar
tar zxvf /dev/fd0
tar zxvp < /dev/fd0

You DO NOT NEED TO MOUNT a rawritten disk

QUESTION: What is as86.tar.Z ?

ANSWER: It's the port of Bruce Evans' minix assembler, you need it to
be able to recompile Linux at your convenience. In fact this is ONLY
used for boot/setup.S and boot/bootsect.S they create 80x86 REAL mode
BTW as86 should not work on keyboard.S, instead, you must use gcc -E
and then (g)as. Since 0.96 the keyboard routine is no longer .S but .c

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
ported to linux get as86.tar.Z Anyway there are a few differences
between these and normal DOS assemblers.


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 ...

Just do an fsck on the device, the -a flag might repair it otherwise,
the only thing to do is to reinstall the filesystem from the Images.

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: How can I partition my hard-drive to use Linux?

ANSWER: There are (at least) two ways to answer this. The easy way is
probably to use a program which will do it for you, such as the MS-DOS
fdisk, Minix fdisk, Xenix/Unix fdisk, or programs such as edpart.exe
or part.exe. With the 0.95a distribution, there is pfdisk. To use it
have a look in the beginner's guide written by I. Reid, it's clear and
it had worked for me like a charm. In the mcc-interim release ther is
also fdisk, which runs under Linux and manages partition tables
(it also creates extended partitions).

On the other hand, you can use a disk editor and modify the contents
of the partition table directly. This has been already done, and an
extensive explanatory note can be found in the mailing-list archives
(25th Jan. 92). You must also edit the bpb on the Dos partition you
are shrinking, otherwise Dos will step on Linux.

BTW It might be useful to set three (3) separated partitions for
Linux, one for the root, another one for the usr and a third one for
swap, as an illustration, my root partition is 10Meg, the usr is 22Meg
and instead of a swap partition I use a swap file. As an experience I
have used MS-DOS fdisk to partition my two hd and got no peculiar
You can, as long as you stay within the 64MB per filesystem
limit, have swap, root, etc, ... all on there.

QUESTION: I heard something about repartition a hard disk without
deleting everything on it, any clue?

ANSWER: It's not a program but a partition procedure which requires
a) a partitionning program
b) a sector editor
The procedure itself can be found (at least) in digest#132 Vol2.

QUESTION: What must I do to mkfs a floppy?

ANSWER: blocks are of size 1K so 1.44 floppy is 1440 blocks. The
floppy has to be formatted before this will work.

QUESTION: When I try to (un)compress many files in one command, the
command partially fails?

ANSWER: This is a bug, many partial fixes are floating around but ..
You can solve it by a bash command "for i in whateverfiles;do
compress $i; done". Another possibility is to download the
GNU tar and compress binaries (at tsx-11 /pub/linux/binaries/usr.bin).

QUESTION: I have some trouble with tar/untar; any clue ?

ANSWER: The tar provided on .95a disk is broken, and the one provided
on .96 and latter is Pax which do not accept the z flag. You can
download the GNU tar at tsx-11 in /pub/linux/binaries/usr.bin

QUESTION: I can do this as root but not as non-root, is it a bug?

ANSWER: Except for an early make utility, the problem is caused by an
incorrect permission flag. The most common problems are about /tmp
which should be 1777 and /dev/ttys? which might be 766. So as root do

chmod 1777 /tmp ; chmod 766 /dev/ttys?

QUESTION: "du" reports twice the size showed with "ls -l", is it a

ANSWER: No it is not, the report is 512 bytes multiple (due to POSIX
requirement), for KB you just add the -k flag. You can add a du
function in your .profile which does this automatically, something
like du(){ /usr/bin/du -k $* }

QUESTION: Sometimes, I get "mount can't open lock file"; what does this

ANSWER: This can happened for two reasons:
A) You try to mount something as non-root. In that case you can either
retry as root, or set the setuid bit to mount as follows:
- be sure that mount belongs to root, if not do 'chown root /bin/mount'
- set the setuid bit with 'chmod u+s /bin/mount'
BTW you have to do the same with umount (in order to be able to unmount)
Remark that it is NOT safe to allow anyone to perform mount/umount,
you should rather write a small utility that will make any user able
to mount/unmount a (and ONLY a) *floppy*
B) You are root. mount wants to open /etc/mtab and /etc/mtab~ - the
first one for reading, the second as lock file. If there is already a
mtab~ remove it. This can happen if you used once gnuemacs on mtab.

To forbid that case, just add the following entry in your /etc/rc file:
rm -f /etc/mtab

QUESTION: When I try "mount /dev/hd?? /user", I get error 2.

ANSWER: Be sure, that your mount point /user does exist; if not perform
a "mkdir /user".
BTW the error numbering is explained in /usr/include/errno.h

QUESTION: Since I have upgrade my Linux kernel, ps won't work anymore,

ANSWER: Each time you upgrade (or re-compile the kernel), you should
perform a 'ps -U' (-U is for update the /etc/psdatabase).

Every time you boot a new kernel you have to do a 'ps U' to update
the psdatabase, after doing this you can remove the system file or
do a make clean.

The pathname to the system binary [/usr/src/linux/tools/system] is
stored in the psdatabase, so you only have to specify it if you have
moved your source tree or if you are creating the psdatabase for the
first time. The psdatabase is always '/etc/psdatabase'. The system
file is obtained in compiling the linux kernel (which I assume is
rooted in /usr/src/linux).

BTW: For 0.97 you should download the new ps it's at tsx-11 in

QUESTION: Since Linux 0.96b I have a lot of core file all over
my disk. How can I sweep them away ?

ANSWER: Use the following command
find / -name core -exec rm {} \;

QUESTION: I can only log-in as "root", is it normal ?

ANSWER: No, add "rm -f /etc/nologin" in your /etc/rc.local file

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

QUESTION: It seems that $#@! ported on linux don't run correctly

ANSWER:(Matt Welsh) Possible, but check first if the size of your file
corresponds to the one on the ftp sites, if it is then post the
problem to comp.os.linux and verify that it's a bug that way. If the
problem IS indeed a bug, then you should get a copy of the Linux Bug
report template (included with the 'ibug' program, posted to
comp.os.linux on 27 Jul 92 and available on the major ftp sites) and
fill it out (either with the ibug program, if on a UNIX machine or by
hand if not) and mail it to [email protected]. I will
compile a list of bugs and post weekly. If someone has a FIX or a
WORKAROUND to a bug in the weekly bug-report posting, they should fill
out the Linux bug report fix template (also with the ibug program) and
mail it to the same address ([email protected]). I will
update the bug report accordingly.
I will post the aggregate bug reports as well as upload them to the
major ftp sites with the name BugReport_.

QUESTION: Does anyone port this to linux?, if not i'll compile it

ANSWER: First check on the sites, have a look to the info-sheet
monthly post and also available on sites. Have a look in the "old"
digest files and mail-archives of linux-activists, these are kept at
least at tsx-11 and nic possibly at tupac. Look also at the GNU(*)
utilities to see if someone has already written a freely distribuable
version. Ask then on the list/news.

(*) 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.

QUESTION: I've ported *** to Linux, what should i do to add it in the
standard distribution?

ANSWER: Read first the previous Q/A, then to make something available to
others you have to contact Alan Clegg ([email protected]) about
putting your code in the ABC-Release of Linux. The ABC-Release
is a standardized set of Linux sources and binaries that will be
available in an easy installable format, and which will be maintained
in a standard way. Submissions should conform to the Linux File System
standard version 1.0 (this file is kept at in
BTW Whenever you submit binaries, please do NOT link them with shared

QUESTION: 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. Moreover throw away most of the ld
flags such as -lg, since the libg.a is missing for some version of gcc
(see section IX. for more details).

QUESTION: Linux lacks on ****/ Linux has a bug in ***, what are the
rules to enhance/correct the kernel?

ANSWER: Before anything check if some one else is working on that
subject, contact those people, since end february a BUGLIST (thanks to
Michael Johnson) is kept on the major sites. Test your improvment (it
should work is NOT enough), then send the patches in cdiffs form to
Linus and/or the list, moreover the localization must be clear. This
does NOT mean that bug-reports and patches are not accepted. Moreover,
you should sent a brief note to Michael: [email protected]; contact
also [email protected] he organizes the ABC-Release.

VI.B. Major/Minor device number

QUESTION: What are the device minor/major numbers?

ANSWER: (some comments are from [email protected] and Jim Winstead Jr.)

Memory devices: Major = 1 (characted devices) minor
0 /dev/ram
1 /dev/mem
2 /dev/kmem
3 /dev/null
4 /dev/port (implemented, but untested - don't play with it)
5 /dev/zero

example: "mknod /dev/null c 1 3"

Floppy disks: Major = 2 (block devices)

minor = drive + 4*type, drive = 0,1,2,3 for A,B,C or D-diskette

type 1: 360kB floppy in 360kB drive (5.25")
2: 1.2M floppy in 1.2M drive (5.25")
3: 360kB floppy in 720kB/1.44Mb drive (3.5")
4: 720kB floppy in 720kB/1.44Mb drive (3.5")
5: 360kB floppy in 1.2M drive (5.25")
6: 720kB floppy in 1.2M drive (5.25")
7: 1.44M floppy in 1.44M drive (3.5")

Thus minor nr for a 1.44Mb floppy in B is: 1 + 4*7 = 29, and to read
an old 360kB floppy in a 1.2M A-drive you need to use minor= 0 + 4*5
= 20.

Example: "mknod /dev/PS0 b 2 28" (b for block: 2 for floppy, 28 for
1.44 in A)

Since the autodetect floppy, you can directly use the following:

0 /dev/fd0 - first floppy driver
1 /dev/fd1 - second floppy driver

See the 0.97.1 root disk or the MCC release for the specifics of the
naming convention - basically it's fd[01][dhDH]{360,720,1200,1440}.
Capital D/H means 3.5" drive, lower case is 5.25".

# Two hard drives are supported by default. This number is encoded
# in MAX_HD in linux/kernel/blk_drv/hd.c. The number of partitions
# appears to be hardcoded.

Hard disks: Major = 3 (block devices) minor
0 /dev/hda - The whole hd0, including partition table sectors
1 /dev/hda1 - first partition on hd0
4 /dev/hda4 - fourth partition on hd0
5 /dev/hda5 - Extended partition
64 /dev/hdb - The whole hd1, again including partition table info
65 /dev/hdb1 - first partition on hd1
68 /dev/hdb4 - fourth partition on hd1
69 /dev/hdb5 - extended partition on hd1
NOTE! Be /very/ careful with /dev/hda and /dev/hdb - you seldom need
them, and if you write to them you can destroy the partition tables:
something you probably don't want. The only things that use /dev/hda
are things like "fdisk" etc.

NOTE 2!! The names for hd's are no longer the same as under minix,
there is a straightforward correspondance, but I think
minix orders the partitions in some way (so that the partition numbers
will be in the same order as the partitions are physically on the
disk). Linux doesn't order anything: it has the partitions in the
same order as in the partition table (ie /dev/hd?1 might be physically
after /dev/hd?2).

NOTE 3!! Extended partitions are recently detected, use them
carefully, they should work, but backup everything before.

# The number of virtual consoles is encoded in NR_CONSOLES in
# linux/include/linux/tty.h. Similarly, the number of serial
# lines is encoded in NR_SERIALS, and the number of ptys in

Tty's: Major = 4 (character devices) minor
0 /dev/tty0 - general console 1 -
63 - reserved for virtual console
64-127 - reserved for serial io
128- - reserved for pty's

And more particularly we have:
64 /dev/ttys1 - com1
65 /dev/ttys2 - com2
66 /dev/ttys3 - com3
67 /dev/ttys4 - com4

On some distributions the ttysX have been renumbered as follows
64 /dev/ttys0 - com1
65 /dev/ttys1 - com2
66 /dev/ttys2 - com3
67 /dev/ttys3 - com4

# The number of line printers is encoded in LP_NO which is found in
# linux/include/linux/lp.h.

lp: Major=6 (character devices) minor since 095c+
0 /dev/lp0 /dev/par0
1 /dev/lp1 /dev/par1
2 /dev/lp2 /dev/par2

# The maximum number of scsi drives is encoded in MAX_SD in
# linux/kernel/blk_drv/scsi/sd.h

Scsi: Major=8 (block devices)
Minors are assigned in increments of 16 to SCSI disks as they are
found, scanning from host 0, ID 0 to host n, ID `7, excluding the
host ID. For more information read the SCSI.note file available with
patches for SCSI (see the SCSI section below).

X*16 /dev/sdX full device
X+Y*16 /dev/sdYX partition X on sd Y

# The scsi tape code is not yet in place. But for future reference, the
# number of scsi tapes supported is defined by MAX_ST in
# linux/kernel/blk_drv/scsi/st.h.

Scsi Tape -- not implemented
SCSI Tape: Major=9
X /dev/stX

Bus Mouse: Major=10 (character devices)
0 /dev/bm

Finally there is also a PS/2 mouse with Major 10 and minor 1 it's also
a character device named /dev/psaux.

NOTE 4!! all the numbers given are in decimal form (the one you can
see if you perform ls -l on /dev).

QUESTION: (Chuck Boyer) Could some one clear up the devices meaning?

ANSWER: (Jim Winstead Jr)

This allows programs to access the hardware ports directly. Not
something you generally mess around with much.


These are the pseudo-tty 'master' devices. Each pty connection uses
a slave-master set of tty devices.


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.


These are the pseudo-tty 'slave' devices.


These are the serial devices. ttys1 corresponds to COM1 under DOS,
ttys2 corresponds to COM2, etc.

VI.C Special Serial
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!)

QUESTION: Is there a list somewhere where I can get help with serial
communications under Linux?

ANSWER: (Jim Gifford -- [email protected])
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: [email protected]
To join, send mail to [email protected]
I hope that this list will prove beneficial to the improvement of
Linux. This list is maintained by Michael K. Johnson as
[email protected]

QUESTION: 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.

QUESTION: What are the major, minor numbers for the serial ports under linux?

ANSWER: Major 4, Minor :
64 /dev/ttys1 - com1
65 /dev/ttys2 - com2
66 /dev/ttys3 - com3
67 /dev/ttys4 - com4

QUESTION: can anyone give me a sample /etc/inittab entry for login
from a pc attached to serial line /dev/ttys2?

ANSWER: "Humberto speaking :)"
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:console:/etc/getty -m 1200 ttys2

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 "" > /dev/ttys?

QUESTION: 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 ๐Ÿ™‚

$Log: faq.p2,v $
# Revision 1.10 1992/09/27 13:31:54 mmc
# just an update. I will include other faq maintainers work
# Revision 1.9 1992/07/10 14:24:26 linux
# This my last update before my summer rest
# The linux is 096c, and next time FAQ will probably be
# in texinfo format
Newsgroups: comp.os.linux,news.answers
Distribution: world
Followup-To: poster
From: [email protected]
Reply-To: [email protected]
Organization: Greco Prog. CNRS & LaBRI, Bordeaux France
Subject: Linux Frequently Asked Questions 2/2 [monthly posted]
Expires: Mon, 11 November 92 09:00:41 GMT
Approved: [email protected]
Summary: Linux, a small and free unix for 386-AT computers.

Archive-name: linux-faq/part2
Last-Modified: 92/09/05 15:35:30
Version: 1.10

* *
* Answers to Frequently asked questions about Linux *
* *

This post contains Part 2 of the Linux FAQ. It must be read *after* the
first part. It contains the following sections:

XI. X11, THE MAXIMUM and MORE (part2)



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 v0.97, so there might be some
mistakes. Moreover take care to use the correct library and include
stuff, and the ad-hoc gcc you use !!!

QUESTION: 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: Don't use the previous version (digest44 vol.#1) with 0.95a

QUESTION: Where is 'which' ?

ANSWER: It depends on the sh you are running:
in bash 'type -path'
in tcsh it's a builtin

for ash and rc you can try the following (untested by me) script from
Kevin Brown:

for i in `echo $PATH | sed 's/:/ /g'` ; do
for j in ""$@" ; do
if test -x "$i/$j" ; then
echo "$i/$j"

QUESTION: 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.

QUESTION: 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

QUESTION: 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.

QUESTION: I know there are shared libraries; does there exist an easy
way to check an executable for sharing ?

ANSWER: (Josh Yelon & HJ Lu)
(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 ....

(Claude Morin) Finally, there exists at tsx-11 ldd.tar.Z If you follow
the instructions, you will be able to type "ldd " 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. Notice that 'ldd' does not work for
executables linked before the installation of ldd.

QUESTION: 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.

QUESTION: 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.

QUESTION: 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).

QUESTION: How can I get Linux to boot directly from the harddisk?

ANSWER: Right now, this can be done via the shoelace stuff or the
bootany package, or by the bootlin package from [email protected].
There is also the LILO stuff.
If you choose shoelace *please* do read the next Q/A (and also the
README provided with the shoelace stuff)

QUESTION: 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).

QUESTION: 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.

QUESTION: 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.

QUESTION: 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].
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

QUESTION: 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 '

QUESTION: 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.

QUESTION: Does emacs handle the arrows-key

ANSWER: Yes it does, one simple way is to put some elisp code in your
.emacs, this is an except of mine:

(define-key global-map "OB" 'next-line)
(define-key global-map "OA" 'previous-line)
(define-key global-map "OC" 'forward-char)
(define-key global-map "OD" 'backward-char)
(define-key global-map "OH" 'beginning-of-line)

The keycode (A, B etc..) was obtained by ^Q followed by the key

QUESTION: 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

QUESTION: Uemacs doesn't work anymore with 0.95a, whenever I want to
save a file; what can I do?

ANSWER: ^S and ^Q are used for flow control. One solution is ^X^W
followed by the filename, or M-X save-file, try also ^XS it could work
for some version (not mine). Another possibility,
if you have download the stty.tar.Z file, is to do stty -IXON
before you first use uemacs (this can be included in your .profile).
And the last is to recompile the Peter Orbaek init-1.2 package.

QUESTION: 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
The true test, if Linux detects your video card, is if you press
at the "Press 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 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.

QUESTION: 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])

QUESTION: 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.

QUESTION: 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

QUESTION: 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

> 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?)


QUESTION: What is the meaning of files ended by .T.Z

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).


QUESTION: 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 -key
together with -key. With the Linux Images distribution, 4 consoles
are available, getty runs on them.

BTW: the serial ports are now /dev/ttys0, /dev/ttys1, /dev/ttys2 and
/dev/ttys3. tty0 is the general console. tty128- are reserved to pty's

QUESTION: 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

QUESTION: 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:
ash, bash, rc, zsh and tcsh.

QUESTION: 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

BTW there is no roff,troff nor nroff for Linux. Cawf 2.0 works just
fine for simple man pages, and a partial ms support too. Quite
recently the port of groff has been done (due to gcc2.x port), you can
found it (at least on tsx-11) in pub/linux/binaries/usr.bin/groff.

Moreover Michael Johnson is the coordinator for man pages under Linux,
he is looking for volunteers, so contact [email protected].

QUESTION: What are the editors available in linux?

ANSWER: Right now there are uemacs-3.11, elvis-1.4 (1.5).
And recently the port of emacs-18.58 has been done by Bernd Wiegmann
which corrects some pty's problems (that one can be found in
binaries/emacs-18.58 at tsx-11). Also the port of mg (micro gnu) has
been done and can be found at least at (
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 and recently elle (Elle Looks Like Emacs).

QUESTION: Does there exist a printer package for Linux?

ANSWER: Once you have successfully recompiled the kernel v0.97, you
need to create new devices in the /dev directory (see the major/minor
information). Printing, then, can be achieved by :
cat filename > /dev/lp1

QUESTION: Does there exist a ps for Linux?

ANSWER: Yes, a very simple one is implemented by default, just press
the shift-scroll-lock key; ctrl-scrollock gives a kind of memory
status, and alt-scrollock gives registers information. There is also a
much more complete ps/memory package it's ps097p4.tar.Z.

QUESTION: 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

QUESTION: 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

QUESTION: 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.

QUESTION: 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.

QUESTION: How is it possible to remove a swap device?

ANSWER: mkfs the device, and remove the swapon of your /etc/rc file.

QUESTION: 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

QUESTION: 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
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.

QUESTION: 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...

QUESTION: 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.

QUESTION: What are the major/minor number of /dev/swap since it's
needed by free ?

ANSWER: None, /dev/swap is a link to your swap area (file or
partition). To make a link, use the ln command.

QUESTION: 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.

QUESTION: 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.

QUESTION: 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.

QUESTION: (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.

QUESTION: Does there exist shared libs ?

ANSWER: (H.J. Lu, [email protected], 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 current classic shared library.

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

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 file, usually
called, __shared.o, 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 `__shared.o' into the stub library for
that library and add a declaration for the dummy global data defined
in `__shared.o' which will make sure `__shared.o' will always be linked
in when any 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.

In the current implementation, only libc.a, libcurses.a, libdbm.a,
libtermcap.a and libm.a are built with jump table. The global data in
X11 libraries are too complicated to make jump table such that their
addresses won't change when there is a change in X11 libraries. It's
not apparent yet that the benefits gained from a jump table version of
the X libraries would offset the effort required to set it up and
maintain it unless we get some cooperation from X Consortium, which
is very unlikely. But they are linked with jump table version of
libc.a and libm.a. That means they don't have to be relinked when
there is a modification in libc.a or libm.a.

QUESTION: Does Linux work for SCSI drives?

ANSWER: Yes since v0.96. At in /pub/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 [email protected]

QUESTION: 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.

QUESTION: 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

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

QUESTION: There are a lot of patches available (fd patch, lp patch
login patch ...) can I be fairly confident the subsequent patches will

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.

QUESTION: 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
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

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


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.

QUESTION: What's about Bus Mice ?

ANSWER: (Nathan I. Laredo) Since the Linux v0.96c-pl2 the kernel does
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
To create a bus mouse device:
mknod /dev/mouse c 10 0

QUESTION: What's about TeX ?

ANSWER: The primary site for Linux TeX is, this is
P. Williams' site in Australia. The stuff at tsx-11 was posted by
T. Dunbar who does support/maintain the dvilj stuff.

QUESTION: 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.


- does not depend on the file system. (Tested with Minix, EXT FS and MS-DOS
- 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
- 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
- boot sector, file map and boot images can be all on different disks or

Restrictions and known problems

- SCSI disks are not fully supported yet. (Still waiting for some kernel
- 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

Please send all bug reports to [email protected]

QUESTION: 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: [email protected]
The stuff can be found at banjo in pub/Linux/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

QUESTION: 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.

QUESTION: 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

QUESTION: What's about X11 ?

ANSWER: See the section devoted to X11 in this FAQ.


The official release of GCC for Linux is 2.2.2d, information for the
previous versions (1.37, 1.40) can be found in FAQ of July 92.

I think this section is needed, 'cause a) gcc is the compiler under
Linux, and b) the gcc-2.x is still evolving, and many information change
To conclude this short introduction (in fact the conclusion will be
longer than the introduction :), the most recent release of gcc-2.2.2d
can be found at tsx-11 in /pub/linux/GCC, and also at under /pub/linux/GCC, and one of the
"specialist" is Hongjiu Lu ([email protected]). There is a special
channel for GCC, feel free to contact the linux-activists list.
The Information provided in this section which envolved GCC2.xx
are extracted from the FAQ GCC, written by Hongjiu, provided
with the current distribution of gcc /READ IT/
Finally whenever you report a bug please give the version of gcc, the
version of your kernel, otherwise NO ONE can help you.

QUESTION: I don't know how to install gcc stuff, is there special

ANSWER: gcc-2.xx is splitted in 3 main files 2.xxdb.tar.Z,
2.xxlib.tar.Z and 2.xxmisc.tar.Z, some utilities (binutils.tar.Z) and
shared libraries are also provided. To install them do the following:

First of all, backup the old compiler. YOU MUST BE SURE THERE IS NO
is all the stuff: binaries, header files, libraries and crt0.o. I
assume that whateverplace contains the 2.xxfiles you have downloaded.

cd /usr
tar xvpzf whateverplace/2.xxmisc.tar.Z

read the FAQ, and README in /usr/install/gcc2.

QUESTION: What are the contents of them?

ANSWER: 2.xxdb.tar.Z contains cpp, libg.a and libc_p.a. 2.xxlib.tar.Z
contains cc1 and cc1plus. 2.xxmisc.tar.Z contains gcc 2.xx drivers,
header files, libraries, manual pages and installation instructions.
Another file, XXXXinc.tar.Z, where XXXX is the current version number
of Linux kernel, has all the header files to replace the header files
from kernel. YOU MUST INSTALL IT. Please read README for details.

(gcc.2.2.2d 08/15/92)
1. 2.2.2ddb.tar.Z (libg.a, libc_p.a and jump stable stuffs)
You just have to install jump/lib*.so.* by hand.
3. 2.2.2dg1.tar.Z (libg.a compiled with -g1 to get a smaller libg.a)
4. 2.2.2dfix4.tar.Z (, , , libc.a and
5. shlib-2.2.2d.tar.Z (build the stub libs for the shared libs.)
6. libc-2.2.2dfix4.tar.Z. It has the following files:


You need to delete by hand libinet.a in

QUESTION: I seem to be unable to compile anything 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

BTW Since swapping is possible, I have heard that compilation works
with only 2Meg and a lot disk traffic ๐Ÿ™‚ Isn't it great?

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. lib*.a and
*.o should be in /usr/lib or /usr/local/lib

QUESTION: I tried to port a /new/ version of gnu stuff. But in the
linking phase, gcc complains about the missing libg.a.

ANSWER: Yes this is well known for compiler version earlier than
2.2.2, throw away the flag -g that's all, anyway libg.a is /only/ for
debugging purpose.

QUESTION: How to compile programs which may be debugged with gdb?

ANSWER: There are different ways to handle this problem. If
you have the gcc2.2.2 or later it's simple, use the -g flag. Otherwise
there are different possibilities:
1) As there is no libg.a, you should throw away the -g flag in link
phase, this means that the compilation must be done in two steps
example: instead of "gcc -g monprog.c -o monprog", use the following
"gcc -g -c monprog.c" and then "gcc -o monprog monprog.o"
Alas this method is not that good if you are using Makefile.
2) The other way is to create an empty libg.a as follows (Peter
Macdonald trick):
- create libfake.c containing libgfake() {}
- compile it with: gcc -c libfake.c
- create the libg.a with: ar r libg.a libfake.o
2bis) The more tricky Humberto method:
cd /usr/lib
ranlib libg.a

then gcc -g monprog.c -o monprog will produce a debuggable monprog

QUESTION: When compiling some code, cc1 complains about some insn
code, what's that?

ANSWER: An insn is an internal representation that gcc uses when
compiling. The main part of gcc is to take ordinary c (or c++) code,
and compile it, while ding optimizations in insn part, which is
soft/hard independant. Then another part which is hard/Os dependant
takes the insns and translate it in assembly language. The fix is only
to turn off the optimization flag (-O).

QUESTION: While compiling some stuff, I'm getting the following
error message:
Undefined symbol ___addsf3 referenced from text segment
as well as ___mulsf3 and __cmpsf2.
These symbols are not in the program or in it's header files.

ANSWER: These are math helper functions, and you can usually compile
these programs to use the kernel floating point routines by adding
'-m80387' to the compiler switches. If the program does any wierd
fp math (exp(), sin()) it'll die when you run it though.

QUESTION What's about gcc2.x ?

ANSWER: It has been ported to linux, it is (pretty) stable and works.
The files are 2.xxlib.tar.Z and 2.xxmisc.tar.Z Uncompress and untar
2.xxmisc, read the FAQ enclosed and play with it. You can find these
files at tsx-11 in binaries/compilers/gcc-2.x. One of the most recent
version is on tsx-11 and fgb1.
The shlib.tar.Z enables you to create shared libraries, read the
README file included
The 096inc.tar.Z contains the header files from the kernel

QUESTION: What can gcc-2.x do for me, that gcc-1.40 cannot?

ANSWER: Shared libraries: small programs shrink by an average factor
of 2~3, larger program by 50K. It also compiles C++, and so replace
both gcc-1.xx and g++1.xx. And also:
- ANSI and BSD 4.4 compatible stdio
- iostream for g++

QUESTION: I can't run g++ due to the lack of "expr"; where can I find
it ?

ANSWER: In the shellutils-1.6.tar.Z (or whatever is the last release)

QUESTION: I have grabbed the new gcc2.xx, but I can't use it whenever
I compile (even hello world program) I get "parse error before ('s";
any clue ?

ANSWER: Yes, it's caused by bad compress/tar binaries, use the one
provided at tsx-11 in linux/binaries/usr.bin

QUESTION: Is there a bug in how g++ and gcc handle include files?
'cause I can't get them to find files in the g++-include directory.

ANSWER: Did you run "fixfiles"? The file permission in g++-include is
640 and should be 444.

QUESTION: I've seen on my ftp-server that there are different
***fix*.tar.Z files in the GCC directory, do I need them?

ANSWER: If you got a very early copy of gcc 2.2.2, please get
2.2.2fix1.tar.Z and 2.2.2fix2.tar.Z, and libc-linux.fix.tar.Z for the
C lib sources, and new shlib-2.2.2.tar.Z if you want. If you got gcc
2.2.2 after you saw **fix*.tar.Z, you are fine.

QUESTION: Is stdio ANSI compatible?

ANSWER: Yes, please test it.

QUESTION: Is g++ in 2.xx?


QUESTION: How do I use gcc?

ANSWER: Read manual page, or in /usr/install/gcc2.

QUESTION: What options can I use for gcc?

ANSWER: Read manual page, or Also -static tells gcc
to use the static libraries, -nojump forces gcc to use the classic
shared libraries. The default is the jump table version of shared
libraries. The shared libraries for X are linked with the jump table
version of shared C library.

QUESTION: Where is the source code of the new libc.a?

ANSWER: The same place you find this file. It is called

QUESTION: Why does g++ complain, even die?

ANSWER: You need "expr", which is in GNU shell utilities 1.6, echo (?)
and sed.

QUESTION: How do I generate code for 486?

ANSWER: Add -m486 to CFLAGS.

QUESTION: I heard malloc (0) wouldn't work with Linux, what should I

ANSWER: include and don't define NO_FIX_MALLOC.

QUESTION: Why does gcc say "xxxxx..h not found"?

ANSWER: see QUESTION: What are the contents of them?

QUESTION: I really followed every step in the documentation, but when
I do "make", why does it say "don't how to make xxxxxx"?

ANSWER: The dependency in Makefile is dated, you need to make a new
one. Please get some guide on make and read Makefile. For the kernel
sources, please do

cd src/linux
make dep

QUESTION: How do I compile programs under Linux?

ANSWER: The Linux C library is trying to be ANSI/POSIX compliant. It
is also very compatible with SYSV and BSD. The C library is loaded
with SYSV and BSD functions. There are three exceptions:

1. signal in Linux is POSIX.
2. tty in Linux is POSIX.
3. time functions are POSIX, plus a few BSD and SYSV extensions.
4. setjmp/longjmp functions are POSIX. But you can use -D__FAVOR_BSD
to make it BSD or use sigsigjmp/siglongjmp.

When you compile a program under Linux, your best bet is include all
the appropriate header files and use -Wall. All the usable functions
and global variables are declared in the corresponding header files.
YOU SHOULD NOT DEFINE ANY functions or global variables OF THE LINUX C

After saying all those, you now should know you can compile a program
with -D_POSIX_SOURCE or -D_GNU_SOURCE (read for details).
With a few modifications you can even use -DSYSV, -DUSG or -DBSD. Some
codes need to define -DSTDC_HEADERS for ANSI C compiler like gcc here.

To use malloc () and calloc () safely under Linux, please include

and don't define NO_FIX_MALLOC.

BTW, gcc -traditional should work with gcc 2.2.2d or above.

Please also read ChangeLog for the latest enhencement.

Please read the header files for details. Maybe you should get a book
on POSIX. Any suggestion of the book list?

QUESTION: How can I write codes suitable for building shared library ?

ANSWER: (H.J. Lu, [email protected], 09/01/92)
There are some guidelines for writing codes suitable for building the
shared library with jump table.

1. Never, ever allow library users to access global data directly.
Always, always make them go through access functions. That way,
you are free to change the internal implementation, but can
easily provide backward compatibility by simply replacing the
access functions.

2. If you do have to define some global data for library users to
access, put them into a separate file. Never mix them with other
library code. Also make sure the relative locations of the global
data will not change very often. One solution is leave some spaces
for them to grow.


This section was written by Drew Eckhardt, the last update of the
information enclosed was 03 Sep 92 12:31:27 +0200.

QUESTION: What SCSI hosts are supported?

ANSWER: The Adaptec 154x, Adaptec 174x in "standard" mode, Future
Domain 16x0, Seagate ST0x, Ultrastor 14F, and Western Digital
7000FASST are supported. Various Adaptec clones from Bustek
and Future Domain are known to work, in both ISA and EISA flavors.

Some patches for Future Domain TMC 950 boards were posted to the net.
These will be incorporated into the "Standard" SCSI release RSN.

QUESTION: Which disks ?

ANSWER: Anything that works with your host adapter electronically, and
is new enough to support a December 1985 draft of SCSI-I.

Sysquest removable drives are known to work. However, DO NOT remove a
mounted cartridge. This will trash your filesystem.

Extended partitions also work, with 11 Extended partitions per disk
allowed in combination with the four real partitions and whole disk
sub device.

Disks up to two terabytes in size will work, since the sd drier
switches to 10 byte reads when necessary.

QUESTION: What about SCSI tapes ?

ANSWER: Tapes will be supported after the new interface is inplace on
the SCSI driver stack. The new interface will allow transfer between
USER and KERNEL memory, which is what is needed for character devices
(like tapes), without using the generic SCSI ioctl call.

Some one is working on a SCSI tape driver that works with the
old interface.


ANSWER: There is a beta version of SCSI CD-ROM code floating arround,
with support for ISO-9660.

QUESTION: How do I get SCSI information?

ANSWER: Subscribe to the SCSI channel of the linux-activists mailing list.
mail [email protected]
And put in the header.
X-MN-Admin: join SCSI

QUESTION : I can't make a filesystem on /dev/hd*

ANSWER : /dev/hd* aren't your SCSI disks. /dev/sd* are.
See below for approproate major / minor numbers if they
do not exist on your root diskette.

QUESTION: How do I partition the disk?

ANSWER: Use pfdisk or the DOS partitioning program of your choice.

The problem with partitioning SCSI disks and Linux is that Linux talks
directly to the SCSI interface. Each disk is viewed as the SCSI host
sees it : N blocks, numbered from 0 to N-1, all error free. There is
no portable way to get disk geometry.

However, DOS doesn't like things like this, it demmands that BIOS
present it with a normal Cylinder / Head / Sector coordinates. So,
BIOS does, and it comes up with some fabrication that fits what DOS
wants to see. You don't want to disagree with what BIOS thinks when
you write the partition table.

Moral : if you partition under Linux, and use a disk with DOS too, you
MUST know the geometry according to the BIOS.

If you partition under Linux, as long as you have the starting
sector number of a partition, and the length in sectors,
Linux will be happy.

QUESTION: The stock {f,pf}disk programs don't work.

ANSWER: Yes. The device names /dev/hd* are hard coded into these
programs, and they don't see /dev/sd*.

If you want, YOU can change the /dev/hd* devices to be links to or
other entries for the SCSI devices.

Also, pfdisk should be callable with a device name.

Hopefully, some one will change the partitioning programs to respect
the SCSI devices.

QUESTION: Where is the latest version maintained?


Right now, the newest publically released code is in .97.

Join the list before you grab anything.

QUESTION: What are the major / minor numbers for SCSI drives?

ANSWER: Right now, it is theoretically possible to have 21 SCSI
devices in the system. With SCSI- MFM / ESDI / SMD bridges this can
be even more drives, as each id may have several drives on it each set
up as a LUN of that id. Needless to say, if we have allowed for 16
partitions per SCSI drive, we're pushing the limits on minor numbers.
Therefore, a yucky dynamic numbering scheme is used.

block device major 8 is used for SCSI drives. I personally like
/dev/sd[n][p], where n is the drive number, and p partition letter -
but this is entirely personal preference.

Minors are assigned in increments of 16 to SCSI disks as they are
found, scaning from host 0, ID 0 to host n, ID 7, excluding the host
ID. Most hosts use ID 7 for themselves.

A minor where minor mod 16 = 0 is the whole drive, where minor mod 16
is between 1 and 4, that partition, extended partitions dynamically
assigned from 5 to 15 inclusive. Note that the gendisk.c module
prints partition tables on initialization - you should be able to see
them there.

Example : I have four SCSI disks, set up as follows
Seagate ST02, ID=0
Seagate ST02, ID = 5
Ultrastor 14, ID = 0
Adaptec 1542, ID = 0

The first disk on the seagate at ID 0 will become minors 0-15
inclusive, the second at ID5 16-31 inclusive, the disk on the
Ultrastor 32-47, on the Adaptec 48-63.

QUESTION: I can't use more than X SCSI disks.

ANSWER: Change MAX_SD in sd.h, MAX_SCSI_DEVICE in scsi.h, and
recompile the kernel.

QUESTION: How do I reduce kernel bloat and eliminate the drivers I
don't want?

ANSWER: Simply #undef CONFIG_DISTRIBUTION in include/linux/config.h,
and define the macros for the SCSI hosts you want enabled.

QUESTION: I get SCSI timeouts.

ANSWER: Make sure your board has interrupts enabled correctly.

QUESTION: The seagate driver doesn't work.

ANSWER: There are two possibilities
1) Is the board jumpered for IRQ5 ?

The factory settings are
for MSLOSS, and have interrupts disabled. Interrupts are controlled
by the W3 (ST01) or JP3 (ST02) jumper, which should have pins FG
shorted. See your manual.

2) Cached machines will not have problems IF the Seagate's address
space (typically C8000 - CAFFFF) is not marked "non cacheable."
This applies to the i486 internal cache as well as i386/i486
external caches.

This can be set in the XCMOS of most machines. If you can't disable
cache for the Seagate's area (16K in size, starting at the base
address), then you must disable the cache entirely, otherwise
it won't work.

QUESTION: The Adaptec driver doesn't work.

ANSWER: The Adaptec BIOS does some initialization that affects
the driver. If the BIOS was disabled, it may fail on your system.

QUESTION: What about bugs?

ANSWER: It works on MY hardware. It works on Tommy Thorn's Adaptec
system, Dave Gentzel's Ultrastor, Thomas Wuensche's WD7000, Rick
Faith's Future Domain, and quite a few other systems.

Bugs that are there will mostly be very hardware specific, and nasty
to track down. SCSI should be basically error free - consequently,
the error code has not been heavily tested, and there are known bugs
in it.

If you have found a bug, please mail it to the mailing list with
specifics of your hardware. Other people may have the same problem, a
solution, etc.

If you provide a patch, in context diff form, the bug will be fixed
Immediately. If you can provide me with a procedure that reproduces
the bug on *MY* system, the bug will be fixed "soon." Your chances
of getting it fixed increase exponentially with the amount of
information provided. If I can't reproduce it, and your
description gives me no idea as to where in the code to look,
it won't get fixed by me.

QUESTION: What are the known bugs?

ANSWER: The error routines are imperfect, meaning they trap errors but
don't retry correctly. This can cause READ CAPACITY
to fail in sd_init.

Many of the drivers cannot abort a command that is in progress - if
something goes haywire, all drives off that controller will hang.

One user has problems with the seagate driver going "Kablooey", or
reseting the system. Kablooey is defined as the screen
disentigrating into multi-colored random garbage.

Another user could never get the seagate driver to work period.

QUESTION: I get a message saying READ CAPACITY FAILED. What does this

ANSWER: One of two things. First thing is that there is a bug in the
midlevel error handling code. When an error condition is returned,
things aren't retried. Some SCSI disks get unhappy at the sight of
the initialization routines, and will return an error condition for
the first "real" command that they run. INQUIRE doesn't count, since
that will allways return successfully, irregardless of pending error
conditions, unless your drive is Kaput.

You could also have a flakey disk, but this is unlikely.

The latest version of the SCSI drivers is kludged to retry the
READ_CAPACITY, even though the midlevel driver claims to have retried
it, and you should no longer get this message.


QUESTION: Why does the system "hang" when SCSI disk access occurs.

ANSWER: Older Linux distributions (pre .97) used earlier versions
of the SCSI drivers, where the drivers were not interrupt driven
(easier debugging, or so we thought). Since the drivers did not return
from the device driver strategy routine, until the SCSI command
completed, no other tasks were scheduled, and ineteractive performance
was abysmall.


QUESTION: Why can't I swap to a SCSI disk?, Why can't I mount a SCSI
disk as root?

ANSWER: This was due do a race condition that has since been fixed (I

It only manifested itself in drivers using the command() interface
(see bellow), but this interface isn't used very much as it was there
mostly for develeopment.


QUESTION: What future developments are planned?

ANSWER: The following changes will occur (listed from highest to
lowest priority) :

- The new interface is almost done. Right now, our biggest
problem is reading one block / revolution,
yielding a ~60K/s transfer rate on unbuffered
drives. Buffered disks have seen up to 300k/s.

- support for scatter / gather is there. This
means that all read (and readaheads) will be
handled via one command. With the current
two block readahead, you will see 3X the
transfer rate on unbuffered drives from this

- support for raw devices is there.

- support for file system block sizes != 1K will
be added. With a 4K file system, you will see
4X the performance on unbuffered drives.

- SCSI commands are issued as linked commands
wherever possible, eliminating the arbitration /
selection / message out phases needed to start
a command "from scratch".

- One outstanding command per LUN is supported,
vastly improving performance in multi-disk systems.

- The probe code is completely new. The low level
drivers get a chance to attach(), and will be
able to do synch negotiation at this time.

- I have the mode page specs, and am looking at
doing "appropriate things" w.r.t. cache enable,
buffer control, etc. It seems that some drives
power up, and keep the buffer off until told otherwise
in software.

- Support for LUN != 0 will be added

- Support for block size, where 1024 % blocksize == 0
will be added.

- Support for tapes will be added


ANSWER: I'm working on it, but other things like "real" work have been
getting in the way.

XI.B. HARDWARE REQUIREMENTS: Supported Video cards.
XI.C. LINUX DISTRIBUTION: Files required, Current version.
XI.D. LEARNING/USING X: Pointers to X documentation.
XI.E. DEBUGGING STARTUP PROBLEMS: Checklist, Screen restoration, Hanging.
XI.F. XCONFIG: Video mode settings and common errors in Xconfig.
XI.G. X-APPLICATIONS: Compiling X programs.

This entire document will need revision when xfree86-1.1 is released.
However some of the information is useful for bringing up any
version of X386/XFree86.


QUESTION: What is the X11 release supported by Linux?

ANSWER: It's the X11R5 (X386 1.2)
It will soon be XFree86 as of the next public release which
should be available by the middle of Oct. It will be announced
on comp.os.linux.

QUESTION: What is X386?

ANSWER: X386 is the port of the X11 server to System V/386 that was
done by Thomas Roell ([email protected]). It supports a
wide variety of VGA boards. X386 1.2 is included in MIT's X11R5

The Linux X386 port was based on the stock distribution from X11R5,
from MIT and was done by Orest Zborowski ([email protected]).

It has since moved to becoming part of the standard xfree86 distribution.

QUESTION: Where can I get X386 1.2 (X11R5)?

ANSWER: The X386 1.2 sources are available at any site that
distributes the X11R5 source (too numerous to list here, but includes

QUESTION: Any tips on compiling X11R5?

- Dont do it.
- XFree86 will be distributed with a link kit so you can optionally
include what you like in the server.
- You will need lots of disk space (around 150Meg for the MIT core).
- Look at mit/server/ddx/x386/README and follow any instructions for
your particular platform.
- Contact the X11 channel at linux-activists

Approx: at least 4 megs of ram + swap ...slooooww. 10 Meg disk for X.
Another 6-10 meg of disk for GCC if you want to compile X11 programs.

QUESTION: What VGA boards are supported?

et3000, et4000, gvga, pvga1a, wd890c00, tvga8900, ati ver. 5 or 6,
8514/A, generic vga: 800x600 mono (Xmono), 640x480x16 (Xega).

Standard x11v1.1 or xfree86 server:
ET3000 (for ex. GENOA 5300/5400)
ET4000 (Tricom, STB PWR Graph, Sigma Legend, etc.)
GVGA (Genoa 6400)
PVGA1A (Paradise VGA Professional) ... see BUGS.
WD90C00 (Paradise VGA 1024)

supported by xfree86:
TVGA8900 TRIDENT 8900 support is in xfree86

cards (chip version 5 or 6).
Courtesy Rik Faith ([email protected])
ATI Notes: An example Xconfig file is available from
/pub/faith/linux/x386. Please note that:
1) clock.exe does *NOT* work with ATI cards.
2) The ATI Wonder driver in xFree86 is known only to work with
chip version 5 and 6 cards. This is most ATI VGA Wonder PLUS cards
and all ATI VGA Wonder XL cards (although sporadic problems have been
reported even with these very recent cards). The driver will tell
you which ATI chip version you have, as will the ati.test program,
which is part of the source code.
An old source distribution is available from

MONO Any vga card should be able to use 800x600 mono.
Use the Xmono server and the vga2 section of Xconfig.

Also available as ALPHA test versions (join the X11 channel):
(The standard x386/xfree86 server will not handle the following cards)

8514 ATI graphics ULTRA, ATI graphics Vantage
(should work with any VESA standard 8514/A register compatible card?)
tsx-11 pub/linux/packages/X11/X8514/ (Xlinux.8514.T.Z x.8514.src.T.Z)
courtesy Kevin Martin ([email protected]).

Xega Generic ega/vga compatible server.
This requires a microsoft mouse at /dev/mouse for now
and it does not use Xconfig so use environment variables
to define the font path etc.
A link kit is available at tsx-11 (you need gcc2.2.2).
in pub/linux/ALPHA/Xega/X386.ega.T.Z
courtesy Marc Hoffman ([email protected]).

The Xega and X8514 servers are compiled with the gcc-2.2.2 libs and will be
upgraded soon. They should however work with progrmas/fonts in new X11
releases as long as you ensure you have the shared images needed by
the server in /lib.

WARNING: Do not try to bring up an Xserver that does not support your
hardware. I dont know of cases where damage has resulted but you're taking
chances if you push your monitor beyond its specs.

QUESTION: What Mouses are supported?

ANSWER: Logitech, Microsoft, MouseSystems .... compatibles ...
Busmouses supported by linux: microsoft, Logitech.

Kernel patches for ATI XL with inport busmouse (may work with
other inport busmice) available from Bob Harris ([email protected]).


QUESTION: What is the current version?

ANSWER: The newest public Linux release is x11v1.1. It was compiled
with gcc-2.2.2 for linux and is available for example at
tsx-11 in pub/linux/packages/X11/x11v1.1/

xfree86-1.1 will be the next public linux release and should
become available by mid-October.

If you must have a beta X server today and cannot wait you
can join the X11 channel and get xfree86-1.0Ya

QUESTION: What Files do I need to download?

ANSWER: For Xega see the notes in the previous section.
For x11v1.1:
There are README files in the distribution directory.
The standard distribution has (version names and .Tar.Z omitted)
If you are on a slow modem connection your best bet is to wait
for the next public release for linux (by mid Oct).

xbase : enough to bring up X(****).
xextra : useful (necessary?) X utilities.
x75dpi : pretty fonts (some X apps complain if they are missing)
xprog : X include files and shared libraries that allow
you to compile X programs. To do this you need a
working gcc-2.2.2 (you can get by with a higher version
You'll need 2.2.2 libraries. Read the GCC FAQ).

**** You need The shared images libc.2.2.2 and libm.2.2.2 in /lib
x11v1.1 is compiled with gcc-2.2.2 so all the X11 shared libraries
and shared images depend on the gcc-2.2.2 libraries.
I will try to get them under the X hierarchy on tsx-11.

QUESTION: Where do the X11 files go? What are they?

ANSWER: x11v1.1 uses the directories /usr/bin/X11 for programs
and /usr/lib/X11 for support files.
The support files include default/example Xconfig, xinitrc, twmrc
which you should copy to your HOME directory (as Xconfig, .xinitrc
and .twmrc) and edit them to define your hardware and X11 setup.
There is a subdirectory etc/ in the support directory, and /doc that
should contain some documentation and termcap entries for xterm and
additions to ~/.profile to add X11 to your path.



ANSWER: Try man X386; man Xserver; man xterm; man twm; man xinit
on any unix machine. The man pages on xterm and twm will reflect
behaviour on Linux systems quite accurately. The others will give you
some bearing though not every option will work. These man pages are
part of xbase in the linux distribution.

QUESTION: What docs are available besides man pages?

ANSWER: The FAQ in is extensive and has a
bibliography. The FAQ in comp.unix.sysv386 has more X386 specific
info. There is also the Xt-FAQ. You should find these soon under
the X11 hierarchy on tsx-11 in the directory doc.


QUESTION: How do I start up X?

ANSWER: Type 'startx' at the shell prompt.
Before doing this you should :
1) copy the file Xconfig from the X11 support directory to your
HOME directory (/usr/root?).
2) Edit Xconfig and set the video data for you card and monitor.
Use the clocks appropriate for your card and the modes appropriate
for your monitor for those clock values. To determine what values are
appropriate read the Xconfig section.
3) Set the mouse device in Xconfig correctly.
4) Ensure that there is a termcap entry for xterm in /etc/termcap
(One is available in the subdir /usr/lib/X11/etc or /doc).
5) Ensure that the X11 binaries are in the path example:
add the line PATH=${PATH}:/usr/bin/X11 to ~/.profile or
look at in /doc.
Now type startx.

QUESTION: I cannot type in my xterm

ANSWER: /dev/console must have major=4, minor=0
rm -f /dev/console; ln /dev/console /dev/tty0

QUESTION: What are some of the common omissions and errors?

ANSWER: (Peter)
1) Add /usr/bin/X11 to your path.

2) Add the xterm termcap entry to /etc/termcap.

3) ln -s X386 X in /usr/bin/X11/ directory.
ln -s Xmono X (if you want to use the mono server).

4) Run X as root first. This avoids some trivial problems.

5) If you change the font path entry .... X386 is finicky about
the syntax.

6) Make sure your mouse entry in Xconfig points to a legitimate serial
device ... usually something like: microsoft "/dev/ttys1"
serial devices have major #4 minor 64,65 ...
ls -l in /dev will show you the major and minor entries.

7) Need read/write/exec access to /tmp directory

8) Use startx 2> x.err to log your error messages. If the server sticks
and you have to reboot you'll probably loose this stuff... see notes
on `hanging' below.

9) See Xconfig problems and the device list below.

10) Have you read the X386 man page?

QUESTION: Why does X not restore the text mode?

ANSWER: Restoration of text mode does not work on many ET3000's. If
X does not restore your display properly maybe you want to get
vgalib to do the restoration.

QUESTION: My server "hangs" Why?

ANSWER: (Peter) Quite often it isn't a hang. If the server grabs the
screen(and enters graphics mode) and then dies, it may return you to
bash *without* restoring the screen. In other words, just because you
see no output, don't assume it's running/hanging. The way to test
this is to see if you can use a bash command to spin your disk. eg.:
sync; ls -l /usr/bin/X11.

Also - I *suspect* that (at least for me), you can kill the
server if you include the servernum option in the Xconfig

You can kill the server when you want to by typing ctrl-alt-backspace.
Then a couple of ctrl-C 's in case your stuck in xinit.

The two line message
X386 version .....
(protocol Version ....
is returned from the X386 programme itself, so if you get
this (or if the screen blanks) X must be starting.

QUESTION: When I try to use the X11 v1.x I got "Cannot connect to
server" or "process does not exist", any clue ?

ANSWER: The cause might be wrong fontpath variable setup in your
Xconfig; uncomment and set the correct fontpath variable.

QUESTION: Why cant I run more than 4 xterms?
How can I have more than 4 pty's ?

ANSWER: set the number in the header include/linux/tty.h and
recompile the kernel. Also make nodes :
mknod /dev/ptypxx 4 minor (where minor = 128 + xx)
mknod /dev/ttypxx 4 minor (minor = 192 + xx)
This is for before linux-0.97pl6.... for later versions
you only need to make the nodes.

QUESTION: I have trouble with my logitech Pilot mouse and X under
Linux, any clue ?

ANSWER: (Thomas Roell?) There are TWO line of Logitech mice out there.
One is the programmable and uses MouseSystems protocol at startup.
X386 reprogramms them to use another protocol. If you specify
'Logitech' in the Xconfig, X386 assumes a mouse like C7 or S9 (notC7-M).
The second line is the MicroSoft compatible. Currently all newer
Logitech mice follows this practice, like the MouseMan. In that case
you have to say 'MicroSoft' or 'MouseMan'.

QUESTION: How does X11 start up?

ANSWER: The startup involves the server (/usr/bin/X11/X), and some
programs like startx and xinit.

Typing startx runs the script /usr/bin/X11/startx. Look through
startx. For explanation of the server arguments try man Xserver.
startx does little other than gather arguments and then call xinit.

xinit **calls** X (X is linked to X386). xinit therefore continues to
run, and quite often you will receive error messages from xinit rather
than X itself. If you get the message "giving up", it means X has died
(quite probably it died immediately) and xinit has been unable to start
x applications. xinit processes the startup script xinitrc.

QUESTION: How can I see what startx passes to xinit, and xinit to X?

ANSWER: Add the line: set -x near the top of startx.

To see what xinit passes to X, try: (Peter)

rm /usr/bin/X11/X
- yes, if you have set it up correctly, X should only be a link
so it's safe to remove it.

then create a shell script called /usr/bin/X11/X containing:
echo $*
and run startx. You should see something like:
X :0
which is all xinit passes to X. If you don't see the :0, you may not
have your DISPLAY=":0" set correctly. THEN RESTORE X!! :
rm /usr/bin/X11/X
ln -s /usr/bin/X11/X386 /usr/bin/X11/X

QUESTION: What devices does X depend on:

ANSWER: check your device numbers with ls -l /dev. You should have:

5 0 tty
4 0 tty0
4 0 console
4 1 tty1 (etc)
1 1 mem

4 128 ptyp0 pseudo ttys used by xterm/emacs etc
4 129 ptyp1 (etc) to talk to unix programs.
4 192 ttyp0
4 193 ttyp1 (etc)

4 64 ttys1 one of these is the mouse
4 65 ttys2 or you have a busmouse.
10 x mouse busmouse x = 0 => logitech 1 => ps/2 2 => microsoft.
/tmp/.X11-unix/X0 socket used by X apps to talk to the server.
this is created by X386.

XI.F. Xconfig: Xconfig and Video mode settings.
QUESTION: What do the mode names mean?

ANSWER: The mode names like "640x480" are used to match entries in
the modes line with the modeDB entry which actually defines the mode.
You can toggle between modes in the modes line with ctrl-alt-numericplus.
If you're experimenting with 640x480 you can define
modes "640x480a" "641x480b" "642x480c"
with corresponding entries under ModeDB so you can toggle between
these three modes. Try man X386.

QUESTION: How do I compute the numbers for the video modes?

ANSWER: See if there is an entry that matches your chip/monitor in
vga.dbase (aka X386modeDB). Use the clock entries for your chip
and the mode entry for that clock appropriate for your monitor.
If you cant find a mode entry for a particular clock 'needed_clock'
but can find a mode entry (for your monitor) for a nearby clock value
'found_clock', scale all numbers in the modeDB entry by
(needed_clock/found_clock). man X386 and Read video.tutorial for
more info. These files are in the linux X distribution.

QUESTION: How can I determine the clocks on the video chip?
Where can I find clock.exe or clock.pas ?

ANSWER: You can get X to tell you what it finds by commenting the
clocks entry in the vga section. Use 'startx 2> x.err' to log the output.
If X starts up this file gets the clocks only after you exit.

The clocks entry in Xconfig serves as an index. example:
clocks 1 2
1 640x480 .....
2 800x600 .....
means the first clock on the chip will be used for the 640x480 mode
and so on. Usually on uses the MHz value for the clock for convenience
instead of 1 2 you probably have 25 28 ... etc.

clock.exe is a dos program that reports the clocks on ET3000/ET4000
boards It was included in digest#150 Vol2, clock.pas was in digest#156
Vol2. (also tsx-11 pub/linux/INSTALL/dos_util).
usage is ( C> is the dos prompt ) :
'C>clock ET3000' or 'C>clock ET4000' depending on the chip you have.
Note 'clock et3000' will not work .... it is case sensitive.

QUESTION: What are common problems with Xconfig?

ANSWER:If X isn't firing at all, or even if it clears the screen and
crashes (see below) you almost certainly have a fault in Xconfig.

1. Note that the server X interprets Xconfig. (not xinit)

2. If you have a fault in Xconfig it is possible to crash or hang the
server without getting an error message.

3. leave the two paths at the top of Xconfig commented out when testing.

4. test with only one graphics mode included - one you are most sure of.

5. If you make a mistake in the mouse section, you will (I understand)
get an error message, so if you don't get some mouse error, try
elsewhere first. (eg "No such file or directory" indicates you have a
fault in the "/dev/ttyxx" line, or /dev/ttyxx doesn't exist.

6. *NB* X looks in your home directory first to find an Xconfig. make
certain it's using the one you've been working on!

7. you need double quotes (") around your chipset and modes: eg
chipset "et4000"
Modes "640x480" "640x481" "800x600"
and around the /dev/ttyxx eg.:
microsoft "/dev/ttys1"

8. Check your VGA section and modeDB first.

9. ensure ModeDB clock speeds match the VGA section. Comment out any
unused lines in MODEDB.

eg clocks 25 36 00 00 00 00 00 00

then you *must* have (and only have) lines under modeDB corresponding
to speeds 25 and 36. If you have one with (say) 62 uncommented out in
the modeDB section in place of the 36 line, you will cause the server to
die immediately with no error message.

10. a syntax error (such as an unrecognised word) in Xconfig will cause
a death with no warning.

11. videoram must equal the amount of display ram on your chip.

QUESTION: What do I use in my Xconfig file to use the bus mouse?
Logitech doesn't work.

ANSWER: (Nathan I. Laredo)
Here are the mouse lines from my Xconfig:

BusMouse "/dev/mouse"

You may add a sample rate if you want, but chances are, unless the model
number on your mouse matches mine: PC-93-9MD it probably will cause your
machine to lock up, as I've gotten several reports saying that.

According to the X386 documentation, non-logitech mice do not support
a sample rate.

XI.G X-APPLICATIONS: Compiling X Programs.

QUESTION: Does anyone know where I can find the libobz.a library ?

ANSWER: This library contained the socket stuff, when X386 V0.1 was
released. Meanwhile it has found it's way into the kernel, so
remove -lobz from the link step in the Makefile.

QUESTION: I get _setjmp undefined when linking xv.

ANSWER: You are trying to link a program compiled with gcc-2.2.2
and setjmp has changed sice then. Recompile xv from the source
using gcc2.2.2d7.

QUESTION: How do I compile an X application that has an Imakefile?

Type xmkmf to generate the Makefile.
Type make.

QUESTION: gcc complains the X libraries are not found or links static.

ANSWER: Check out the -nojump -static options of GCC ... read the GCC FAQ.
You can tell gcc what directories to search with -L.

Cant compile Xaw programs without -static in versions x11v1.1 or older.
There is a glitch with the Xaw shared libs ... I haven't seen
this in a while anyway its fixed in newer releases.

Color problems with Xega .... fixed in latest version on tsx-11.

from [email protected] (Chuck Sites)
It is possible to run X386 on a Paradise VGA Plus. The X386.0 doc file
has a small misprint. The Chipset is not pvga. It's pvga1. Anyway,
under the line in /usr/X386/lib/X11/Xconfig VGA256, add, `chipset "pvga1"`.
You will need a 512k board. There seems to be a problem with 800x600 mode
that causes pixels to be misplaced in the center 1/3 of the screen. 640x480
works fine. Anybody out there might have a fix for that?

Sources for X11_FAQ:
Steve Kotsopoulos, Peter Hawkins, John Morris, M. Corsini, K. Balasubramanian.
Direct comments, questions, complaints to krishna at:
[email protected]


  3 Responses to “Category : Linux Files
Archive   : FAQ1092.ZIP
Filename : FAQ

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! ๐Ÿ˜€ I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: