add directory Linux-0.11

This commit is contained in:
gohigh
2024-02-19 00:21:01 -05:00
parent ca9fe7ce11
commit 26e015eb99
85 changed files with 8336 additions and 0 deletions

256
Linux-0.11/docs/FAQ Normal file
View File

@@ -0,0 +1,256 @@
daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/19/91 01:39 (253 lines)
Subject: A FAQ is coming...
Date: Thu, 19 Dec 91 07:29:21 +0100
From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum)
To: linux-activists@joker.cs.hut.fi
Hi Linuxers!
Following is a FAQ-compilation (most credits to Linus) 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,
Robert Blum
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.
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 (ie not SCSI, ESDI), and the system must be ISA. Otherwise
the requirements seem relatively small: a 386 (SX, DX or any 486). The
current version (0.10) needs a colour screen adapter, but this is not
the case with the next version.
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: Does linux do paging? Can I have virtual memory on my small
machine?
ANSWER: Linux does use the 386 paging unit, but currently only for
memory management. No use of disks as expansion RAM. This is one of the
things that will be implemented sometime in the (far?) future. Linux
also uses the paging unit to share pages between several processes after
a fork: thus it needs less memory. However, almost all the user programs
available for linux are GNU software, which want gobs and gobs of
memory. This is the reason at least 4M is recommended: GNU cc (gcc)
simply won't run in less.
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
nic.funet.fi (128.214.6.100):
directory /pub/OS/Linux
Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
directory /pub/msdos/replace
tsx-11.mit.edu (18.172.1.2):
directory /pub/linux
ftp.eecs.umich.edu (141.212.99.7):
directory linux
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 "mailserver@nic.funet.fi" with "help" in the body of the mail.
QUESTION: Is there a newsgroup or mailing-list about linux? Where can I
get my questions answered? How about bug-reports?
ANSWER: There is a mailing list set up at the address
'Linux-activists@niksula.hut.fi'. To join, mail a request to
'Linux-activists-request@niksula.hut.fi'. DO NOT mail "I want to
[un]subscribe" to the mailing-list, use the request-address.
Questions and bug-reports can be sent either to the mailing-list or to
"torvalds@kruuna.helsinki.fi", depending on which you find more
appropriate.
QUESTION: I got the minix-demo, but it won't boot. Linux boots from
floppy. What's wrong?
ANSWER: You probably wrote the minix demo to a 1.44M disk, which (for
some unfathomable reason) doesn't work. The minix demo wants a 720kB or
1.2M disk.
QUESTION: The minix-demo boots all right, but doesn't seem to recognize
my second harddisk. What's up?
ANSWER: The minix-demo does support a second harddisk, but there are no
special files made for it, and the minix demo doesn't include the
"mknod" command. Mount the linux root-floppy, and use the devices on
that.
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 minix to examine
which of the partitions you used.
QUESTION: Minix 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.
QUESTION: I used the minix mkfs to make a filesystem on /dev/hd3 after
having checked that this was indeed the partition I had reserved. Minix
mounts the new partition ok, but linux doesn't. What gives?
ANSWER: In some cases partitions are numbered differently under minix
and linux. This seems to correlate to the FDISK version you have used.
/dev/hd3 under minix may be /dev/hd2 under linux etc.
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.
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
fail.)
QUESTION: the mtools package on the root-disk 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 or
C. 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. 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. 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 ...
I'm afraid that as long as there is no fsck for linux there is no way to
correct the matter (unless you have minix and can run minix fsck), and
the only thing to do is to reinstall the filesystem from scratch (ie do
a mkfs from the minix demodisk and reboot from the original
linux-floppy).
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: What is the "em" binary?
ANSWER: Em is micro-EMacs (probably version 3.10).
QUESTION: I seem to be unable to compile anythong 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
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.) You can obtain the newer
signal.c from the unistd.tar.Z file, but don't use the associated
sig_restore.c from there; the FTP sites should have a separate
sig_restore.c which is up to date. While you're at it, you should also
get an updated crt0.c file as well, and install your new crt0.o and
libc.a in /usr/lib.
(This answer will likely change in the near future, since there are
plans to change the format of the signal trampoline code yet again....
but for now, this should be an accurate description of how things stand
now.)
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

