The originall FAQ 1st version was posted in Dec. 19, by Robert Blum,
I've just changed some little things. As Robert seems to be out
" J'ai repris le fambeau"
Do not flame on me if I walk on anybody toes, just let me know.
The Question/answer modified (even sligthly) have been marked with (-)
The New one have been marked (+).
Any way, most credits of this work to Linus, Robert and Ted the rest was on
the list posted by many (real) activists (not me ;-)
Following is a FAQ-compilation for Linux.
Mail me, if you like it, and mail me, if you dislike it or have
any ideas on changing this.
Thanks in advance,
PS: For the future i plan to do sections in the FAQ to make it more readable
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.12 still in Beta-test, date: Jan. 14th 1992.
LINUX 0.12 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: 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), download the INSTALL file. 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 diskett and that's it.
(-)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
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).
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: How big is the 'complete' Linux package?
ANSWER: Well, the boot and root image disketts are about 750k compressed. The
kernel sources are about 200k compressed, and the libc sources are
another 170k compressed. The GNU C compiler is 670k, 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: Since how long does linux exist?
ANSWER (partial): Few months, v0.10 went out in Nov. 91, v0.11 in Dec.
and the current version 0.12 is available since Jan. 14th 92
(+)QUESTION: What's about the copywright of linux.
ANSWER: In the previous release, Linux was copyrighted by Linus
Torvalds but free. The copyright will change (v0.12) to follows
the same set of rules as the GNU copyleft.
(+)QUESTION: Should I be a UNIX and/or a DOS wizard to install/use Linux?
ANSWER: Not at all, just follow the install rules. Right now Linux is used by
more than 400 persons, very few of them enhance the kernel, some adds/ports
new soft and most of us are only (but USEFUL) beta testers. So join us and
choose ur "cast"
(+)QUESTION: Is Linux better than Minix386 ?
ANSWER (partial): It depends on what u're looking for, Linux is free Minix
is not; Minix is ported on many architecture Linux not.
(-)QUESTION: Does linux do paging? Can I have virtual memory on my small
ANSWER: Linux0.12 does do paging, but it's pretty rudimentary. It's even
more beta than the rest of linux. How it selects which page to be thrown
out of memory is particularly primitive. It is there though and it does
appear to work
QUESTION: Can I have tasks spanning the full 4GB of addressable 386
memory? No more 64kB limits like in coherent or standard minix?
ANSWER: Linux does limit the task-size, but at a much more reasonable
64MB (MEGA-byte, not kilos), so bigger programs are no problem.
QUESTION: Does the bigger program sizes mean I can run X?
ANSWER: X is not ported to linux, and though I hope it will be some day,
I cannot guarantee it. It's big, and wants a lot from the system.
(-)QUESTION: Where can I get linux? Is there a mailserver?
ANSWER: Linux can be gotten by anonymous ftp from
You might want to check out which of these is the most up-to-date.
If you don't have ftp-capability, you are in trouble. You might try
mailing "mails...@nic.funet.fi" with "help" in the body of the mail.
There are now others sites as in the UK:
(+)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,
otherwise contact ty...@ATHENA.MIT.EDU
(-)QUESTION: Is there a newsgroup or mailing-list about linux? Where can I
get my questions answered? How about bug-reports?
ANSWER: alt.os.linux is formed, and comp.os.linux is on the way, for
those who can't access to the news u can ask for digest to:
Mail sent to Linux-A...@NEWS-DIGESTS.MIT.EDU are posted to alt.os.linux
DO NOT mail "I want to [un]subscribe" to the mailing-list/news,
use the request-address. IF not ur mail-box will be over-crowded by activists.
Questions and bug-reports can be sent either to the mailing-list or to
"torv...@kruuna.helsinki.fi", depending on which you find more
QUESTION: How can I be sure I won't be writing over anything important?
I have to use DOS in on my machine, and I don't want to lose any files.
ANSWER: Back up everything. Just in case. Then, write some easily
recognizable pattern to the partition you have reserved for linux, using
some DOS tool. You can then use "cat /dev/hdX" under 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.
Also, make doubly certain that you have the correct partition.
There are a few rules about this: /dev/hd0 and /dev/hd5 are always the
same under linux and minix. DO NOT USE THEM, they are the whole raw
disk, not partitions. Also if a partition is on drive 1 under minix (ie
/dev/hd1-4), it is drive 1 under linux as well.
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 hd1, and so
if some utility starts sorting/reordering the table these things
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 mounted the linux filesystem, and copied the files from the
root-disk to the harddisk. Now I cannot find them any more, and
somethimes linux dies with a "panic: trying to free unused inode".
ANSWER: You have probably forgot to sync before rebooting. Linux, like
all unices, use a "buffer cache" to speed up reads and writes to disk.
On a machine that has enough memory, this buffer-cache is 1.5MB, and if
you forget to sync before exiting, it may not be fully written out to
disk. Re-mkfs and re-install (or try to use the preliminary fsck, but
remeber that although fsck tries to correct the faults it finds, it may
(+)QUESTION: Is it possible to access to DOS world from Linux
ANSWER: Yes, there is the mtools package (with patches for devices.c)
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. Use 'ln' or
'mknod' to create a sepcial file called "/dev/dosX", where X 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.
(-)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:
- No segments - everything is in the same segment (at least in the
bootsectors and setup, as they don't use the .data segments)
- mov[b|w|l] are shorter versions of mov ax,[byte|word|long] ptr [XXX].
This is how unix assemblers normally give the size (byte, word or long).
Gas has similar constructs.
- There is no "jmp short", the opcodes are "j" for a short jump and
"jmp" for a long one.
- "jmpi" is a jump with a segment:offset pair. I don't know how this is
written in DOS assembly.
QUESTION: While running du I get "Kernel panic: free_inode: bit already
cleared". Also, du produces a ENOENT error for all the files in certain
of my directories. What's going on?
(-)ANSWER: These are both consistent with a bad file-system.
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
(+)QUESTION: I've got all the things on site ??? but I don't know what
ANSWER: include.tar.Z goes to /usr/include; ggcbin.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
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 and minor programs (sed,...).
Other utilities have been ported separately.
QUESTION: What is the "em" binary?
ANSWER: Em is micro-EMacs (probably version 3.10).
(+)QUESTION: It seems that $#@! ported on linux don't run correctly
ANSWER: Possible, but check first if the size of ur file corresponds to the
one on the ftp sites, if it is then do a complete report of the error,
try to correct it.
(+)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. Ask then on the list/news.
(+)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
(+)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. Test ur 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.
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
(-)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
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
QUESTION: gcc complains about not finding crt0.o and the system include files
What am i doing wrong ?
ANSWER: The include files normal place is in /usr/include. libc.a and *.a
should be in /usr/lib or /usr/local/lib
(+)QUESTION: While compiling some GNU packages gcc chocs on
regex.c with an insn code, what can i do?
ANSWER: There is a little bug in the port of gcc, this will be corrected
on the port of v2.0 (with g++). Right now thraw away the -O flag and
every thing will be alright.
(+)QUESTION: I can't move directories under Linux, why ?, what can I do?
ANSWER: mvdir needs kernel resources which don't exist yet.
The reason the rename system call isn't implemented yet is that there are a
couple of problems with it: it isn't as straightforward as you'd
imagine. Race conditions, inclusion checking etc..
It will befinitely be in 0.13 or 14 - if you remind me. It's not /that/
difficult, just needs a little thought. In the meantime, you might fake
it with "cp +recursive" and "rm -rf". Be careful with that though..
This also appears to be the reason why mv's of sym links do not
(+)QUESTION: I've read that linux has virtual consoles, what must i do to
ANSWER: Yes there are, u can access them with the left <alt>-key
together with <Fn>-key. But first u have to activate them with
doshell /dev/ttyn /bin/sh &
where n is the number of the Virtual console.
BTW: the serial ports are now /dev/tty64 and /dev/tty65. tty0 is the general
console. tty128- are reserved to pty's
(+)QUESTION: What are the editors available in linux
ANSWER: Right know there are uemacs and elvis-1.4, some one (R. Blum)
is working on that, and some one else is working on emacs 18.57
(+)QUESTION: du seems buggy when i used it the number of disk
occupation is wrong.
ANSWER: Take care, if u want size in kbytes use the -k flags.
(+)QUESTION: Is there only the %$#@ keyboard ?
ANSWER: There are Finnish, French, German, UK, and US keyboards.
Set it in linux/kernel/chr_drv/keyboard.S, then compile the kernel
(+)QUESTION: What must I do to mkfs a floppy?
ANSWER: blocks are of size 1K so 1.44 floppy is 1440 blocks
(+)QUESTION: What are the device minor/major numbers?
ANSWER: (early Linus mail 06/11/91, updated Jan. 19 92)
Memory devices: Major = 1 (characted devices)
2 /dev/kmem - not implemented (easy, but I haven't done it)
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
type 1: 360kB floppy in 360kB drive (5.25")
2: 1.2M floppy in 1.2M drive (5.25")
3: 360kB floppy in 720kB/1.44Mb drive (3.5")
4: 720kB floppy in 720kB/1.44Mb drive (3.5")
5: 360kB floppy in 1.2M drive (5.25")
6: 720kB floppy in 1.2M drive (5.25")
7: 1.44M floppy in 1.44M drive (3.5")
Thus minor nr for a 1.44Mb floppy in B is: 1 + 4*7 = 29, and to read an
old 360kB floppy in a 1.2M A-drive you need to use minor= 0 + 4*5 = 20.
Example: "mknod /dev/PS0 b 2 28" (b for block: 2 for floppy, 28 for 1.44
Hard disks: Major = 3 (block devices)
0 /dev/hd0 - The whole hd0, including partition table sectors etc.
1 /dev/hd1 - first partition on hd0
4 /dev/hd4 - fourth partition on hd0
5 /dev/hd5 - The whole hd1, again including partition table info
6 /dev/hd6 - first partition on hd1
9 /dev/hd9 - fourth partition on hd1
NOTE! Be /very/ careful with /dev/hd0 and /dev/hd5 - 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/hd0 are things like "fdisk" etc.
NOTE 2!! The names for hd's are the same as under minix, 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/hd1 might be physically after /dev/hd2).
Tty's: Major = 4 (character devices)
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/tty64 - com1
65 /dev/tty65 - com2