From: alph@wsinfo01.win.tue.nl (G.J.W. Hagenaars)
Newsgroups: comp.os.linux
Subject: New; FAQ.TEX (part 3)
Date: 23 Jul 92 07:54:21 GMT
Reply-To: alph@win.tue.nl


%----------------third part of faq.tex follows------------------------

%---------------------------------------------------------------------

\section{Features}\label{features}

\begin{question} I've read that Linux has virtual consoles, what must
I do to get them?\end{question}
\answer Yes there are, you can access them with the left $<$alt$>$-key
together with $<$Fn$>$-key. With the Linux 0.95a Images distribution, 4
consoles are available, getty runs on them.

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

\begin{question} When Linux boots, I get the following message ``8
virtual consoles''; how can I acess to the 5-8 vc's?\end{question}
\answer If you want the getty to run on the 5-8, you should add the
corresponding entries in {\sf /etc/inittab}. You can also just run
{\sf sh} on them by using the doshell soft. And then in either case,
the ALT-F[5-8] will access the corresponding vc.

\begin{question} What kind of shell is /bin/sh?\end{question}
\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
{\sf /bin/sh} is {\sf ash} the BSD 4.3 sh.\\ BTW I think that next
time, it will be rc which is much more better than {\sf ash} and tiny
wrt bash. If you want to test it, it's (at least) at {\tt nic} in {\sf
/pub/unix/shells} and the file is {\sf rc-1.2.tar.Z} The compilation
is straightforward (just a few things to modify in {\sf Makefile} and
{\sf mksignal}). Also a port of tcsh6.1 has been done recently
(beginning of April)