248
Linux-0.11/docs/FAQ-0.11 Normal file
View File

@@ -0,0 +1,248 @@
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.
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 (ie not SCSI, ESDI), and the system must be ISA. Otherwise
the requirements seem relatively small: a 386 (SX, DX or any 486).
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: Does linux do paging? Can I have virtual memory on my small
machine?
ANSWER: Linux does use the 386 paging unit, but currently only for
memory management. It currently is not doing any paging or swapping.
This is one of the things that will be implemented sometime in the
near future. Linux also uses the paging unit to share pages between
several processes after a fork: thus it needs less memory. However,
of the interesting programs which have been ported to linux so want
gobs and gobs of memory; in particular, the GNU C compiler (gcc) needs
at least 4 meg of memory.
Even after paging is implemented, 4 Megs would still be recommended,
since large programs would run very slowly.
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
nic.funet.fi (128.214.6.100):
directory /pub/OS/Linux
Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
directory /pub/msdos/replace
tsx-11.mit.edu (18.172.1.2):
directory /pub/linux
ftp.eecs.umich.edu (141.212.99.7):
directory linux
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 "mailserver@nic.funet.fi" with "help" in the body of the mail.
QUESTION: Is there a newsgroup or mailing-list about linux? Where can I
get my questions answered? How about bug-reports?
ANSWER: There is a mailing list set up at the address
'Linux-activists@niksula.hut.fi'. To join, mail a request to
'Linux-activists-request@niksula.hut.fi'. DO NOT mail "I want to
[un]subscribe" to the mailing-list, use the request-address.
Questions and bug-reports can be sent either to the mailing-list or to
"torvalds@kruuna.helsinki.fi", depending on which you find more
appropriate.
QUESTION: I got the minix-demo, but it won't boot. Linux boots from
floppy. What's wrong?
ANSWER: You probably wrote the minix demo to a 1.44M disk, which (for
some unfathomable reason) doesn't work. The minix demo wants a 720kB or
1.2M disk.
In any case, you shouldn't need to use the Minix-demo disk any more;
as of version 0.11, Linux comes with sufficient filesystem utilities
(mkfs, fsck, etc.) so that Minix should no longer be required to bring
up an operating Linux system.
QUESTION: The minix-demo boots all right, but doesn't seem to
recognize my second harddisk. What's up? [SUGGESTION: delete this
question; see above first paragraph]
ANSWER: The minix-demo does support a second harddisk, but there are no
special files made for it, and the minix demo doesn't include the
"mknod" command. Mount the linux root-floppy, and use the devices on
that.
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 minix to examine
which of the partitions you used.
QUESTION: The mkfs program 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.
QUESTION: I used the minix mkfs to make a filesystem on /dev/hd3 after
having checked that this was indeed the partition I had reserved. Minix
mounts the new partition ok, but linux doesn't. What gives?
ANSWER: In some cases partitions are numbered differently under minix
and linux. This seems to correlate to the FDISK version you have used.
/dev/hd3 under minix may be /dev/hd2 under linux etc.
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.
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
fail.)
QUESTION: the mtools package on the root-disk 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 special file called "/dev/dosX", where X is A, B or
C. 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. 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. 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 ...
If this happens to you, you should run the fsck program to determine
to fix the inconsistencies in the file system. The syntax is:
fsck [-larvsm] device_name
You should first run it without any arguments, to assess the damage,
and then run it with the -r or (if you're feeling adventurous) -a
options to reapir the damage. The -a flag stands for automatic, which
means tath fsck won't bother to ask you for confirmation before it
fixes each inconsistency.
While the Linux system is in operation the disk buffers are forced out
to disk only every 30 seconds by the /bin/update program (if it were
done more frequently it would slow down the system). Before you halt,
powerdown, or reboot your system, you should use the 'sync' program to
manually write out any disk buffers to disk (some people think you
should do 3 syncs after each other, but that's superstition). Or, you
can log out 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: What is the "em" binary?
ANSWER: Em is micro-EMacs (probably version 3.10).
QUESTION: I seem to be unable to compile anythong 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
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.) You can obtain complete
sources to the libc.a library from the FTP sites, and compile your own
to make sure that you have the most up-to-date versions of all the
library routines.
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

265
Linux-0.11/docs/FAQv.txt Normal file
View File

@@ -0,0 +1,265 @@
head 1.1;
branch ;
access ;
symbols ;
locks tytso:1.1; strict;
comment @# @;
1.1
date 91.12.19.11.59.54; author tytso; state Exp;
branches ;
next ;
desc
@@
1.1
log
@Initial revision
@
text
@
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.
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 (ie not SCSI, ESDI), and the system must be ISA. Otherwise
the requirements seem relatively small: a 386 (SX, DX or any 486). The
current version (0.10) needs a colour screen adapter, but this is not
the case with the next version.
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: Does linux do paging? Can I have virtual memory on my small
machine?
ANSWER: Linux does use the 386 paging unit, but currently only for
memory management. No use of disks as expansion RAM. This is one of the
things that will be implemented sometime in the (far?) future. Linux
also uses the paging unit to share pages between several processes after
a fork: thus it needs less memory. However, almost all the user programs
available for linux are GNU software, which want gobs and gobs of
memory. This is the reason at least 4M is recommended: GNU cc (gcc)
simply won't run in less.
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
nic.funet.fi (128.214.6.100):
directory /pub/OS/Linux
Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
directory /pub/msdos/replace
tsx-11.mit.edu (18.172.1.2):
directory /pub/linux
ftp.eecs.umich.edu (141.212.99.7):
directory linux
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 "mailserver@@nic.funet.fi" with "help" in the body of the mail.
QUESTION: Is there a newsgroup or mailing-list about linux? Where can I
get my questions answered? How about bug-reports?
ANSWER: There is a mailing list set up at the address
'Linux-activists@@niksula.hut.fi'. To join, mail a request to
'Linux-activists-request@@niksula.hut.fi'. DO NOT mail "I want to
[un]subscribe" to the mailing-list, use the request-address.
Questions and bug-reports can be sent either to the mailing-list or to
"torvalds@@kruuna.helsinki.fi", depending on which you find more
appropriate.
QUESTION: I got the minix-demo, but it won't boot. Linux boots from
floppy. What's wrong?
ANSWER: You probably wrote the minix demo to a 1.44M disk, which (for
some unfathomable reason) doesn't work. The minix demo wants a 720kB or
1.2M disk.
QUESTION: The minix-demo boots all right, but doesn't seem to recognize
my second harddisk. What's up?
ANSWER: The minix-demo does support a second harddisk, but there are no
special files made for it, and the minix demo doesn't include the
"mknod" command. Mount the linux root-floppy, and use the devices on
that.
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 minix to examine
which of the partitions you used.
QUESTION: Minix 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.
QUESTION: I used the minix mkfs to make a filesystem on /dev/hd3 after
having checked that this was indeed the partition I had reserved. Minix
mounts the new partition ok, but linux doesn't. What gives?
ANSWER: In some cases partitions are numbered differently under minix
and linux. This seems to correlate to the FDISK version you have used.
/dev/hd3 under minix may be /dev/hd2 under linux etc.
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.
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
fail.)
QUESTION: the mtools package on the root-disk 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 or
C. 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. 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. 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 ...
I'm afraid that as long as there is no fsck for linux there is no way to
correct the matter (unless you have minix and can run minix fsck), and
the only thing to do is to reinstall the filesystem from scratch (ie do
a mkfs from the minix demodisk and reboot from the original
linux-floppy).
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: What is the "em" binary?
ANSWER: Em is micro-EMacs (probably version 3.10).
QUESTION: I seem to be unable to compile anythong 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
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.) You can obtain the newer
signal.c from the unistd.tar.Z file, but don't use the associated
sig_restore.c from there; the FTP sites should have a separate
sig_restore.c which is up to date. While you're at it, you should also
get an updated crt0.c file as well, and install your new crt0.o and
libc.a in /usr/lib.
(This answer will likely change in the near future, since there are
plans to change the format of the signal trampoline code yet again....
but for now, this should be an accurate description of how things stand
now.)
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
@

