add directory Linux-0.10

This commit is contained in:
gohigh
2024-02-19 00:21:00 -05:00
parent ee280d88f9
commit ca9fe7ce11
22 changed files with 1476 additions and 0 deletions

256
Linux-0.10/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

265
Linux-0.10/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,145 @@
Warning: I have personally not done this the hard way, so I don't know
what problems could surface. In general, this version is still meant
for people with minix: they are more used to the system, and can do some
things that DOS-based persons cannot. If you have only DOS, expect some
troubles. As the version number suggests, this is still not the final
product.
This is a "fast hack", meant as a minimal guide to what you must do.
I'll expand this as soon as people tell me what they have problems with
etc etc. If somebody who has successfully installed the system wants to
write something better, I'd be delighted. This guide stinks to high
heaven.
Installing Linux-0.10 on your system
There are 5 major steps in installing linux on your system:
1 - BACK UP ANY IMPORTANT DATA. Linux accesses your hardware directly,
and if your hardware differs from mine, you could be in for a nasty
surprise. Doublecheck that your hardware is compatible: AT style
harddisk, VGA controller. (If somebody has EGA, please tell me if the
screen driver should happen to work)
2 - Make a file-system on your harddisk. This is easy if you have
minix, but if you haven't got minix, you'll have to get the minix
demo-disk from somewhere (plains.nodak.edu is one place), and use that.
There should be a manual accompanying the demo-disk, and you had better
read that carefully. Although this version of linux will boot up
without minix, a knowledge of minix would help. Especially if you have
never done any unix work, you'll be very confused.
Making a filesystem means getting a empty partition (with DOS fdisk or
similar), and using the 'mkfs /dev/hdX nnn' command to write out a empty
file-system.
3 - copy the diskimages to two floppies. Again, under minix (or any
unix), this is easy, as you can just do a simple 'dd' to a floppy, but
from within MS-DOS this might be a bit trickier. 'debug' should be able
to write diskettes directly, or you could get the sources to "raw-write"
from the same place as you got the minix demo disk, and modify them to
write out any disk image (or do they do that already?).
NOTE! The floppies MUST be of the same type: even though the boot-image
will fit nicely on a 360kB floppy, you have to write it to the same type
of floppy as the root-image. That means a 1.2M or 1.44M floppy. The
reason is that the floppy-type is determined at boot-time from the
boot-floppy. Thus the same binary works on both 3.5" and 5.25" drives.
4 - boot up from floppy. This should be obvious. Having a floppy as
root-device isn't very fast (especially on a machine with less than 6MB
total ram -> small buffer cache), but it works (I hope). Test the
programs on the root-floppy (cat mkdir etc).
5 - Mount the harddisk partition (I do it on /user: ie
'mount /dev/hdX /user'), and copy the file system over to the new
partition. The following is a example of how to do this:
$ cd /user
$ mkdir usr
$ for i in bin etc usr/bin usr/root mtools
> do
> mkdir $i
> cp `ls -A /$i` $i
> done
$ mkdir dev
$ cd dev
$ for i in 0 1 2 3 4 5 6 7 8 9
> do
> mknod 'hd'$i b 3 $i
> done
$ mknod tty c 5 0
$ mknod tty0 c 4 0
$ mknod tty1 c 4 1
$ mknod tty2 c 4 2
You should now have a filesystem you could boot from. Play around a bit,
try to get aquainted with the new system. Log out when you've had
enough.
6 - Changing the boot-diskette use your new harddisk partition as root.
The root device to be used for linux is encoded in a word at offset 508
in the boot image. Normally this is 0, meaning that the root is to be
the same type of floppy as was used in the boot process. This can be
changed to whatever you like.
Use a short program like the one at the end to change the word (I assume
everybody has access to some kind of C compiler, be it under dos or
unix). You can then write out the new bootdisk, and boot from it, now
using the harddisk as root (much faster). Once you have successfully
done that you might want to install additional programs (gcc etc) by
reading them from a dos-floppy with 'mcopy'.
Linus (torvalds@kruuna.helsinki.fi)
------ example program: use 'a.out < oldboot > newboot' ----
#include <unistd.h>
char tmp[512];
void main(void)
{
int i;
if (512 != read(0,tmp,512))
exit(1);
if (0xAA55 != *((unsigned short *)(tmp+510)))
exit(2);
*((unsigned short *)(tmp+508)) = NEW_DEV;
if (512 != write(1,tmp,512))
exit(3);
while ((i=read(0,tmp,512)) > 0)
if (i != write(1,tmp,i))
exit(4);
exit(0);
}
-------
Devices:
Harddisks:
0x301 - /dev/hd1 - first partition on first drive
...
0x304 - /dev/hd2 - fourth partition on first drive
0x306 - /dev/hd1 - first partition on second drive
...
0x309 - /dev/hd2 - fourth partition on second drive
0x300 - /dev/hd0 - the whole first drive. BE CAREFUL
0x305 - /dev/hd5 - the whole second drive. BE CAREFUL
Floppies:
0x208 - 1.2M in A
0x209 - 1.2M in B
0x21C - 1.44M in A
0x21D - 1.44M in B

View File

@@ -0,0 +1,12 @@
This tar file contains new disk images for Linux 0.10 boot floppies
bootimage.Z Contains the Linux 0.10 boot floppy image, with the
patch to buffers.c included to avoid disk corruption
problems when two processes are thrashing the buffer
cache.
bootimage-ncaps.Z
As above, except it also includes a patch to keyboard.S
so that the caps lock key acts as a control key.
(You never need a caps lock key when you're using Unix
anyway :-)