Jan 012018
Frequently Asked Questions about Linux, the freeware user supported Unix for 386 and better PCs. This new faq is greatly expanded, and sure to please even the most discriminating faq reader. Start your Linux Quest here. Fr
File LNXFAQ07.ZIP from The Programmer’s Corner in
Category Linux Files
Frequently Asked Questions about Linux, the freeware user supported Unix for 386 and better PCs. This new faq is greatly expanded, and sure to please even the most discriminating faq reader. Start your Linux Quest here. Fr
File Name File Size Zip Size Zip Type
FAQ07-11.TXT 109776 41501 deflated

Download File LNXFAQ07.ZIP Here

Contents of the FAQ07-11.TXT file

$Log: faq.p1,v $
# Revision 1.9 1992/07/10 14:23:11 linux
# This my last update before my summer rest
# The linux is 096c, and next time FAQ will probably be
# in texinfo format
Path: labri.greco-prog.fr!corsini
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 July 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/06/11 15:35:30
Version: 1.8

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

Many of the questions could be avoided, if people had read the FAQ of
the following newsgroups:
news.announce.newusers, comp.lang.c, gnu.emacs.help,

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

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 pit-manager.mit.edu.

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.
- a shorter summarizing FAQ, which will be posted every
fortnight in c.o.l [kind of info-sheet].

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

In what follows I consider Linux v0.96b as the current version. Linus
Torvalds wrote the following about the 0.96 release:

0.96 has a lot of changes; it contains a lot of new files, as well as
some reorganizations in the old ones.

The main new things are:
- The SCSI distribution is now in the standard package.
- X11r5 as ported by Orest Zborowski is supported. It's still in
beta-testing (join the X11 channel see the USEFUL ADDRESS section)
- Hopefully better interrupt latency
- Reorganization of the vfs routines and minix filesystem driver
- ps/uptime patches + added readahead, so having computationnaly
intensive background processes is not as noticeable anymore while
doing IO.

The 96b contains also the following features:
- full core/dumping, attach/detach etc debugging features
- 16550A support
- less low 1MB memory used for kernel structures

The 96c contains:
- fifo's
- alpha extended filesystem (Remi Card)
- st_blocks implemented (du will give much more better information)