View File

@@ -0,0 +1,113 @@
LINUX INFORMATION SHEET
1. WHAT IS LINUX 0.11
LINUX 0.11 is a freely distributable UNIX clone. It is almost
fully System V compatible. 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.
Sorrily, it runs only on 386/486 AT-bus-machines. EISA will probably do
too, but you need an AT-Bus controller for your harddisk.
Version 0.11 is still a beta release, but it provides almost full
functionality. Various users have been able to compile bigger projects
like bison/flex by only changing the makefile to their needs, and these
tools are fully functional.
2. LINUX features
- System call compatible with V7 of the UNIX operating system
- Full multiprogramming (multiple programs can run at once)
- Memory paging with copy-on-write
- Demand loading of executables
- Page sharing of executables
- ANSI compliant C compiler (gcc)
- A complete set of compiler writing tools
(bison as yacc-replacement, flex as lex replacement)
- The gnu-born again shell (bash)
- Micro emacs
- most utilities you need for development
(cat, cp, kermit, ls, make, etc.)
- Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.)
- Currently 3 national keyboards: finnish/us/german
- Full source code (in C) for the OS is freely distributable
- Full source code of the tools can be gotten from many anonymous ftp sites
(It's almost completel the GNU project)
- Runs in protected mode on 386 and above
- Support for extended memory up to 16M on 386 and above
- RS-232 serial line support with terminal emulation, kermit, zmodem, etc.
- Supports the real time clock
3. HARDWARE REQUIRED
- A 386 or 486 machine that is an AT-bus-machine. EISA will probably do
too.
- An IDE hard disk is required to use this system.
- Both 5.25" and 3.5" diskettes are supported
- At least 2 megabytes of RAM is required for LINUX to be operational,
but gcc will only work from 4 MB on.
- Any video card will do
- Up to two serial lines are supported
- The real time clock is supported
4. PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.10
- The MTOOLS package (reading/writing to DOS)
- The complete GNU filetools (ls,cat,cp,mv,...)
- The GNU C compiler with GNU assembler,linker,ar,...
- bison
- flex
- rcs
- pmake (BSD 4.2 make)
- kermit
- Micro emacs
- less
- mkfs
- fsck
- mount/umount
5. LINUX BINARIES
The LINUX binaries (including all the tools) are available at three
anonymous FTP sites. These are:
nic.funet.fi:/pub/OS/Linux
tsx-11.mit.edu
tupac-amaru.informatik.rwth-aachen.de:/pub/msdos/replace
6. LEGAL STATUS OF LINUX
Although LINUX is supplied with the complete source code, it is
copyrighted software. But it is, opposite to MINIX available for free,
provided you obey to the rules specified in the LINUX copyright.
7. NEWS ABOUT LINUX
Since LINUX's introduction to the public there has been a rapidly
growing mailing list, "linux-activists@joker.cs.hut.fi". To subscribe
to this list, mail to "linux-activists-requests@joker.cs.hut.fi". If
the traffic in this lists increases further, there are plans to swap
(at least partially) over to comp.os.misc, so watch out for any LINUX
articles in this group. If you simply want to know whats the current
state of the art, do a "finger torvalds@kruuna.helsinki.fi", and you'll
get some information.
8. FUTURE PLANS
The major current project is bringing LINUX to a version number
greater than 1.0. It has also to undergo some (minor) revisions to be
compatible to the IEEE POSIX P1003.1 and P1003.2 standards. Various
people are currently working on
- math support/fp emulation in the kernel
- Page swapping (since paging is alreay implemented)
- A virtual filesystem layer
- STREAMS
If you want to join the developers, join the mailing list

View File

@@ -0,0 +1,206 @@
Using Linux v0.11
Linus Torvalds 08.12.91
NOTE: Users of 0.10, please check the "changed" list before using 0.11.
Booting linux
Linux-0.11 can easily be booted by getting the 2 files bootimage-0.11.Z
and rootimage-0.11.Z from the linux archive, uncompressing them and
writing them out to disks of the same size (ie 2 1.44M floppies or 2
1.2M floppies). Writing the disks is done with the "rawrite.exe" program
from dos, or with "dd" from unix. Linux is then booted simply by
inserting the bootdiskette in drive A, and rebooting the machine. If
everything goes well, linux will ask you to insert the root-disk after
loading the system. Hopefully linux will then correctly load the shell
executable, and leave you as root on the new system (prompt '# ').
Using it.
You can get a complete list of available commands by pressing <tab>
twice: the root-disk contains mostly setup-programs needed to install
the system on a harddisk. You can test them a bit, reading directories
etc.
In order to install linux on the harddisk, first check out your harddisk
by executing the command "fdisk" - it should show you all the partitions
available. If you have only 1 AT-harddisk, you should get a
errormessage, just ignore it. At my system fdisk reports the following:
/dev/hd1: 20476 blocks minix
/dev/hd2: 19975 blocks minix
/dev/hd3: 1020 blocks minix
/dev/hd4: 170 blocks active 16-bit DOS (>=32M)
/dev/hd6: 41641 blocks active minix
The partition type given (12-bit DOS, minix etc) doesn{t really mean
anything, unless it's a "extended partition", in which case you
shouldn't use that partition for anything: linux doesn't yet understand
them. When later using "mkfs" to make a linux file system, it won't
change the output of fdisk, so fdisk may well report "DOS", while in
fact you have made it a linux partition.
If fdisk doesn't print out anything but errors, linux is unable to read
your harddisk, and you are f**ked. Play around with the floppy version,
but you won't be able to do anything real.
Making a filesystem
In order to really use linux, you will have to make a filesystem on your
harddisk. This starts by deciding which partition you can use. Look
again at what fdisk reports, and try to figure out which of the
partitions you are using for DOS, OS/2 etc. /dev/hdX where X={1,2,3,4}
always refers to the first harddisk, X={6,7,8,9} always refers to the
second disk. /dev/hd0 and /dev/hd5 are special: they are all of the
drive, and mkfs will refuse to use them for a filesystem.
When you are certain you know which device points to which partition,
you make a filesystem on the partition of your choice by writing:
mkfs -c /dev/hdX blocks
where "-c" means that you want mkfs to check for errors, "dev/hdX" is
the free partition you intend to use for linux, and "blocks" is the
number of blocks fdisk reports for that particular partition. NOTE! mkfs
will overwrite the partition you selected, so be doubly (or triply) sure
that you don't mind that.
Note that when using the "-c" flag, mkfs will read through the entire
partition: this can take some time. If there are read errors, mkfs will
mark the particular block as bad, and continue: linux will also print a
little message "harddisk I/O error". After running mkfs these messages
should never occur again: if they do, your data may be corrupted.
Mounting the filesystem
After mkfs has exited, it's time to mount the file-system, and do the
necessary things to make it a root file system. Mount the new filesystem
on /user by writing:
cd /
mount /dev/hdX /user
If you get errors for this, mkfs failed, and there is probably something
seriously wrong.
After mounting the device, you want to move all the files on the current
floppy-root to the new fs. This can most easily be done by writing:
cd /user
for i in bin dev etc usr tmp floppy
do
cp +recursive +verbose /$i $i
done
sync
which will also tell you what it is doing (/bin/sh -> bin/sh etc).
After that, you should have a new filesystem that contains the bare
necessities to start hacking linux. Play around some more, and exit
linux by writing "logout or exit". This should result in
child 4 died with error code 0000
#
Do a couple of syncs (3 is a magic number), and reboot the machine.
ALWAYS remember to sync before rebooting: terrible things happen if you
don't.
Using the harddisk as root
Once you have happily made a new root, you will want to boot up with it.
This is done by changing a word at offset 508 in the boot-image. The
word (in 386-order, ie low byte first) tells the system which device to
use as root: it is initially 0, which means that we want to use a floppy
of the same type as the boot-disk (and this is the reason that you may
not use a 360kB boot-disk even though the system fits on one: it has to
be the same type as the root-diskette).
In order to use the harddisk as root, this value has to be changed to
point to the correct device. Harddisks have a major number of 3 under
linux, and the minor nr is the same as the number X in /dev/hdX. The
complete device number is then calculated with
DEV_NO = (major<<8)+minor
or alternatively major*256+minor. Thus /dev/hd1 is (3<<8)+1 = 0x301,
/dev/hd6 = 0x0306 etc. Assuming the partition you made into the new root
was /dev/hd2, you will have to write 0x0302 into the boot-image. That
is, you should change the 508th byte in the image to 0x02, and the 509th
byte to 0x03. There is a sample program for this in some of the older
INSTALL-notes, if you don't understand what it's all about.
Ok, I got the root on hd, what now?
As you have probably noticed, you cannot get very far with the binaries
found on the original root-diskette. So the first thing you want to do
is to import some new binaries. To do this you need to tell linux what
kind of floppies you have, as that's the easiest way to import things.
As with harddisk, floppies have device numbers, but this time major = 2
instead of 3. The minor number is not as easy: it's a composite that
tells which drive (A, B, C or D) and what type of drive (360kB, 1.2M,
1.44M etc). The formula is 'minor = type*4+nr', where nr is 0-3 for A-D,
and type is 2 for 1.2M disks, and 7 for 1.44M disks. There are other
types, but these should suffice for now.
Thus if you have a 1.2M A-drive, and want to call it "floppy0", you have
to tell linux so. This is done with the "mknod" command. mknod takes 4
paramters: the unix name of the device, a "b" or a "c" depending on
whether it's a Block of Character device, and the major and minor
numbers. Thus to make "floppy0" a 1.2M A-drive, you write:
mknod /dev/floppy0 b 2 8
b is for Block-device, the 2 is for floppy, and the 8 is 4*2+0, where
the 2 is 1.2M-drive and the 0 is drive A. Likewise to make a "floppy1"
device that is a 1.44M drive in B, you write:
mknod /dev/floppy1 b 2 29
where 29 = 4*7 + 1. There are a couple of standard names, for users
that are used to minix (major, minor in parentheses): /dev/PS0 is a
1.44M in A (2,28), /dev/PS1 a 1.44M in B (2,29), /dev/at0 is a 1.2M in A
(2,8), /dev/at1 is a 1.2M in B (2,9). Use mknod to make those that fit
your computer.
After you have made these special block devices, you can now read a
floppy under linux. The easiest way to import things into linux is by
writing a tar-file to a floppy with rawrite.exe, and then using:
tar xvf /dev/floppy0
to untar it under linux. This way you can get the gcc binaries etc
available from the linux-carrying sites.
Changes from 0.10:
- /bin/update is no longer automatically executed upon bootup: instead
the file /etc/rc is evaluated by the shell. This file can then start the
update process, mount andy needed filesystems, possibly fsck'ing them
first. A minimal /etc/rc looks like this:
/bin/update &
> /etc/mtab
echo " Ok."
- init() restarts the shell every time it is exited: logout from the
login shell results in a "child xxx died with error code yyy", a sync
and then a new shell as root.
- floppies work a lot better than in 0.10. Even using two floppies at
the same time seems to work out ok. Reading big chunks at a time is also
faster then in 0.10 (I think).
- harddisk errors are handled better. Use the "-c" option in mkfs to map
out all errors.
- linux accepts most video-cards: harcules, MDA, CGA etc seem to work.
- ^G beeps on the console, so command completion under bash etc will
notify of errors.
- sticky directories, corrected handling of uid/gid bits, and better
handling of protections when not root. Most of these won't be noticeable
until we get a init/login.