\begin{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?\end{question}
\answer These feature are not provided with the {\sf bin/sh} (ash) of
the Images you should download {\sf bash} to get jobs possibilities.

\begin{question} Does there exist a man page for XXXX?\end{question}
\answer Download {\sf man.tar.Z} from your favorite Linux ftp site,
there is most of the fileutils man page -- either XXXX or gXXXX,
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 {\tt man} program can use. Quite recently the man
pages for section 2 have been written (thanks Drew) and can be found,
at least at {\tt tsx-11} in {\sf /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 find it (at
least on {\tt tsx-11}) in {\sf pub/linux/binaries/usr.bin/groff}.\\ Moreover
Michael Johnson is the coordinator for man pages under Linux, he is
looking for volunteers, so contact {\tt linux-man-request@stolaf.edu}.

\begin{question} What are the editors available in
Linux?\end{question}
\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 {\tt nic} in the directory {\sf xtra} and at {\tt
tsx-11} in
the directory {\sf 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 {\sf binaries/emacs-18.58} at
{\tt tsx-11}). Also the port of {\tt mg} (micro gnu) has been done and can
be found at least at {\tt athos.rutgers.edu} (128.6.4.4) in {\sf pub/linux},
mg is the binary and {\sf mg.tar.Z} is the sources file. You can also
find a PD ed, and {\tt elvis} has an ex mode. Finnally there are {\tt
joe}, {\tt vile}-3.11 and recently {\tt elle} (Elle Looks Like Emacs).

\begin{question} Does there exist a printer package for
Linux?\end{question}
\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 {\sf lp095.tar.Z}
Once you have successfully recompiled the kernel v0.96, you need to
create new devices in the {\sf /dev} directory (see
section{majorminor}). Printing, then, can be achieved by:\\ {\tt
cat~filename~$>$~/dev/lp1}

\begin{question} Does there exist a ps for Linux?\end{question}
\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
{\sf ps096b.tar.Z}.
                  
\begin{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?\end{question}
\answer surely not, in your file {\sf /etc/rc}, instead of the line\\
{\tt $>$~/etc/mtab}\\
put the following\\
{\tt echo~"/dev/hdX~(root)"~$>$~/etc/mtab}\\
where the {\tt X} is the hard drive you use as root partition.

\begin{question} How do I make swapping work?\end{question}
\answer Quite simply, you need the {\tt swapon} and the {\tt mkswap}
binaries. Then you can choose between a swap partition or a swap file.
The {\tt mkswap} is used to write the ``swap signature'', whilst the
{\tt 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 {\sf /dev/hda2}, and it's 10MB big
\begin{enumerate}
\item swap partition: you have to indicate it's a swap area, this is
done via {\tt mkswap} (instead of {\tt mkfs}) which needs the name of
the partition and the size in blocks (a block is 1kb big); the
optional {\tt -c} flag is for bad block checking. So for our example
you should perform:\\ {\tt mkswap~[-c]~/dev/hda2~10000}\\ Then you
need to indicate that you want Linux to use the swap area, this is
done via {\tt swapon}. In general it is set in the {\sf /etc/rc} file,
just put the following entry: {\tt /bin/swapon~/dev/hda2}
\item 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
{\sf /dev/hda2}). I need first to {\tt dd} the file.\\ {\tt
dd~if=/dev/hda2~of=/swap\_file~bs=1024~count=4096}\\ {\tt bs} stands for
block size, and {\tt count} is the number of blocks then I have to put
the ``swap signature'' on that file:\\ {\tt mkswap~/swap\_file~4096}\\
At this point, you should {\tt sync}, just to be sure the signature is
effective. And finally add an entry in the rc file:\\ {\tt
/bin/swapon~/swap\_file}
\end{enumerate}

\begin{question} When I boot I get one of the following messages:
``Unable to find swap signature'' or ``Bad swap-space bitmap''
\end{question}
\answer You probably forgot to make your swap-device, use the {\tt
mkswap} command.

\begin{question} How do I know if it is swapping?\end{question}
\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 2Mb RAM will make the system
swap constantly while running {\tt gcc}, 4 Mb will swap occasionally
when optimizing big files (and having other things active, such as
{\tt make}). Also, the command {\tt free} (from the {\sf ps} package)
reports total enabled swap space and current swap use.

\begin{question} How is it possible to remove a swap
file?\end{question}
\answer Simply perform a {\tt rm} on that file, and remove the swapon of
your {\sf /etc/rc} file.

\begin{question} How is it possible to remove a swap
device?\end{question}
\answer {\tt mkfs} the device, and remove the swapon of your {\sf
/etc/rc} file.

\begin{question} Is there any way to tell how much swap space you are
using or have left?\end{question}
\answer The {\tt free} program provided with the {\sf ps} package
handles this.

\begin{question} I have a 2Mb box, but {\tt free} reports only 1Mb
why?\end{question}
\answer (Linus)\\ {\tt free} doesn't concern with the memory the
kernel has allocated for itself. In other words what you see is the
\em user \em memory available. The kernel has taken the low 1Mb for
it's use ($\approx$250Kb for it and the rest for buffer cache and
kernel data structures); for big memory machine it could be even 2Mb.

\begin{question} Is there only the \%\$\#@ keyboard?\end{question}
\answer There are Dannish, Finnish, French, German, Uk and US
keyboards. Set it in the main {\sf Makefile} of the kernel sources,
then (re)compile the kernel again. Make sure the files in {\sf
kernel/chr\_drv} directory are recompiled.

\begin{question} (special FINNISH/US) I booted up with the new image
and everything work except that some keyboard keys produce wrong
characters. Does anyone know what is happening?\end{question}
\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.

\begin{question} Does there exist shared libs?\end{question}
\answer They seem to work. The kernel features are in Linux 0.12
already. They work for gcc-2.1. and later

\begin{question} Does Linux work for SCSI drives?\end{question}
\answer Yes since v0.96. At {\tt headrest.colorado.edu} in {\sf /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 {\tt drew@cs.colorado.edu}

\begin{question} Linux is supposed to work with ESDI drive. However I
have trouble with my Magtron MT-4115E (Joincom controler), any
clue?\end{question}
\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 {\sf 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.

\begin{question} How does one go about applying a patch to
Linux?\end{question}
\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 {\tt 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 {\sf XXX}. First
of all I will look at the top of {\sf XXX}, where the file affected is
identified. This may have a leading path attached to it. Either cd out
to the ``root'' of the patch, i.e. if I see\\ {\tt
linux/kernel/blk\_drv/blk.h}\\ I would cd into {\sf /usr/src}
(assuming it's the place where I can find linux/kernel...) and then
patch as follows\\ {\tt patch~-p0~$<$~whatever\_place/XXX}\\ or, you can
specify a number of path components to strip from the path. If I am in
the {\sf blk\_drv} directory patching would be\\ {\tt
patch~-p3~$<$~whatever\_place/XXX}

\begin{question} There are a lot of patches available (fd patch, lp
patch login patch ...) can I be fairly confident the subsequent
patches will work?\end{question}
\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,
\em great\em, 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
{\tt 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 \em not \em Linux
helpful.

\begin{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?\end{question}
\answer Before remake, just do a {\tt make~clean} in the directories
involved by the patches. This will force a rebuild of the {\sf .o} and
{\sf .a} files.\\ If you have a RCS running on your source tree, did
you checked a patched version of the files changed before \em any \em
CO either by you or make\\
Finally, make sure the patches succeded. Normally, failed patches on a
file {\sf FILE} will leave a {\sf FILE\#} file. Moreover you will get
a ``chunk failed'' message. It is possible to capture the output while
patching, with the following:\\
{\tt patch~-p0~$<$~patchfile~|~2$>$\&1~patch.result~|~more}

\begin{question} What is VFS?\end{question}
\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 \em enables \em
someone to design a robust filesystem which would have some nice
properties (no 14 chars file name limitation, nor 64Mb 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.

\begin{question} Could someone explain the swap process on Linux? Is
it swapping or paging?\end{question}
\answer (Linus)\\ Linux uses swap as \em additional \em memory, one
page of the swap-space is used for the good-page bitmap and the
swapspace signature.\\ In fact Linux does only paging, no swaping in
the meaning ``write out one whole process to disk''.\\ The reason it's
called swapping is that Linux used paging for memory management on a
low level since the very beginning, but didn't page to disk at all
until 0.12.

\begin{question} Is demand paging different from paging and
How?\end{question}
\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 starts 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
initializes data it needs. Demand-loading has very good points:
\begin{enumerate}
\item it simplifies the exec system call;
\item it means page sharing between that have excuted the same file is
easy to implement;
\item\label{memdown} it cuts down on the amount of memory required.
When Linux runs out of real memory, it starts to look 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.
\end{enumerate}
Point~\ref{memdown} 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 {\tt X} and doing a
kernel compilation + something else when I've forgotten to turn on
swapping: free reports 0 page available but things still work,
although performance is slightly down...

\begin{question} What's about TeX?\end{question}
\answer The primary site for Linux TeX is 129.78.66.1, this is
P.~Williams's site in Australia. The stuff at {\tt tsx-11} was posted by
T.~Dunbar who does support/maintain the dvilj stuff.

\begin{question} What's about MGR?\end{question}
\answer (General Information grabbed from various sources)\\ There is
a MGR channel available, contact the request adress with {\tt help} in
the body: {\tt linux-activists-request@niksula.hut.fi} The stuff can be
found at banjo in pub/Linux/MGR In brief:\\
MGR provides:
\begin{itemize}
\item multiple overlapping windows
\item multiple fonts
\item text and graphics in each windows
\item a simple popup menu package
\item a client/server model `a la' X
\item independance from any peculiar networking technology
\end{itemize}
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 {\sf mgr-man.out} from {\tt
bellcore.com}

\begin{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?\end{question}
\answer try the following\\ {\tt mgr~-m~/dev/ttys1}\\ if the mouse is
on the serial 1. Another possibility is to link {\sf /dev/mouse} with
{\sf /dev/ttys1} (assuming your mouse is on serial 1)

\begin{question} Any tips for MGR?\end{question}
\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:
\begin{verbatim}
ptyp0 c 4 128
ptyp1 c 4 129
...
ttyp0 c 4 192
ttyp1 c 4 193
\end{verbatim}

\begin{question} What's about X11?\end{question}
\answer (General Information grabbed from various sources)\\ There is
a X11 channel available, contact the request adress with help in the
body: {\tt linux-activists-request@niksula.hut.fi}\\ To use this BETA X11
you need the v0.96 release of Linux; you also need to download stuff
at banjo.concert.net in {\sf pub/Linux/X11/x11v1.0}

\begin{question} What is the hardware requirement for X11 so
far?\end{question}
\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 {\tt
xterms}, {\tt xclock} (nothing major). If I want to compile the kernel
in an {\tt 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.

%---------------------------------------------------------------------

\section{GCC misc information}\label{gccinfo}

I think this section is needed, because
\begin{itemize}
\item gcc is the compiler under Linux
\item the gcc-2.x is in test, and many information change constantly.
\end{itemize}
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 {\sf /pub/Linux/GCC}, and also at
{\tt fgb1.fgb.mw.tu-muenchen.de} under {\sf /pub/linux/GCC}, and one of the
``specialists'' is Hongjiu Lu ({\tt hlu@eecs.wsu.edu}). 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 GCC FAQ, written by Hongjiu, provided with
gcc-2.2.2 \em READ IT.\em\\ Finally whenever you report a bug please
give the version of gcc, the version of your kernel, otherwise NO ONE
can help you.

\begin{question} I don't know how to install gcc stuff, is there a
special place?\end{question}
\answer It depends on the release of gcc you are using. Right now
there are at least 3 packages : the original one {\sf gccbin.tar.Z}
contains all the gcc-1.37 binaries distrib; the gcc-1.40 has been
ported in dec. 91, it's in {\sf newgcc.tar.Z} and the VARIOUS version
of {\sf gcc-2.xx.} Choose yours (I hope that the following will help
you); for my own I use {\sf gcc-2.2.2} available since end of June,
which is not that bad, anyway it's better than the previous 2.xx.
\begin{enumerate}
\item {\sf gccbin.tar.Z} goes in {\sf /usr/local/lib} except {\sf gcc}
which goes in {\sf /usr/local/bin}. Moreover each {\sf gcc-xxx} of
{\sf /usr/local/lib} should be linked with {\sf gxxx} and {\sf xxx} in
{\sf /usr/local/bin}.
\item {\sf newgcc.tar.Z} goes in {\sf /usr}, then {\tt uncompress} and
un{\tt tar} it. Files are directed to {\sf /usr/lib}, {\sf
/usr/include} and {\sf /usr/bin}. You should link {\sf ar}, {\sf as},
{\sf ld} with {\sf gar}, {\sf gas} and {\sf gld}, this will prevent
some error while using {\tt make} (especially whilst re-compiling
Linux kernel). Moreover, the include files are not complete, you need
first to install {\sf include-0.12.tar.Z} (at {\tt tsx-11}, {\sf
/pub/linux/sources/system}). Finally {\sf cpp} and {\sf cc1} are in
{\sf /usr/lib}, and they should be in {\sf /usr/bin}, a solution is to
link them at the right place.\\ BTW {\sf include-0.12.tar.Z} contains
{\sf include/linux/*.h} which are not uptodate, you should link the
one provided in Linux-0.95a sources by the following:\\ {\tt
cd~/usr/include}\\ {\tt mv~linux~linux\_orig}\\ {\tt
ln~-s~/usr/src/linux/include/linux linux}
\item {\sf gcc-2.xx} is splitted in 3 main files {\sf 2.xxdb.tar.Z},
{\sf 2.xxlib.tar.Z} and {\sf 2.xxmisc.tar.Z}, some utilities ({\sf
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 OTHER C COMPILER INSTALLED ON YOUR SYSTEM.
What is meant by compiler is all the stuff: binaries, header files,
libraries and {\sf crt0.o}. I assume that whateverplace contains the
2.xxfiles you have downloaded.\\ {\tt cd~/usr}\\ {\tt
tar~xvpzf~whateverplace/2.xxmisc.tar.Z}\\ read the {\sf FAQ}, and {\sf
README} in {\sf /usr/install/gcc2}. Then\\ {\tt cd~/usr}\\ {\tt
tar~xvofz~2lib.tar.Z}
\end{enumerate}

\begin{question} What are the contents of them?\end{question}
\answer {\sf 2.xxdb.tar.Z} contains {\sf cpp}, {\sf libg.a} and {\sf
libc\_p.a.}, {\sf 2.xxlib.tar.Z} contains {\sf cc1} and {\sf cc1plus}.
{\sf 2.xxmisc.tar.Z} contains gcc {\sf 2.xx} drivers, header files,
libraries, manual pages and installation instructions.\\ Another file,
{\sf XXXXinc.tar.Z}, where {\sf 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 {\sf README} for
details.

\begin{question} I seem to be unable to compile anything with gcc.
Why?\end{question}
\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 2 Mb and a lot disk traffic :) Isn't it great?

\begin{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?\end{question}
\answer You are using a {\sf libc.a} that has an out-of-date {\sf
signal.o} and {\sf sig\_restore.o} file, and they don't know how to
deal with SA\_NOMASK. (The one in {\sf gccbin.tar.Z} is out-of-date).
Get the new {\sf libc.a} and put it in {\sf /usr/lib} or {\sf
/usr/local/lib}. Again check your compiler version.

\begin{question} gcc complains about not finding crt0.o and the system
include files What am I doing wrong?\end{question}
\answer The include files normal place is in {\sf /usr/include}. {\sf
lib*.a} and {\sf *.o} should be in {\sf /usr/lib} or {\sf
/usr/local/lib}

\begin{question} While compiling some GNU packages gcc(1.37 and 1.40)
chokes on regex.c with an insn code, what can I do?\end{question}
\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
{\tt -O} flag (to compile regex) and every thing will be alright.

\begin{question} I tried to port a \em new \em version of gnu stuff.
But in the linking phase, gcc complains about the missing libg.a.
\end{question}
\answer Yes this is well known for compiler version earlier than
2.2.2, throw away the flag {\tt -g} that's all, anyway {\sf libg.a} is
\em only \em for debugging purpose.

\begin{question} How to compile programs which may be debugged with
gdb?\end{question}
\answer There are different ways (and half) to handle this problem. If
you have the {\sf gcc2.2.2} or later it's simple, use the {\tt -g}
flag. Otherwise there are different possibilities:
\begin{enumerate}
\item As there is no {\sf libg.a}, you should throw away the {\tt -g}
flag in link phase, this means that the compilation must be done in
two steps example: instead of {\tt gcc~-g~monprog.c~-o~monprog}, use
the following {\tt gcc~-g~-c~monprog.c} and then {\tt
gcc~-o~monprog~monprog.o} Alas this method is not that good if you are
using {\sf Makefile}.
\item The other way is to create an empty {\sf libg.a} as follows
(Peter Macdonald trick)
\begin{itemize}
\item create {\sf libfake.c} containing {\tt libgfake()~\{\}}
\item compile it with: {\tt gcc~-c~libfake.c}
\item create the {\sf libg.a} with: {\tt ar~r~libg.a~libfake.o}
\end{itemize}
\item The more tricky Humberto method:\\ {\tt
cd~/usr/lib~\\ranlib~libg.a}\\ then {\tt gcc~-g~monprog.c~-o~monprog}
will produce a debuggable monprog
\end{enumerate}

\begin{question} When compiling some code, cc1 complains about some
insn code, what's that?\end{question}
\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 {\tt tsx-11} ({\sf newgcc.tar.Z} and
the ad-hoc libraries {\sf newlibc.tar.Z}).

\begin{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. \end{question}
\answer These are math helper functions, and you can usually compile
these programs to use the kernel floating point routines by adding
{\tt -m80387} to the compiler switches. If the program does any wierd
fp math (exp(), sin()) it'll die when you run it though.

\begin{question} What are the enhancement of the
newgcc.tar.Z?\end{question}
\answer There were some bugs in the old port that have been corrected,
moreover this package contains 387 support there is {\sf libm.a} (for
those with 387) {\sf libsoft.a} (for those without, I for example)
{\sf libtermcap.a} (from tput 1.10)\\ The {\tt -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
{\sf Makefile}s]; conversely 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 {\tt -fcombine-regs} flag while
compiling (the Linux kernel for example)\\ BTW Notice also that
include files have changed ({\sf stdio.h} which is no more ansi
compliant).\\ For my personal use, gcc-1.40 works just fine.

\begin{question} What's about gcc2.x?\end{question}
\answer It has been ported to Linux, it is (pretty) stable and works.
The files are {\sf 2.1xlib.tar.Z} and {\sf 2.1xmisc.tar.Z} {\tt
uncompress} and un{\tt tar} {\sf 2.1xmisc}, read the {\sf FAQ}
enclosed and play with it.  You can find these files at {\tt tsx-11} in {\sf
binaries/compilers/gcc-2.x}. One of the most recent version is on
banjo.net.concert in {\sf pub/Linux/GCC}. Also provided {\sf
2.1shared.tar.Z} file which contains most of the utilities in {\sf .a}
form (to transform them as binaries just {\tt
gcc~-s~-ladhoc\_library~binfile.a~-o~binfile} where {\tt
-ladhoc\_library} is either {\tt -lm} or {\tt -ltermcap}\\ The {\sf
shlib.tar.Z} enables you to create shared libraries, read the {\sf
README} file included\\ The {\sf 096inc.tar.Z} contains the header
files from the kernel

\begin{question} What can gcc-2.x do for me, that gcc-1.40
cannot?\end{question}
\answer Shared libraries: small programs shrink by an average factor
of 2 to 3, larger program by 50kb. It also compiles C++, and so replace
both gcc-1.xx and g++1.xx. And also:
\begin{itemize}
\item ANSI and BSD 4.4 compatible stdio
\item iostream for g++
\end{itemize}

\begin{question} I can't run g++ due to the lack of "expr"; where can
I find it?\end{question}
\answer Either in the {\sf 2.1linux-distrib}, it's in the file {\sf
2.1shared.tar.Z} (banjo {\sf pub/Linux/GCC}); either in the {\sf
shellutils-1.6.tar.Z} (or whatever is the last release) on
{\tt prep.ai.mit.edu}

\begin{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?\end{question}
\answer Yes, it's caused by bad {\tt compress}/{\tt tar} binaries, use
the one provided at {\tt tsx-11} in {\sf linux/binaries/usr.bin}

\begin{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. \end{question}
\answer Did you run {\sf fixfiles}? The file permission in {\sf
g++-include} is 640 and should be 444.

\begin{question} I've seen on my ftp-server that there are different
XXXfixX.tar.Z files in the GCC directory, do I need
them?\end{question}
\answer If you got a very early copy of gcc 2.2.2, please get {\sf
2.2.2fix1.tar.Z} and {\sf 2.2.2fix2.tar.Z}, and {\sf
libc-linux.fix.tar.Z} for the C lib sources, and new {\sf
shlib-2.2.2.tar.Z} if you want. If you got gcc 2.2.2 after you saw
{\sf XXXfixX.tar.Z}, you are fine.

%---------------------------------------------------------------------

\section{SCSI special}\label{scsiinfo}

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

\begin{question} What SCSI hosts are supported?\end{question}
\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, \em GET \em 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.

\begin{question} Which disks?\end{question}
\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 $>$ 64Mb, and I haven't had time to fix
extended partitions - which means you can only get $64 \times 4$M to
work with Linux.

\begin{question} What about SCSI tapes?\end{question}
\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.

\begin{question} How do I get SCSI information?\end{question}

\answer Subscribe to the SCSI channel of the linux-activists mailing
list. mail {\tt linux-activists@joker.cs.hut.fi} And put in the
header.\\
{\tt X-MN-Admin: join SCSI}

\begin{question} Why does the system ``hang'' when SCSI disk access
occurs?\end{question}
\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 interactive performance
is abysmall.\\ The SCSI distribution, from {\tt
headrest.woz.colorado.edu}
does not suffer from these problems - if you use SCSI, GET IT.

\begin{question} How do I partition the disk?\end{question}
\answer Use {\tt 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 demands 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 \em MUST \em 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.

\begin{question} The stock {f,pf}disk programs don't
work.\end{question}
\answer Yes.  The device names {\sf /dev/hd*} are hard coded into
these programs, and they don't see {\sf /dev/sd*}.\\ If you want, YOU
can change the {\sf /dev/hd*} devices to be links to or other entries
for the SCSI devices.\\ Also, {\tt pfdisk} should be callable with a
device name.\\ Hopefully, some one will change the partitioning
programs to respect the SCSI devices.

\begin{question} Where is the latest version maintained?\end{question}
\answer {\tt headrest.woz.colorado.edu} directory {\sf /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.

\begin{question} What about extended partitions?\end{question}
\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.

\begin{question} I get a message saying READ CAPACITY FAILED. What
does this mean?\end{question}
\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.\\ Upgrade.

\begin{question} What are the major / minor numbers for SCSI
drives?\end{question}
\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 {\sf
/dev/sd[n][p]}, where {\sf n} is the drive number, and {\sf 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 {\sf 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
\begin{verbatim}
        Seagate ST02, ID=0
        Seagate ST02, ID = 5
        Ultrastor 14, ID = 0
        Adaptec 1542, ID = 0
\end{verbatim}
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.

\begin{question} I can't use more than X SCSI disks.\end{question}
\answer Change MAX\_SD in {\sf sd.h}, MAX\_SCSI\_DEVICE in {\sf
scsi.h}, and recompile the kernel.

\begin{question} How do I reduce kernel bloat and eliminate the
drivers I don't want?\end{question}
\answer Simply \#undef CONFIG\_DISTRIBUTION in {\sf
include/linux/config.h}, and define the macros for the SCSI hosts you
want enabled.

\begin{question} What about bugs?\end{question}
\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.

\begin{question} The seagate driver doesn't work.\end{question}
\answer There are two possibilities
\begin{enumerate}
\item 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.
\item 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.
\end{enumerate}

\begin{question} What are the known bugs?\end{question}
\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\footnote{Kablooey is defined as the screen desintegrating
into multi-colored random garbage}, or reseting the system.\\ Another
user could never get the seagate driver to work period.

\begin{question} Why can't I swap to a SCSI disk? Why can't I mount a
SCSI disk as root?\end{question}
\answer This was due do a race condition that has since been fixed (I
think).\\ 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.

\begin{question} Why does Linux ``hang'' when the disk is
accessed?\end{question}
\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.

\begin{question} I get SCSI timeouts.\end{question}
\answer Make sure your board has interrupts enabled correctly.

\begin{question} What future developments are planned?\end{question}
\answer The following changes will occur (listed from highest to
lowest priority) :
\begin{itemize}
\item 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.
\item Support for extended partitions will be added
\item Support for LUN != 0 will be added
\item Support for block size, where 1024 \% blocksize == 0 will be
added.
\item Support for tapes will be added
\end{itemize}

\begin{question} WHEN?\end{question}
\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....

%---------------------------------------------------------------------

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

\subsection{X386 General information}

\begin{question} What is the X11 release supported by
Linux?\end{question}
\answer It's the X11R5 (X386 1.2)

\begin{question} What is X386?\end{question}

\answer X386 is the port of the X11 server to System V/386 that was
done by Thomas Roell ({\tt roell@informatik.tu-muenchen.de}). 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 (i.e.
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 ({\tt obz@sisd.kodak.com}).

\begin{question} Where can I get X386 1.2 (X11R5)?\end{question}
\answer The X386 1.2 sources are available at any site that
distributes the X11R5 source (too numerous to list here, but includes
{\tt export.lcs.mit.edu})

\begin{question} What VGA boards are supported?\end{question}
\answer
\begin{tabbing}
ABCDEFGHIJK\=LMN\=\kill
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)\\
\end{tabbing}

\begin{question} Any tips on compiling X11R5?\end{question}
\answer
\begin{itemize}
\item You will need lots of disk space (around 150Meg for the MIT core).
\item Look at {\sf mit/server/ddx/x386/README} and follow any
instructions for your particular platform.
\item  Contact the X11 channel at linux-activists
\end{itemize}

\subsection{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).

\begin{question}\label{qx11} How does X11 start up?\end{question}
\answer the command startx runs the startx script in {\sf
/usr/bin/X11}. This script in turn calls {\sf xinit}. In my {\sf
startx}, I have set several arguments on the serverargs = "" line; I
have:\\ {\tt 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 {\sf /usr/bin}) which is
an executable.\\ xinit \em calls \em {\sf 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 {\sf 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.

\begin{question} How can I see what startx passes to xinit, and xinit
to X?\end{question}
\answer A simple (\& useful) useful test. Edit {\sf startx} and modify
the last line:\\ {\tt insert~"echo"~;}\\ {\tt
echo~xinit~\$clientargs~--~\$serverargs}\\ If you leave serverargs=""
(see above), you will see:\\ {\tt xinit~$<$path$>$/.xinitrc}\\ when
you run {\tt startx}. The path will reflect the location of your
default {\sf .xinitrc} file - startx looks first in your home
directory, and then in {\sf /usr/lib/X11/xinit} (the latter contains
{\sf xinitrc}, NOT .xinitrc).\\ To see what xinit passes to X, try:\\
{\tt rm~/usr/bin/X11/X}\\ - yes, if you have set it up correctly, X
should only be a link so it's safe to remove it.\\ then create a shell
script called {\sf /usr/bin/X11/X} containing:
\begin{verbatim}
\#/bin/sh
echo \${1} \${2} \${3} \${4} \${5} \${6} \${7} \${8}
\end{verbatim}
and run startx. You should see something like:\\ {\tt X~:0}\\ which is
all xinit passes to X. If you don't see the :0, you may not have your
DISPLAY=":0" set correctly (see man file).\\ THEN RESTORE X!! :\\ {\tt
rm~/usr/bin/X11/X}\\ {\tt ln~-s~/usr/bin/X11/X386~/usr/bin/X11/X}

\begin{question} What else do I need?\end{question}
\answer {\tt set~DISPLAY=":0"} and {\sf /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 {\sf /usr/bin/X11}:\\
{\sf X} (link to {\sf /usr/bin/X11/X})\\
{\sf X386} (correct size=674730).\\
you \em must \em have {\sf /lib/lib92.04.12}\\
a {\sf /tmp} directory (with the correct access)\\
{\sf /dev/tty0}\\ {\sf /dev/mem}\\ {\sf /dev/ttys1} (for a mouse in
serial port 1, or {\sf /dev/ttys2} in port 2) -- these could just be
links to {\sf /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 {\tt ls~-l~/dev}. You should have:
\begin{verbatim}
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
\end{verbatim}
You also need {\sf crt0.o}

\begin{question} How else can I test it?\end{question}
\answer
\begin{enumerate}
\item try starting the server directly (bypass xinit - it'll be
faster). If X386 is working the following should work:\\ {\tt X~:0}
\item when you run it, redirect errors to a file so you can check them
later: eg\\ {\tt startx~2$>$~t.t}
\end{enumerate}

\begin{question} Does there exist some usual fault, I should be warned
about?\end{question}
\answer If X isn't firing at all, or even if it clears the screen and
crashes (see below) you almost certainly have a fault in {\sf
Xconfig}.
\begin{enumerate}
\item Note that X runs {\sf Xconfig}. (not {\sf xinit})
\item If you have a fault in {\sf Xconfig} it is possible to crash or
hang the server without getting an error message.
\item leave the two paths at the top of {\sf Xconfig} commented out
when testing.
\item test with only one graphics mode included - one you are most
sure of.
\item 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 {\sf /dev/ttyxx} doesn't
exist.
\item \em NB \em X looks in your home directory first to find an
{\sf Xconfig}. make certain it's using the one you've been working on!
\item you need double quotes (") around your chipset and modes: eg\\
{\tt chipset~"et4000"}\\ {\tt Modes~"800x600"}\\ and around the {\sf
/dev/ttyxx} eg\\ {\tt microsoft~"/dev/ttys1"}
\item Check your VGA section and modeDB first.
\item ensure ModeDB clock speeds match the VGA section. Comment out
any unused lines in MODEDB.eg {\tt clocks~~25~36~00~00~00~00~00~00}\\
then you \em must \em 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.
\item a syntax error (such as an unrecognised word) in {\sf Xconfig}
will cause a death with no warning.
\item videoram must equal the amount of display ram on your chip.
\end{enumerate}

\begin{question} My server ``hangs'' Why?\end{question}
\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 \em without \em 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:\\ {\tt sync}\\ {\tt ls~-lR~/}\\ Also I
\em suspect \em that (at least for me), you can kill the server if you
include the servernum option in the Xconfig

\begin{question} Where can I find clock.exe or
clock.pas?\end{question}
\answer {\tt clock.exe} was included in digest\#150 Vol2, {\sf
clock.pas} was in digest\#156 Vol2.

\begin{question} When I try to use the X11 v1.0 I got "Cannot connect
to server" or "process does not exist", any clue?\end{question}
\answer The cause might be wrong fontpath variable setup in your {\sf
Xconfig}; uncomment and set the correct fontpath variable.

\begin{question} How can I have more than 4 pty's to run X
windows?\end{question}
\answer recompile the kernel and set the ad-hoc number in the header
{\sf include/linux/tty.h}

\begin{question} I have trouble with my logitech Pilot mouse and X
under Linux, any clue?\end{question}
\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
C7-M). The second line is the MicroSoft compatible. Currently all
newer Logitech mice follows this practice, like the MouseMan. In that
case gwu have to say `MicroSoft' or `MouseMan'.

\end{document}

%-----------------end of third and last part of faq.tex--------------
Newsgroups: comp.os.linux