Due to my hardware limitation (386SX, IDE drives, 8MB RAM, 2MB swap
file and VGA card); some information provided in this FAQ about X11,
and SCSI drivers are not my own. I just grab them from the various
mailing lists and comp.os.linux. In fact the Linux X11 section is from
Peter Hawkins, the rest is extracted from the X386 faq, the SCSI
section is from Drew, the Serial subsection was enhanced by Jim
Gifford and last not least, most of the things involving gcc2.xx were
written by H.Lu


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.96c, date: 05 July 1992. The previous version v0.96b
June 21st has been enhanced a bit (see 0. section).

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, and the INFO-SHEET monthly post, 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-image096c and root-image096c
(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
NOTICE also that on 0.95a tar and compress are broken, don't use them.

After playing a while, you should want to install linux on HD (there
were scripts on the v0.95c+ images for that purpose, I guess they are
in 0.96 too), 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

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 ; on 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: How big is the 'complete' Linux package?

ANSWER: Well, the boot and root image diskettes are about 750Ko
compressed. The kernel sources are about 200Ko compressed, and the
libc sources are another 170Ko compressed. The GNU C (1.40) compiler
is 670Ko, the GNU C (2.01) package which enclose C and C++ compiler is
about 3Mo; and the other miscellaneous unix utilities are probably a
bit over a megabyte.

Now add sources to whatever you want to port and compile yourself.
The sources to GNU emacs are about 3 megabytes, compressed. Groff (a
troff replacement) is just over 1 megabyte.

If you think this is big, remember that the OS/2 2.0 Limited
Availability release is 20 1.44 megabyte diskettes.

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.95c+ is available since April 9th. 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 nic.funet.fi 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: 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: 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. As I said in the 0. section, there is some
support in the Linux 0.96 (and after) release.


QUESTION: Where can I get linux?

ANSWER: Linux can be gotten by anonymous ftp from
1) Major Sites
nic.funet.fi (
directory /pub/OS/Linux
ftp.dfv.rwth-aachen.de (
directory /pub/linux
tsx-11.mit.edu (
directory /pub/linux

2) Mirroring sites (some of them)
kirk.bu.oz.au (
directory /pub/OS/Linux
src.doc.ic.ac.uk (
directory /pub/os/Linux
ftp.mcc.ac.uk (
directory pub/linux
ftp.informatik.tu-muenchen.de (
directory pub/Linux
ftp.eecs.umich.edu (
directory linux
banjo.concert.net (
directory pub/Linux/mirrors
utsun.s.u-tokyo.ac.jp (
directory misc/linux

You might want to check out which of these is the most up-to-date.
Moreover banjo.concert.net is mirroring hpb, nic and tsx.

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: 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
connect tsx-11.mit.edu
chdir /pub/linux
dir -R

In Europe ftp.informatik.tu-muenchen.de 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, and alt.os.linux is dying little by
little, 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
appropriate. Moreover there is a BUGLIST file available in the
different main site (at least you can find it at tsx-11, in

People are working on the organization of Linux, this is done on
a separate mailing-list.

linux-standards: Discussion of distribution and directory standards
for the Linux operating system, including directory structure, file
location, and release disk format.

Requests to be added to this list must be sent to:
[email protected]

Others 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 ...
- 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 beryl.daimi.aau.dk
( The archives go back to Nov. 18. 91
Also recently a WAIS server for the linux mail archive has been setup
at fgb1.fgb.mw.tu-muenchen.de contact tw at that address.


QUESTION: Does there exist *any* reliable information that can help me
to install Linux, 'cause I know very few things about Dos and/or Unix?

ANSWER: Yes, there is a lot of effort which has been done recently.
You should read the following files:
Beginner's Guide: Installation by I. Reid
(Dos) Beginner's guidebyC. Boyer
Info-sheetbyR. Blum
Install-0.xxbyL. Torvalds (?)
Relnotes-0.xxbyL. Torvalds (?)

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

ANSWER: You can grab an 'interim' version of Linux at ftp.mcc.ac.uk in
/pub/linux/mcc-interim/0.96c/images (thanks to A. V. Le Blanc). The
README files are in /pub/linux/mcc-interim/0.96c/images. You can also
find them on tsx-11 in mirrors/mcc-interim/0.96c/images.
You can also 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 ftp.dfv.rwth-aachen.de in pub/linux/mj-bin

QUESTION: What does the mcc-interim means ?

ANSWER: mcc-interim stands for Manchester Computing Center interim
distribution of Linux

QUESTION: What are the files provided in the interim distrib?

ANSWER: (July 92) The kernel supplied is the 0.96c one, there are
also 5 binaries floppy including C and C++ compilers and groff.
boot-UK.Z.1 (or boot-US.Z.1) this is the boot/root image disk
util-UK.Z.1 (or util-US.Z.1)this disk is mounted on /mnt
comp1.1The Gnu 2.2.2 compiler
comp2.1The corresponding libraries +shoelace
+kermit and part of groff
comp3.1the rest of groff and G++

QUESTION: What are the files /bin/sh and /bin/tar provided in the

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 -

QUESTION: Ok, I've got the interim distribution, what should I do now?

ANSWER: You should read the README files provided, and follow the
instructions. Roughtly, you have to uncompress boot-?? and util-??
then rawrite them on HD floppies. After that boot on the boot-?? disk
and follow the instructions (some are also on-line provided); remove
the floppy and put the util one.

QUESTION: I have copyed all the rootimage stuff on my HD, how can I
use the hard-disk as root?

ANSWER: There are three ways to answer this:
a) You have downloaded the linux sources and a compiler, in that case
recompile the kernel to make a new boot-floppy according to your
environment. If you have dowloaded the sources of linux-095c+ (or
later), you just have a look in the main Makefile to set your national
keyboard, your root drive and the flags for the compiler version you
use; if you have grabed linux-095a then you have to set your keyboard
in kernel/chr_drv/keyboard.S (.S not .s). "make disk " will compile
the kernel and create a new boot floppy, or else "make" and then "cp
Image /dev/PS0".
b) You have nothing except the images and DOS, in that case you should
have read the INSTALLATION notices provided at your ftp site, but
well: you have to change the boot image at offset 508. The word (in
386-order, i.e low-byte first) tells the system which device to use as
root: initially it's 0 which means that we want to use a floppy of the
same type as the boot-disk (this is the reason why HIGH density floppy
is required for the boot-image). In order to use the HD as root, this
value has to be changed to point to the correct device. For that
purpose you can download the program enclosed in INSTALL-0.10
(provided some slight modification according to the new minor/major
numbers) use the program written by Henning Spruth wich can be found
in digest#149 vol1 (there are both the C code and the uuencoded DOS
executable) or else any sector editor.
c)If you have Linux running, the command rdev will change the boot device
of a floppy or of a Linux image file. In the 'interim' release,
because the boot disk is in memory, there are instructions for unmounting
the utilities disk and making a floppy which will boot with the newly
installed file system as root.

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

ANSWER: It's quite simple. Down-load the new Linux kernel (the current
one is v0.96b). Unpack it in /usr/src/linux. Have a look in the main
Makefile to setup your environment.
a) If you use shoelace, then perform 'make'. Then 'mv /etc/Image
/etc/Image.old' and finally 'cp /usr/src/linux/Image /etc/Image'
reboot, that's it.
b) You do not use shoelace, then it's even simpler just put a
formatted floppy in the driver and perform: 'make disk'

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 BLOCKS, ie 1024 bytes, not
sectors. The mkfs doesn't work for very big partition (over than 64
Megs). Also, make doubly certain that you have the correct partition.

There are a few rules about this: /dev/hda (linux0.95a and latter)
corresponds to /dev/hd0 (under minix) and /dev/hdb (linux0.95a ..)
to /dev/hd5 (minix). DO NOT USE THEM, they are the whole raw
disk, not partitions. Also if a partition is on drive 1 under minix
(ie /dev/hd1-4), it is drive 1 under linux as well. Moreover, there
is no real consensus on whether partition #1 is the first partition on
the disk, or is the first entry in the partition table. Some parition
programs sort this information on the screen only, some will write the
sorted information back to the hard disk. Linux assumes that the
first entry is hda1, and so if some utility starts sorting/reordering
the table these things can change.

REMARK Minix does some reordering.

A useful hack is to make each of your partitions a different size.
Then after any editting or possible change to the partition table you
can boot a floppy system and run fdisk (linux's, not DOS) to see if
the assignments still hold.

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: I mounted the linux filesystem, and copied the files from
the root-disk to the harddisk. Now I cannot find them any more, and
somethimes linux dies with a "panic: trying to free unused inode".

ANSWER: You have probably forgot to sync before rebooting. Linux, like
all unices, use a "buffer cache" to speed up reads and writes to disk.
On a machine that has enough memory, this buffer-cache is 1.5MB, and
if you forget to sync before exiting, it may not be fully written out
to disk. Re-mkfs and re-install (or try to use the preliminary fsck,
but remember that although fsck tries to correct the faults it finds,
it may fail.)


QUESTION: Is it possible to access to DOS world from Linux

ANSWER: Yes, there is the mtools package (with patches for devices.c)
The original sources of mtools can be found at any places not only at
nic, tupac and tsx-11, and the patches for Linux (with fix for big DOS
partitions are in the directory patches or ports). Moreover you should
download the file patch.Z to apply patches ๐Ÿ™‚
It is possible to find the compiled mtools stuff at mcc (see above for
the address)
BTW An improved version of mtools is on nic.funet.fi in
/pub/OS/Linux/tools/mtools.n.tar.Z, where all tools are in a single
executable; the device configuration are set in /etc/mtools one per
line. In the package, you will find a readme file, the compiled
program, an example of /etc/mtools and diffs to mtools-2.0.5.tar.Z.
It's also provided in the 'interim' release (in the util-?? disk).

QUESTION: the mtools package won't work. I get an ENOENT error message
for all devices.

ANSWER: mtools needs to be told which device to look for. If you have
the mtools.n.tar.Z package set correctly your /etc/mtools file; if you
use the older mtools stuff (see Q/A above) use 'ln' or 'mknod' to
create a special file called "/dev/dos?", where ? is A, B, C, X or Y.
A and B are for floppies (12 bits), C is for hard disk and X, Y for
any. This file should point to the device you want to read. About the
minor/major pair have a look in section INSTALLATION HINTS.

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

QUESTION: I've got the mtools.n.tar.Z package, but I can't read
anything even with the etc/mtools file properly set. Any clue ?

ANSWER: To use the binary you have to link (or simlink) the mtools
binary with mattrib, mcd, mcopy, mdel, mdir, mformat, mkmanifest,
mlabel, mmd, mrd, mread, mren, mtype and mwrite. This can be achieved
with the Unix command ln (or ln -s for symbolic links). In fact all is
explained in the README provided with the mtools package.
Then You just need to use the proper mstuff with the apropriate

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.

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/PS0
tar zxvp < /dev/PS0

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-0.92, 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
new tar and compress binaries (at tsx /pub/linux/binaries/usr.bin).

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

ANSWER: The tar provided on .95a disk is broken. Use the one available
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: When I use make as non root, it doesn't work, why?

ANSWER: ?????, the message is either (null) setuid ..., or (null)
setgid... This was a known bug in the first port of Gnu-make to Linux.
May be this is fixed in the gmake-3.62 version enclosed in
gmake-3.62.tar.Z (at tsx in pub/linux/binaries).In fact the one
provided in mcc-interim is correct.

BTW This problem does not exist with the pmake (make for BSD 4.3 Reno
and BSD 4.4) package.

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

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.96 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 {} \;

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 Misc/Device Major-Minor/Serial Information.

VI.A. Misc information
QUESTION: I've got all the things on site ??? but I don't know what
goes where.

ANSWER: Read this carefully, it's a mess right know and I hope this
problem will be fixed when the ABC-release will be out. It heavily
rely on the compiler you use:
A) The following information are for those using gcc-1.40 or previous
release (1.37): include.tar.Z goes to /usr/include; system.tar.Z
contains the latest sources of the system files (mkswap, mkfs, fsck
and fdisk). In version 0.12 utilbin.tar.Z has been replaced by
fileutil.tar.Z and utils.tar.Z which contains a new tar to handle the
symbolic links, make, uemacs kermit and minor programs (sed,...).
Other utilities have been ported separately.
B) For those who use gcc-2.1 there are nearly everything in the
package that you can find at banjo in pub/Linux/GCC in the
2.1shared.tar.Z file. You could find more sources in system095a.tar.Z
file (at tsx in sources/system/system0.95a)
C) The 'mcc-interim' release comes with gcc 2.1, which it installs in the
correct place. If you have tar and compress (remember use the good
one ..), you can install gcc from the 'interim' comp.image and g++
from the comp2.image even if you don't have the rest of the 'interim'

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

ANSWER: Possible, but check first if the size of your file corresponds
to the one on the ftp sites, if it is then check the BUGLIST available
on the main linux sites. If the bug is not reported, do a complete
report of the error, try to correct it and send your result to
[email protected].

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 banjo.concert.net 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?

Memory devices: Major = 1 (characted devices) minor
4/dev/port (implemented, but untested - don't play with it)

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

type1: 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)

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 VERY
carefully, they should work, but backup everything before.

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

lp: Major=6 (character devices) minor since 095c+

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

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

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

ANSWER: (Jim Gifford -- [email protected])
There is a new 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?

How do I set parameters like parity for serial login?

ANSWER: Use stty and redirect output to serial line.
ex: stty parodd > /dev/ttys2 which gives ttys2 odd parity.
type stty by itself to get an idea of possible parameters.
Or 'man stty' as well ๐Ÿ™‚

$Log: faq.p2,v $
# 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
Path: labri.greco-prog.fr!corsini
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 July 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/06/11 15:35:30
Version: 1.8

* 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 MINIMUM and MORE(part2)



This part is recent and 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.96, 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 tcshit'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].
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've seen the login but I missed the passwd binaries, 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 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:

(global-unset-key "\e[")
(setq esc-c-map(make-keymap))
(fset 'esc-c-prefix esc-c-map)
(define-key global-map "\e[" 'esc-c-prefix)
(define-key global-map "\e[B" 'next-line)
(define-key global-map "\e[A" 'previous-line)
(define-key global-map "\e[C" 'forward-char)
(define-key global-map "\e[D" 'backward-char)

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

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

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
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 'psuedo' 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: 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 0.95a 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: Until v0.95 it's the Bourne Again Shell, bash-1.11 and
compilation was straightforward (Linus dixit), just "make"
that's all or nearly. But as the shell comes bigger and bigger the
v0.95a /bin/sh is ash the BSD 4.3 sh.
BTW I think that next time, it will be rc which is much more better
than ash and tiny wrt bash. If you want to test it, it's (at least) at
nic in /pub/unix/shells and the file is rc-1.2.tar.Z . The compilation
is straightforward (just a few things to modify in Makefile and
Also a port of tcsh6.1 has been done recently (beginning of April)

QUESTION: I've been able to install Linux on my box, but Ctrl-Z nor
switching jobs from background to foreground seem to work, why?

ANSWER: These feature are not provided with the bin/sh (ash) of the
Images, you should download bash to get jobs possibilities.

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, elvis-1.4 (1.5). The port of emacs
18.57 has been done by John T Kohl, files can be found at the
different sites:
at nic it's in the directory xtra
at tsx-11it's in the directory ports/emacs-18.57.
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 athos.rutgers.edu (
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: The lp patches which implement a parallel printer interface
and feature a greatly improved driver design, have been applied in
linux0.95c+. The original patches can be found in lp095.tar.Z
Once you have successfully recompiled the kernel v0.96, 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 scroll-lock key; ctrl-shift-scrollock gives a kind of memory
status. There is also a much more complete ps/memory package it's

QUESTION: It's nice to have the df utility, but it would be nicer if
it would give statistics of the root file system. Would it be
difficult to do?

ANSWER: surely not, in your file /etc/rc, instead of the line
> etc/mtab
put the following
echo "/dev/hdX (root)" > /etc/mtab
where the X is the hard drive you use as root partition.

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
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: 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: 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: Is there only the %$#@ keyboard ?

ANSWER: There are Dannish, Finnish, French, German, Uk and US
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: They seem to work. The kernel features are in Linux 0.12
already. They work for gcc-2.1. and later

QUESTION: Does Linux work for SCSI drives?

ANSWER: Yes since v0.96. At headrest.colorado.edu in /pub/scsi, you
will find the last SCSI alpha/beta version and also a special SCSI
FAQ, read it, it contains much more 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: 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: 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 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)

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: (General Information grabbed from various sources)
There is a X11 channel available , contact the request adress with
help in the body: [email protected]
To use this BETA X11 you need the v0.96 release of Linux; you also
need to download stuff at banjo.concert.net in

QUESTION: What is the hardware requirement for X11 so far?

ANSWER: (Linus 05.05.92) X won't work with CGA card - it won't even
work with normal VGA cards: you need SVGA (and even not any will do).
The supported one are et[3|4]000 and some other (pvga? and tvga?).
Resolution range from 640x480 to 1192x900 (close to that), all at 256
colours, depending on what kind of card/monitor you have.

As to memory: I'm using 8MB ram, and no swapping with a couple of
xterms, xclock (nothing major). If I want to compile the kernel in an
xterm I need to start up swapping.

Speed depends heavily on the SVGA card, Harddisk space is totally up
to you but 10MB is a minimum.


I think this section is needed, 'cause a) gcc is the compiler under
Linux, and b) the gcc-2.x is in test, and many information change
constantly. In what follows information about gcc-1.37 and gcc-1.40
are stable, and was spread along previous releases of this FAQ.
To conclude this short introduction (in fact the conclusion will be
longer than the introduction :), the most recent release of gcc-2.2.2
can be found at the banjo.net.concert in /pub/Linux/GCC, and also at
fgb1.fgb.mw.tu-muenchen.de 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 gcc-2.2.2 /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: It depends on the release of gcc you are using. Right now
there are at least 3 packages : the original one gccbin.tar.Z contains all
the gcc-1.37 binaries distrib; the gcc-1.40 has been ported in dec. 91,
it's in newgcc.tar.Z and the VARIOUS version of gcc-2.xx. Choose yours
(I hope that the following will help you); for my own I use gcc-2.2.2
available since end of June, which is not that bad, anyway it's better
than the previous 2.xx.

A) gccbin.tar.Z goes in /usr/local/lib except gcc which goes in
/usr/local/bin. Moreover each gcc-xxx of /usr/local/lib should be
linked with gxxx and xxx in /usr/local/bin.

B) newgcc.tar.Z goes in /usr, then uncompress and untar it. Files are
directed to /usr/lib, /usr/include and /usr/bin. You should link ar,
as, ld with gar, gas and gld, this will prevent some error while using
make (especially whilst re-compiling Linux kernel). Moreover, the
include files are not complete, you need first to install
include-0.12.tar.Z (at tsx, /pub/linux/sources/system). Finally cpp
and cc1 are in /usr/lib, and they should be in /usr/bin, a solution is
to link them at the right place.
BTW include-0.12.tar.Z contains include/linux/*.h which are not
uptodate, you should link the one provided in linux-0.95a sources by
the following:
cd /usr/include
mv linux linux_orig
ln -s /usr/src/linux/include/linux linux

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

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.

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: I'm using a program that uses signal handlers which are
installed using sigaction() with the SA_NOMASK, and they get a general
protection error right after the signal handler tries to return.
What's going wrong?

ANSWER: You are using a libc.a that has an out-of-date signal.o and
sig_restore.o file, and they don't know how to deal with SA_NOMASK.
(The one in gccbin.tar.Z is out-of-date). Get the new libc.a and put
it in /usr/lib or /usr/local/lib. Again check your compiler version

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: While compiling some GNU packages gcc(1.37 and 1.40) chokes
on regex.c with an insn code, what can I do?

ANSWER: There is a little bug in the port of gcc-1.37, which should be
corrected on the port of v2.x (with g++). Right now throw away the -O
flag (to compile regex) and every thing will be alright.

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 (and half) 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) or download the new gcc release
(1.4) which has been made available at tsx-11 (newgcc.tar.Z and the
ad-hoc libraries newlibc.tar.Z).

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 are the enhancement of the newgcc.tar.Z ?

ANSWER: There were some bugs in the old port that have been corrected,
moreover this package contains 387 support
there is libm.a (for those with 387)
libsoft.a (for those without, I for example)
libtermcap.a (from tput 1.10)

The -mstring-insns option is no longer needed nor supported ๐Ÿ™ [As
an example to recompile (successfully) linux0.12 you have to throw away
this flag in all the Makefile]; conversly in linuxv0.95a, you have to
make the flags available if you compile with gcc-140

gcc-1.40 has some registers problem, you should had -fcombine-regs
flag while compiling (the linux kernel for example)

BTW Notice also that include files have changed (stdio.h which is no
more ansi compliant).
For my personal use, gcc-1.40 works just fine.

QUESTION What's about gcc2.x ?

ANSWER: It has been ported to linux, it is (pretty) stable and works.
The files are 2.1xlib.tar.Z and 2.1xmisc.tar.Z Uncompress and untar
2.1xmisc, 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 banjo.net.concert in pub/Linux/GCC.
Also provided 2.1shared.tar.Z file which contains most of the
utilities in .a form (to transform them as binaries just "gcc -s
-ladhoc_library binfile.a -o binfile" where -ladhoc_library is either
-lm or -ltermcap
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: Either in the 2.1linux-distrib, it's in the file 2.1shared.tar.Z
(banjo pub/Linux/GCC); either in the shellutils-1.6.tar.Z (or whatever
is the last release) on prep.ai.mit.edu

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.


This section was written by Drew Eckhardt, the last update of the
information enclosed was 7 July 92 03:58:02 GMT

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 in the scsi distribution.

The "stock" Linux distribution has some older versions of the Adaptec,
Seagate, and Ultrastor driver - these are slow, and kill interactive
performance because they don't use interrupts, and no processes are
scheduled while they are in the strategy routine.

Linux is scheduled to get the latest SCSI drivers in version .97.

If you have a SCSI board, *GET* the SCSI distribution.

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.

CDROM should also work, but we don't support the High Sierra filesystem.

Large disks work OK, however, the current Linux filesystem (Minix fs +
symbolic links) does not support partitions > 64M, and I haven't had
time to fix extended partitions - which means you can only get 64 * 4M
to work with Linux.

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.

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: Why does the system "hang" when SCSI disk access occurs.

ANSWER: The "stock" Linux distribution still uses an earlier version
of the SCSI drivers, where the drivers are not interrupt driven
(easier debugging, or so we thought). Since the drivers do not return
from the device driver strategy routine, until the SCSI command
completes, no other tasks are scheduled, and ineteractive performance
is abysmall.

The SCSI distribution, from headrest.woz.colorado.edu does not suffer
from these problems - if you use SCSI, GET IT.

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?

ANSWER: headrest.woz.colorado.edu:/pub/linux

Since SCSI made it into .96, this is mostly alpha/beta test for new
things. Right now, interrupt driven Seagate / Adaptec / Ultrastor /
Future Domain 16 bit / WD7000 support is there.

Join the list before you grab anything.

QUESTION: what about extended partitions?

ANSWER: not yet. Let's just say that I almost have a very large drive
up on a SCSI->SMD bridge, and that it's a priority.

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: 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, and extended partitions are not
yet implemented.

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

Chances are I will provide you with a debugging version of the kernel,
which will dump out important SCSI information and let me see what
exactly is going on.

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: 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: 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: Why does Linux "hang" when the disk is accessed?

ANSWER: There are two possible interfaces between mid and lowlevel
SCSI routines.
These are the queue_command() and command() interfaces.

The difference between the two is that queue_command() provides a way
to do generic, interrupt driven SCSI, whereas command() is not
interrupt driven.

The latest Seagate driver (in testing), WD7000 and Future Domain 16
bit use the queue_command() interface, Adaptec has it disabled,
someone should recompile it with it enabled, and I don't know about
Dave's latest Ultrastore driver.

QUESTION: I get SCSI timeouts.

ANSWER: Make sure your board has interrupts enabled correctly.

QUESTION: What future developments are planned?

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

- The new interface, providing for scatter / gather, one outstanding
command per LUN, low-level driver specific IOCTL calls,
such as DISK GEOMETRY, data transfer to/from
user space at anylevel in the protocol stack, etc,
will be added.

- Support for extended partitions will be added

- 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. Now, if someone else wants to debug the
hp9000/300 BSD X11R5 server I have to install, measure our network
performance, and....

This section is divided in 2 parts, one is of general information in
fact it's extracted from the FAQ X386 posted to comp.unix.sysv386 by
Steve Kotsopoulos and forwarded to comp.os.linux by Hongjiu Lu (last
updated 3 April 1992). The other part, written by P. Hawkins, is
rather devoted to installation.


QUESTION: What is the X11 release supported by Linux?

ANSWER: It's the X11R5 (X386 1.2)

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.

There are 2 major versions: X386 1.1 is based on X11R4,
X386 1.2 is included in MIT's X11R5 distribution (ie. you
don't need to patch it into the MIT source anymore).

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

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: What VGA boards are supported?

ANSWER: ET3000 (for ex. GENOA 5300/5400)
ET4000 (Tricom, STB PWR Graph, Sigma Legend, etc.)
GVGA (Genoa 6400)
PVGA1A (Paradise VGA Professional)
WD90C00 (Paradise VGA 1024)

QUESTION: Any tips on compiling X11R5?

- 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

XI.B. X11 and LINUX
(Peter Hawkins speaking):
Recently I posted two requests for help on getting me X server
running. With much help from John Morris and from several posters
(especially Krishna who gave lots of advice) I got it running.

As I have had several requests for help, I thought I'd post what I've
found out here. PLEASE note, I am no guru with X11 or linux - I'm a
green nubie, so if your info is not contained here, I'm not likely to be
able to help you - try posting instead (and of course, please post any
resulting findings).

QUESTION: How does X11 start up?

ANSWER: the command startx runs the startx script in /usr/bin/X11.
This script in turn calls xinit. In my startx, I have set several
arguments on the serverargs = "" line;

I have: serverargs="-a 4 -t 4 -s 3 -f 10"

however X11 loads up successfully even with serverargs=""

startx does little other than gather arguments and then call xinit (also
in /usr/bin) which is an executable.

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.

The two line message

X386 version .....
(protocol Version ....

is returned (i believe) from the X386 programme itself, so if you get
this (or if the screen blanks) X must be starting.

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

ANSWER: A simple (& useful) useful test. Edit startx and modify the
last line:

insert "echo" ;

echo xinit $clientargs -- $serverargs

If you leave serverargs="" (see above), you will see:

xinit /.xinitrc
when you run startx. The path will reflect the location of your default
.xinitrc file - startx looks first in your home directory, and then
in /usr/lib/X11/xinit (the latter contains xinitrc, NOT .xinitrc).

To see what xinit passes to X, try:

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.


create a shell script called /usr/bin/X11/X containing:

echo ${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8}

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
your DISPLAY=":0" set correctly (see man file).


rm /usr/bin/X11/X
ln -s /usr/bin/X11/X386 /usr/bin/X11/X

QUESTION: What else do I need?

set DISPLAY=":0" and /usr/bin/X11 should be in your path.

If X is not firing up at all, there are only a few files which are
likely to be the source of your problems. Make sure you have the
following in /usr/bin/X11:

X (link to /usr/bin/X11/X)
X386 (correct size=674730).

you *must* have /lib/lib92.04.12

a /tmp directory (with the correct access)

/dev/ttys1 (for a mouse in serial port 1, or /dev/ttys2 in port 2) -
these could just be links to /dev/tty8 or one of the other unused character
devices. but it's best to use the mouse's line.

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

5 0 tty
4 0 tty0
4 1 tty2 (etc
4 192 ttyp0
4 193 ttyp1 (etc)
4 64 ttys1
4 65 ttys2
1 1 mem

You also need crt0.o

QUESTION: How else can I test it?

(1) try starting the server directly (bypass xinit - it'll be faster).
If X386 is working the following should work:

X :0

(2) when you run it, redirect errors to a file so you can check them

startx 2> t.t

QUESTION: Does there exist some usual fault, I should be warn of?

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 X runs 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 "800x600"

and around the /dev/ttyxx

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: My server "hangs" Why?

ANSWER: Quite often it isn't a hang. If the server grabs the screen
(whether or not it gets as far as entering graphics mode) and then
dies, it may return you to bash *without* giving up 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:

ls -lR /

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

QUESTION: Where can I find clock.exe or clock.pas ?

ANSWER: clock.exe was included in digest#150 Vol2, clock.pas was in
digest#156 Vol2.

QUESTION: When I try to use the X11 v1.0 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: How can I have more than 4 pty's to run X windows ?

ANSWER: recompile the kernel and set the ad-hoc number in the header

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 (not
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'.


 January 1, 2018  Add comments

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>