add directory Linux-0.98
This commit is contained in:
15
Linux-0.98/sources/libs/tvgalib-1.0.README
Normal file
15
Linux-0.98/sources/libs/tvgalib-1.0.README
Normal file
@@ -0,0 +1,15 @@
|
||||
This is the first public release of the Trident 8900C SVGA library,
|
||||
consisting of a modified version of Tommy Frendson's vgalib-1.0.tar.Z
|
||||
package.
|
||||
|
||||
This has been tested on a number of Trident 8900C cards with 256k,
|
||||
512k and 1M, without problems. If you do encounter any please let
|
||||
me know, it's probably my fault and not Tommy's so don't bug him.
|
||||
|
||||
Email to Toomas_Losin@mindlink.bc.ca
|
||||
|
||||
The library can be used as a drop in replacement for vgalib, and
|
||||
allows access to all resolutions supported by the trident card (ie. up
|
||||
to 1024x768x256).
|
||||
|
||||
uploaded by pab@maths.bath.ac.uk
|
||||
256
Linux-0.98/sources/sbin/cdrom/README.CDROM-06a
Normal file
256
Linux-0.98/sources/sbin/cdrom/README.CDROM-06a
Normal file
@@ -0,0 +1,256 @@
|
||||
|
||||
ANNOUNCING - CDROM support for linux (beta 0.6a).
|
||||
|
||||
CDROM support for linux is now ready for beta testing. You
|
||||
must have a CDROM drive, a SCSI adapter and a ISO9660 format disc
|
||||
before this will be of any use to you. You will also need to have the
|
||||
source tree for linux 0.98pl3 kernel sources available. This
|
||||
filesystem will not work with a pre pl3 kernel, because one of the arguments
|
||||
to the iget function changed in pl3, and a new include file is now required.
|
||||
|
||||
With the patch level 0.98 kernel, the scsi cdrom support is
|
||||
now in the distribution, so there are no longer any special scsi
|
||||
patches for the cdrom. The filesystem is not yet a part of the kernel
|
||||
because it is eventually envisioned (by Linus) that this will be
|
||||
installable at run time once the installable driver/filesystem code is
|
||||
working in the kernel. The door lock/unlock functions are now part of
|
||||
the stock scsi drivers, so these functions have been removed from the
|
||||
filesystem.
|
||||
|
||||
To install, unpack the archive in your linux kernel directory
|
||||
(usually /usr/src. This will add a number of new files to the linux
|
||||
source tree). You will then need to apply the patches found in cdrom.diff
|
||||
with the following command:
|
||||
|
||||
patch -p0 < cdrom.diff
|
||||
|
||||
and then build the kernel. Once you have booted the system, you will need
|
||||
to add a device with major=11, minor=0 for the first cdrom drive, minor=1 for
|
||||
the second and so forth. You can use a command something like:
|
||||
|
||||
mknod -m 500 /dev/cdrom b 11 0
|
||||
|
||||
To mount a disc, use a command something like:
|
||||
|
||||
mount -t iso9660 /dev/cdrom /mnt
|
||||
|
||||
I would be interested in hearing about any successes or failures with this
|
||||
code.
|
||||
|
||||
CHANGES SINCE 0.5:
|
||||
|
||||
Door locking functions removed from filesystem, since those
|
||||
operations are now handled automatically by the scsi code.
|
||||
|
||||
In inode.c, set a value for s->s_blocksize, so that execve can
|
||||
execute binaries off of a CDROM.
|
||||
|
||||
CHANGES SINCE 0.4:
|
||||
|
||||
No functional changes to filesystem, scsi code is now part of
|
||||
distribution kernel as of pl5.
|
||||
|
||||
CHANGES SINCE 0.3:
|
||||
|
||||
The main difference is that the filesystem has been updated to
|
||||
work with 0.97pl4.
|
||||
|
||||
Also, one new mount option has been added, "norock", which will
|
||||
inhibit the rock ridge protocol.
|
||||
|
||||
CHANGES SINCE 0.2:
|
||||
|
||||
Support has been added for the older (and now obsolete) variant
|
||||
of the iso9660 filesystem, which is known as High Sierra. There are apparently
|
||||
a number of discs still out there that are in this format, and High Sierra
|
||||
is actually nearly identical to iso9660, so I added support.
|
||||
|
||||
Mount options have been added which can disable filename mapping,
|
||||
and control the conversion of text files. The options are
|
||||
|
||||
map=off
|
||||
map=normal
|
||||
conv=binary
|
||||
conv=text
|
||||
conv=mtext
|
||||
|
||||
The effect that these options have is described later on in this document.
|
||||
|
||||
One small scsi error was fixed which would result in the driver
|
||||
hanging if there were an unusual error of any kind.
|
||||
|
||||
CHANGES SINCE 0.1:
|
||||
|
||||
Error detection/correction have been improved. You should not
|
||||
get any more multiply queued commands, and I increased the timeout
|
||||
period such that the drive no longer times out. My drive is fairly
|
||||
fast, so other drives may have timeout problems. I need to know this
|
||||
so that I can increase the timeout period to a workable value for all
|
||||
drives. The error detection/correction should be pretty solid now.
|
||||
|
||||
Support for Rock Ridge extensions has been added to the filesystem.
|
||||
This means:
|
||||
|
||||
* Longer filenames (My implementation limits it to 256 chars).
|
||||
* Mixed case filenames, Normal unix syntax availible.
|
||||
* Files have correct modes, number of links, and uid/gid
|
||||
* Separate times for atime, mtime, and ctime.
|
||||
* Symbolic links.
|
||||
* Block and Character devices (Untested).
|
||||
* Deep directories (Untested).
|
||||
|
||||
I was able to implement this because Adam Richter was kind
|
||||
enough to lend me the Andrew Toolkit disc, which has the Rock Ridge
|
||||
extensions. I should point out that the block and character devices
|
||||
and the deep directories have not been tested, since they do not
|
||||
appear on the disc that I have. If anyone has some pre-mastering software,
|
||||
and could throw together a *very* small volume (i.e. one floppy disc)
|
||||
that has some of these things, I could use the floppy to test and debug
|
||||
these features.
|
||||
|
||||
A single element cache was added that sits between the readdir
|
||||
function and the lookup function. Many programs that traverse the
|
||||
directory tree (i.e. ls) also need to know the inode number and find
|
||||
information about the file from the inode table. For the CDROM this
|
||||
is kind of silly, since all of the information is in one place, but we
|
||||
have to make it look kind of like unix. Thus the readdir function
|
||||
returns a name, and then we do a stat, given that name and have to
|
||||
search the same directory again for the file that we just extracted in
|
||||
readdir. On the Andrew toolkit disc, there is one directory that
|
||||
contains about 700 files and is nearly 80kb long - doing an ls -l in
|
||||
that directory takes several minutes, because each lookup has to
|
||||
search the directory. Since it turns out that we often call lookup
|
||||
just after we read the directory, I added a one element cache to save
|
||||
enough information so as to eliminate the need to search the directory
|
||||
again.
|
||||
|
||||
Scatter-gather for the cdrom is now enabled. This should lead
|
||||
to slightly faster I/O.
|
||||
|
||||
|
||||
KNOWN PROBLEMS:
|
||||
|
||||
None.
|
||||
|
||||
********************************************
|
||||
|
||||
Some general comments are in order:
|
||||
|
||||
On some drives, there is a feature where the drive can be
|
||||
locked under software control to essentially deactivate the eject
|
||||
button. The iso9660 filesystem activates this feature on drives so
|
||||
equipt, so you may be unable to remove the disc while it is mounted.
|
||||
The eject button will be re-enabled once the disc is dismounted.
|
||||
|
||||
Since it is impossible to corrupt a CDROM, it is unlikely that
|
||||
a bug in the iso9660 filesystem will lead to data corruption on your
|
||||
hard disk, with the possible exception of files copied from the CDROM
|
||||
to the hard disk. Nonetheless, it is a good idea to have a backup or
|
||||
your hard disk, just in case. Then again, I really did not need to
|
||||
say that, did I :-)
|
||||
|
||||
There were several bugs in error handling in the scsi code.
|
||||
Previously when a command failed, the higher level drivers would not
|
||||
receive the correct sense data from the failed command, or would misinterpret
|
||||
the data that they did get. These has been fixed.
|
||||
|
||||
Up until now, SCSI devices were either discs or tapes (and the
|
||||
tapes have not been fully implemented). CDROM drives are now a third
|
||||
category. There are several reasons why we do not want to treat then
|
||||
the same as a regular hard disk, and it was cleaner to make a third
|
||||
type of device. One reason was that.....
|
||||
|
||||
The CDROM has a sector size of 2048 bytes, but the buffer
|
||||
cache has buffer sizes of 1024 bytes. The SCSI high level driver for
|
||||
the cdrom must perform buffering of all of the I/O in order to satisfy
|
||||
the request. At some point in the near future support will be present
|
||||
in the kernel for buffers in the buffer cache which are != 1024 bytes,
|
||||
at which time this code will be remove.
|
||||
|
||||
Both the ISO 9660 filesystem and the High Sierra are
|
||||
supported. The High Sierra format is just an earlier version of
|
||||
ISO9660, but there are minor differences between the two. Sometimes
|
||||
people use the two names interchangably, but nearly all newer discs
|
||||
are the ISO9660 format.
|
||||
|
||||
The inode numbers for files are essentially just the byte
|
||||
offset of the beginning of the directory record from the start of the
|
||||
disc. A disc can only hold about 660 MB, so the inode numbers will
|
||||
be somewhere between about 60K and 660M. Any tool that performs
|
||||
a stat() on the CDROM obviously needs to be recompiled if it was
|
||||
compiled before 32 bit inode support was in the kernel.
|
||||
|
||||
A number of ioctl functions have been provided, some of which
|
||||
are only of use when trying to play an audio disc. An attempt has
|
||||
been made to make the ioctls compatible with the ioctls on a Sun, but
|
||||
we have been unable to get any of the audio functions to work. My
|
||||
NEC drive and David's Sony reject all of these commands, and we currently
|
||||
believe that both of these drives implement the audio functions using
|
||||
vendor-specific command codes rather than the universal ones specified
|
||||
in the SCSI-II specifications.
|
||||
|
||||
The filesystem has been tested under a number of conditions,
|
||||
and has proved to be quite reliable so far. This filesystem is
|
||||
considerably simpler than a read/write filesystem (Files are
|
||||
contiguous, so no file allocation tables need to be maintained, there
|
||||
is no free space map, and we do not need to know how to rename, create
|
||||
or delete files).
|
||||
|
||||
Text files on a CDROM can have several types of line
|
||||
terminators. Lines can be terminated by LF, CRLF, or a CR. The
|
||||
filesystem scans the first 1024 bytes of the file, searching for out
|
||||
of band characters (i.e. > 0x80 or some control characters), and if it
|
||||
finds these it assumes the the file is a binary format. If there are
|
||||
no out of band characters the filesystem will assume that the file is
|
||||
a text file (keeping track of whether the lines are terminated by a
|
||||
CR, CRLF, or LF), and automatically converts the line terminators to a
|
||||
LF, which is the unix standard. In the case of CRLF termination, the
|
||||
CR is converted to a ' '. The heuristic can be explicitly overridden
|
||||
with the conv= mount option, which tells the filesystem that *all* files
|
||||
on the volume are the specified type.
|
||||
|
||||
Rock Ridge extensions can be inhibited with the "norock" mount
|
||||
option. This could be of use if you have scripts that work with the
|
||||
non-Rock Ridge filenames, or if you encounter a bug in the filesystem
|
||||
which really screws you up.
|
||||
|
||||
|
||||
***************************************
|
||||
***************************************
|
||||
|
||||
The remaining comments *only* apply to discs *without* the Rock Ridge
|
||||
extensions:
|
||||
|
||||
The find command does not work without the -noleaf switch.
|
||||
The reason for this is that the number of links for each directory file
|
||||
is not easily obtainable, so it is set to 2. The default behavior for
|
||||
the find program is to look for (i_links-2) subdirectories in each
|
||||
directory, and it then assumes that the rest are regular files. The
|
||||
-noleaf switch disables this optimization.
|
||||
|
||||
The filesystem currently has the execute permission set for
|
||||
any non-directory file that does not have a period in its name. This
|
||||
is a crude assumption for now, but it kind of works. There is not an
|
||||
easy way of telling whether a file should be executable or not.
|
||||
Theoretically it is possible to read the file itself and check for a
|
||||
magic number, but this would considerably degrade performance.
|
||||
|
||||
The filesystem does not support block or character devices,
|
||||
fifos, or symbolic links. Also, the setuid bit is never set for any
|
||||
program. The main reason for this is that there is no information in
|
||||
the directory entry itself which could be used to indicate these
|
||||
special types of files.
|
||||
|
||||
Filenames under ISO9660 are normally all upper case on the
|
||||
disc but the filesystem maps these to all lower case. The filenames
|
||||
on the disc also have a version number (like VMS) which appears at the
|
||||
end of the filename, and is separated from the rest of the filename by
|
||||
a ';' character. The filesystem strips the version numbers from the
|
||||
filename if the version number is 1, and replaces the ';' by a '.' if
|
||||
the version number is >1. The mount option map=off will disable all
|
||||
of the name mapping, and when this is in effect, all filenames will be
|
||||
in upper case, and the semicolons and version numbers will always appear.
|
||||
|
||||
eric@tantalus.nrl.navy.mil
|
||||
ericy@gnu.ai.mit.edu
|
||||
|
||||
260
Linux-0.98/sources/sbin/cdrom/README.CDROM-98pl4
Normal file
260
Linux-0.98/sources/sbin/cdrom/README.CDROM-98pl4
Normal file
@@ -0,0 +1,260 @@
|
||||
|
||||
ANNOUNCING - CDROM support for linux (beta 0.7).
|
||||
|
||||
CDROM support for linux is now ready for beta testing. You
|
||||
must have a CDROM drive, a SCSI adapter and a ISO9660 format disc
|
||||
before this will be of any use to you. You will also need to have the
|
||||
source tree for linux 0.98pl4 kernel sources available. This
|
||||
filesystem will not work with a pre pl4 kernel, because one of the arguments
|
||||
to the iget function changed in pl4, and a new include file is now required.
|
||||
|
||||
With the patch level 0.98 kernel, the scsi cdrom support is
|
||||
now in the distribution, so there are no longer any special scsi
|
||||
patches for the cdrom. The filesystem is not yet a part of the kernel
|
||||
because it is eventually envisioned (by Linus) that this will be
|
||||
installable at run time once the installable driver/filesystem code is
|
||||
working in the kernel. The door lock/unlock functions are now part of
|
||||
the stock scsi drivers, so these functions have been removed from the
|
||||
filesystem.
|
||||
|
||||
To install, unpack the archive in your linux kernel directory
|
||||
(usually /usr/src. This will add a number of new files to the linux
|
||||
source tree). You will then need to apply the patches found in cdrom.diff
|
||||
with the following command:
|
||||
|
||||
patch -p0 < cdrom.diff
|
||||
|
||||
and then build the kernel. Once you have booted the system, you will need
|
||||
to add a device with major=11, minor=0 for the first cdrom drive, minor=1 for
|
||||
the second and so forth. You can use a command something like:
|
||||
|
||||
mknod -m 500 /dev/cdrom b 11 0
|
||||
|
||||
To mount a disc, use a command something like:
|
||||
|
||||
mount -t iso9660 /dev/cdrom /mnt
|
||||
|
||||
I would be interested in hearing about any successes or failures with this
|
||||
code.
|
||||
|
||||
CHANGES SINCE 0.6:
|
||||
|
||||
Various minor changes to mirror changes in the kernel as a whole.
|
||||
|
||||
CHANGES SINCE 0.5:
|
||||
|
||||
Door locking functions removed from filesystem, since those
|
||||
operations are now handled automatically by the scsi code.
|
||||
|
||||
In inode.c, set a value for s->s_blocksize, so that execve can
|
||||
execute binaries off of a CDROM.
|
||||
|
||||
CHANGES SINCE 0.4:
|
||||
|
||||
No functional changes to filesystem, scsi code is now part of
|
||||
distribution kernel as of pl5.
|
||||
|
||||
CHANGES SINCE 0.3:
|
||||
|
||||
The main difference is that the filesystem has been updated to
|
||||
work with 0.97pl4.
|
||||
|
||||
Also, one new mount option has been added, "norock", which will
|
||||
inhibit the rock ridge protocol.
|
||||
|
||||
CHANGES SINCE 0.2:
|
||||
|
||||
Support has been added for the older (and now obsolete) variant
|
||||
of the iso9660 filesystem, which is known as High Sierra. There are apparently
|
||||
a number of discs still out there that are in this format, and High Sierra
|
||||
is actually nearly identical to iso9660, so I added support.
|
||||
|
||||
Mount options have been added which can disable filename mapping,
|
||||
and control the conversion of text files. The options are
|
||||
|
||||
map=off
|
||||
map=normal
|
||||
conv=binary
|
||||
conv=text
|
||||
conv=mtext
|
||||
|
||||
The effect that these options have is described later on in this document.
|
||||
|
||||
One small scsi error was fixed which would result in the driver
|
||||
hanging if there were an unusual error of any kind.
|
||||
|
||||
CHANGES SINCE 0.1:
|
||||
|
||||
Error detection/correction have been improved. You should not
|
||||
get any more multiply queued commands, and I increased the timeout
|
||||
period such that the drive no longer times out. My drive is fairly
|
||||
fast, so other drives may have timeout problems. I need to know this
|
||||
so that I can increase the timeout period to a workable value for all
|
||||
drives. The error detection/correction should be pretty solid now.
|
||||
|
||||
Support for Rock Ridge extensions has been added to the filesystem.
|
||||
This means:
|
||||
|
||||
* Longer filenames (My implementation limits it to 256 chars).
|
||||
* Mixed case filenames, Normal unix syntax availible.
|
||||
* Files have correct modes, number of links, and uid/gid
|
||||
* Separate times for atime, mtime, and ctime.
|
||||
* Symbolic links.
|
||||
* Block and Character devices (Untested).
|
||||
* Deep directories (Untested).
|
||||
|
||||
I was able to implement this because Adam Richter was kind
|
||||
enough to lend me the Andrew Toolkit disc, which has the Rock Ridge
|
||||
extensions. I should point out that the block and character devices
|
||||
and the deep directories have not been tested, since they do not
|
||||
appear on the disc that I have. If anyone has some pre-mastering software,
|
||||
and could throw together a *very* small volume (i.e. one floppy disc)
|
||||
that has some of these things, I could use the floppy to test and debug
|
||||
these features.
|
||||
|
||||
A single element cache was added that sits between the readdir
|
||||
function and the lookup function. Many programs that traverse the
|
||||
directory tree (i.e. ls) also need to know the inode number and find
|
||||
information about the file from the inode table. For the CDROM this
|
||||
is kind of silly, since all of the information is in one place, but we
|
||||
have to make it look kind of like unix. Thus the readdir function
|
||||
returns a name, and then we do a stat, given that name and have to
|
||||
search the same directory again for the file that we just extracted in
|
||||
readdir. On the Andrew toolkit disc, there is one directory that
|
||||
contains about 700 files and is nearly 80kb long - doing an ls -l in
|
||||
that directory takes several minutes, because each lookup has to
|
||||
search the directory. Since it turns out that we often call lookup
|
||||
just after we read the directory, I added a one element cache to save
|
||||
enough information so as to eliminate the need to search the directory
|
||||
again.
|
||||
|
||||
Scatter-gather for the cdrom is now enabled. This should lead
|
||||
to slightly faster I/O.
|
||||
|
||||
|
||||
KNOWN PROBLEMS:
|
||||
|
||||
None.
|
||||
|
||||
********************************************
|
||||
|
||||
Some general comments are in order:
|
||||
|
||||
On some drives, there is a feature where the drive can be
|
||||
locked under software control to essentially deactivate the eject
|
||||
button. The iso9660 filesystem activates this feature on drives so
|
||||
equipt, so you may be unable to remove the disc while it is mounted.
|
||||
The eject button will be re-enabled once the disc is dismounted.
|
||||
|
||||
Since it is impossible to corrupt a CDROM, it is unlikely that
|
||||
a bug in the iso9660 filesystem will lead to data corruption on your
|
||||
hard disk, with the possible exception of files copied from the CDROM
|
||||
to the hard disk. Nonetheless, it is a good idea to have a backup or
|
||||
your hard disk, just in case. Then again, I really did not need to
|
||||
say that, did I :-)
|
||||
|
||||
There were several bugs in error handling in the scsi code.
|
||||
Previously when a command failed, the higher level drivers would not
|
||||
receive the correct sense data from the failed command, or would misinterpret
|
||||
the data that they did get. These has been fixed.
|
||||
|
||||
Up until now, SCSI devices were either discs or tapes (and the
|
||||
tapes have not been fully implemented). CDROM drives are now a third
|
||||
category. There are several reasons why we do not want to treat then
|
||||
the same as a regular hard disk, and it was cleaner to make a third
|
||||
type of device. One reason was that.....
|
||||
|
||||
The CDROM has a sector size of 2048 bytes, but the buffer
|
||||
cache has buffer sizes of 1024 bytes. The SCSI high level driver for
|
||||
the cdrom must perform buffering of all of the I/O in order to satisfy
|
||||
the request. At some point in the near future support will be present
|
||||
in the kernel for buffers in the buffer cache which are != 1024 bytes,
|
||||
at which time this code will be remove.
|
||||
|
||||
Both the ISO 9660 filesystem and the High Sierra are
|
||||
supported. The High Sierra format is just an earlier version of
|
||||
ISO9660, but there are minor differences between the two. Sometimes
|
||||
people use the two names interchangably, but nearly all newer discs
|
||||
are the ISO9660 format.
|
||||
|
||||
The inode numbers for files are essentially just the byte
|
||||
offset of the beginning of the directory record from the start of the
|
||||
disc. A disc can only hold about 660 MB, so the inode numbers will
|
||||
be somewhere between about 60K and 660M. Any tool that performs
|
||||
a stat() on the CDROM obviously needs to be recompiled if it was
|
||||
compiled before 32 bit inode support was in the kernel.
|
||||
|
||||
A number of ioctl functions have been provided, some of which
|
||||
are only of use when trying to play an audio disc. An attempt has
|
||||
been made to make the ioctls compatible with the ioctls on a Sun, but
|
||||
we have been unable to get any of the audio functions to work. My
|
||||
NEC drive and David's Sony reject all of these commands, and we currently
|
||||
believe that both of these drives implement the audio functions using
|
||||
vendor-specific command codes rather than the universal ones specified
|
||||
in the SCSI-II specifications.
|
||||
|
||||
The filesystem has been tested under a number of conditions,
|
||||
and has proved to be quite reliable so far. This filesystem is
|
||||
considerably simpler than a read/write filesystem (Files are
|
||||
contiguous, so no file allocation tables need to be maintained, there
|
||||
is no free space map, and we do not need to know how to rename, create
|
||||
or delete files).
|
||||
|
||||
Text files on a CDROM can have several types of line
|
||||
terminators. Lines can be terminated by LF, CRLF, or a CR. The
|
||||
filesystem scans the first 1024 bytes of the file, searching for out
|
||||
of band characters (i.e. > 0x80 or some control characters), and if it
|
||||
finds these it assumes the the file is a binary format. If there are
|
||||
no out of band characters the filesystem will assume that the file is
|
||||
a text file (keeping track of whether the lines are terminated by a
|
||||
CR, CRLF, or LF), and automatically converts the line terminators to a
|
||||
LF, which is the unix standard. In the case of CRLF termination, the
|
||||
CR is converted to a ' '. The heuristic can be explicitly overridden
|
||||
with the conv= mount option, which tells the filesystem that *all* files
|
||||
on the volume are the specified type.
|
||||
|
||||
Rock Ridge extensions can be inhibited with the "norock" mount
|
||||
option. This could be of use if you have scripts that work with the
|
||||
non-Rock Ridge filenames, or if you encounter a bug in the filesystem
|
||||
which really screws you up.
|
||||
|
||||
|
||||
***************************************
|
||||
***************************************
|
||||
|
||||
The remaining comments *only* apply to discs *without* the Rock Ridge
|
||||
extensions:
|
||||
|
||||
The find command does not work without the -noleaf switch.
|
||||
The reason for this is that the number of links for each directory file
|
||||
is not easily obtainable, so it is set to 2. The default behavior for
|
||||
the find program is to look for (i_links-2) subdirectories in each
|
||||
directory, and it then assumes that the rest are regular files. The
|
||||
-noleaf switch disables this optimization.
|
||||
|
||||
The filesystem currently has the execute permission set for
|
||||
any non-directory file that does not have a period in its name. This
|
||||
is a crude assumption for now, but it kind of works. There is not an
|
||||
easy way of telling whether a file should be executable or not.
|
||||
Theoretically it is possible to read the file itself and check for a
|
||||
magic number, but this would considerably degrade performance.
|
||||
|
||||
The filesystem does not support block or character devices,
|
||||
fifos, or symbolic links. Also, the setuid bit is never set for any
|
||||
program. The main reason for this is that there is no information in
|
||||
the directory entry itself which could be used to indicate these
|
||||
special types of files.
|
||||
|
||||
Filenames under ISO9660 are normally all upper case on the
|
||||
disc but the filesystem maps these to all lower case. The filenames
|
||||
on the disc also have a version number (like VMS) which appears at the
|
||||
end of the filename, and is separated from the rest of the filename by
|
||||
a ';' character. The filesystem strips the version numbers from the
|
||||
filename if the version number is 1, and replaces the ';' by a '.' if
|
||||
the version number is >1. The mount option map=off will disable all
|
||||
of the name mapping, and when this is in effect, all filenames will be
|
||||
in upper case, and the semicolons and version numbers will always appear.
|
||||
|
||||
eric@tantalus.nrl.navy.mil
|
||||
ericy@gnu.ai.mit.edu
|
||||
|
||||
174
Linux-0.98/sources/sbin/cdrom/README.CDROM-98pl6
Normal file
174
Linux-0.98/sources/sbin/cdrom/README.CDROM-98pl6
Normal file
@@ -0,0 +1,174 @@
|
||||
|
||||
CDROM support for linux.
|
||||
|
||||
Starting with the 0.98.6 kernel, the isofs filesystem is now
|
||||
part of the official distribution. The filesystem is not compiled
|
||||
into the kernel by default, however. In order to use it, you
|
||||
will need to edit the file include/linux/config.h, and go down towards
|
||||
the bottom, and look for a line like:
|
||||
|
||||
#undef ISO9660_FS
|
||||
|
||||
change this to:
|
||||
|
||||
#define ISO9660_FS
|
||||
|
||||
and then build the kernel in the usual fashion, and you should be all
|
||||
set. You must have a CDROM drive, a SCSI adapter and a ISO9660 format
|
||||
disc before this will be of any use to you.
|
||||
|
||||
Once you have booted the system, you will need to add a device
|
||||
with major=11, minor=0 for the first cdrom drive, minor=1 for the
|
||||
second and so forth. You can use a command something like:
|
||||
|
||||
mknod -m 500 /dev/cdrom b 11 0
|
||||
|
||||
To mount a disc, use a command something like:
|
||||
|
||||
mount -t iso9660 /dev/cdrom /mnt
|
||||
|
||||
There are mount options which can disable filename mapping,
|
||||
and control the conversion of text files. The options are:
|
||||
|
||||
map=[on,off,normal]
|
||||
conv=[auto,binary,text,mtext]
|
||||
norock
|
||||
cruft
|
||||
|
||||
The defaults are effectively map=on,conv=auto,rock,nocruft.
|
||||
The effect that these options have is described later on in this document.
|
||||
|
||||
Support for Rock Ridge extensions is present in the filesystem.
|
||||
This means:
|
||||
|
||||
* Longer filenames (My implementation limits it to 256 chars).
|
||||
* Mixed case filenames, Normal unix syntax availible.
|
||||
* Files have correct modes, number of links, and uid/gid
|
||||
* Separate times for atime, mtime, and ctime.
|
||||
* Symbolic links.
|
||||
* Block and Character devices.
|
||||
* Deep directories (Untested).
|
||||
|
||||
KNOWN PROBLEMS:
|
||||
|
||||
None.
|
||||
|
||||
********************************************
|
||||
|
||||
Some general comments are in order:
|
||||
|
||||
On some drives, there is a feature where the drive can be
|
||||
locked under software control to essentially deactivate the eject
|
||||
button. The scsi cdrom code activates this feature on drives so
|
||||
equipt, so you may be unable to remove the disc while it is mounted.
|
||||
The eject button will be re-enabled once the disc is dismounted.
|
||||
|
||||
A single element cache was added that sits between the readdir
|
||||
function and the lookup function. Many programs that traverse the
|
||||
directory tree (i.e. ls) also need to know the inode number and find
|
||||
information about the file from the inode table. For the CDROM this
|
||||
is kind of silly, since all of the information is in one place, but we
|
||||
have to make it look kind of like unix. Thus the readdir function
|
||||
returns a name, and then we do a stat, given that name and have to
|
||||
search the same directory again for the file that we just extracted in
|
||||
readdir. On the Andrew toolkit disc, there is one directory that
|
||||
contains about 700 files and is nearly 80kb long - doing an ls -l in
|
||||
that directory takes several minutes, because each lookup has to
|
||||
search the directory. Since it turns out that we often call lookup
|
||||
just after we read the directory, I added a one element cache to save
|
||||
enough information so as to eliminate the need to search the directory
|
||||
again.
|
||||
|
||||
The CDROM has a sector size of 2048 bytes, but the buffer
|
||||
cache has buffer sizes of 1024 bytes. The SCSI high level driver for
|
||||
the cdrom must perform buffering of all of the I/O in order to satisfy
|
||||
the request. At some point in the near future support will be present
|
||||
in the kernel for buffers in the buffer cache which are != 1024 bytes,
|
||||
at which time this code will be removed.
|
||||
|
||||
Both the ISO 9660 filesystem and the High Sierra are
|
||||
supported. The High Sierra format is just an earlier version of
|
||||
ISO9660, but there are minor differences between the two. Sometimes
|
||||
people use the two names interchangably, but nearly all newer discs
|
||||
are the ISO9660 format.
|
||||
|
||||
The inode numbers for files are essentially just the byte
|
||||
offset of the beginning of the directory record from the start of the
|
||||
disc. A disc can only hold about 660 MB, so the inode numbers will
|
||||
be somewhere between about 60K and 660M. Any tool that performs
|
||||
a stat() on the CDROM obviously needs to be recompiled if it was
|
||||
compiled before 32 bit inode support was in the kernel.
|
||||
|
||||
A number of ioctl functions have been provided, some of which
|
||||
are only of use when trying to play an audio disc. An attempt has
|
||||
been made to make the ioctls compatible with the ioctls on a Sun, but
|
||||
we have been unable to get any of the audio functions to work. My
|
||||
NEC drive and David's Sony reject all of these commands, and we currently
|
||||
believe that both of these drives implement the audio functions using
|
||||
vendor-specific command codes rather than the universal ones specified
|
||||
in the SCSI-II specifications.
|
||||
|
||||
Text files on a CDROM can have several types of line
|
||||
terminators. Lines can be terminated by LF, CRLF, or a CR. The
|
||||
filesystem scans the first 1024 bytes of the file, searching for out
|
||||
of band characters (i.e. > 0x80 or some control characters), and if it
|
||||
finds these it assumes the the file is a binary format. If there are
|
||||
no out of band characters the filesystem will assume that the file is
|
||||
a text file (keeping track of whether the lines are terminated by a
|
||||
CR, CRLF, or LF), and automatically converts the line terminators to a
|
||||
LF, which is the unix standard. In the case of CRLF termination, the
|
||||
CR is converted to a ' '. The heuristic can be explicitly overridden
|
||||
with the conv= mount option, which tells the filesystem that *all* files
|
||||
on the volume are the specified type.
|
||||
|
||||
Rock Ridge extensions can be inhibited with the "norock" mount
|
||||
option. This could be of use if you have scripts that work with the
|
||||
non-Rock Ridge filenames, or if you encounter a bug in the filesystem
|
||||
which really screws you up.
|
||||
|
||||
|
||||
***************************************
|
||||
***************************************
|
||||
|
||||
The remaining comments *only* apply to discs *without* the Rock Ridge
|
||||
extensions:
|
||||
|
||||
The find command does not work without the -noleaf switch.
|
||||
The reason for this is that the number of links for each directory file
|
||||
is not easily obtainable, so it is set to 2. The default behavior for
|
||||
the find program is to look for (i_links-2) subdirectories in each
|
||||
directory, and it then assumes that the rest are regular files. The
|
||||
-noleaf switch disables this optimization.
|
||||
|
||||
The filesystem currently has the execute permission set for
|
||||
any non-directory file that does not have a period in its name. This
|
||||
is a crude assumption for now, but it kind of works. There is not an
|
||||
easy way of telling whether a file should be executable or not.
|
||||
Theoretically it is possible to read the file itself and check for a
|
||||
magic number, but this would considerably degrade performance.
|
||||
|
||||
The filesystem does not support block or character devices,
|
||||
fifos, or symbolic links. Also, the setuid bit is never set for any
|
||||
program. The main reason for this is that there is no information in
|
||||
the directory entry itself which could be used to indicate these
|
||||
special types of files.
|
||||
|
||||
Filenames under ISO9660 are normally all upper case on the
|
||||
disc but the filesystem maps these to all lower case. The filenames
|
||||
on the disc also have a version number (like VMS) which appears at the
|
||||
end of the filename, and is separated from the rest of the filename by
|
||||
a ';' character. The filesystem strips the version numbers from the
|
||||
filename if the version number is 1, and replaces the ';' by a '.' if
|
||||
the version number is >1. The mount option map=off will disable all
|
||||
of the name mapping, and when this is in effect, all filenames will be
|
||||
in upper case, and the semicolons and version numbers will always appear.
|
||||
|
||||
Discs that are mastered by Profit Publishing, Tuscon AZ have
|
||||
been known to have a defective file length field. For some reason the
|
||||
top byte contains junk for all I can tell, and this confuses the
|
||||
iso9660 filesystem. If you run into trouble with discs from Profit, use the
|
||||
"cruft" mount option, which will cause the filesystem to mask off the top
|
||||
byte of the file length.
|
||||
|
||||
eric@tantalus.nrl.navy.mil
|
||||
|
||||
22
Linux-0.98/sources/sbin/cdrom/README.xcdplayer
Normal file
22
Linux-0.98/sources/sbin/cdrom/README.xcdplayer
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
There are two different versions of xcdplayer here, one that
|
||||
works (or is supposed to work) with scsi-2 drives, and a second
|
||||
version that will only work with NEC drives.
|
||||
|
||||
The NEC version is known to work - I have it going as I type
|
||||
this. My project for this afternoon is to pick up a couple of little
|
||||
speakers to put next to my monitor, since my headphone cables are not
|
||||
quite long enough.
|
||||
|
||||
The scsi-2 version would appear to need some work since we are
|
||||
still missing a couple of kernel ioctl functions. I would like
|
||||
someone with a scsi-2 drive to pick this up and get it working,
|
||||
because it is hard for me to do this when I cannot try it out. If you
|
||||
would like to give it a shot, let me know. I can tell you what needs
|
||||
to be done, and we may be able to borrow some of the code from the
|
||||
NEC. The NEC implements all of the ioctls in a user-mode program
|
||||
which makes use of one special ioctl that lets us format commands and
|
||||
send them directly to the drive. Ultimately this belongs in the
|
||||
kernel for the scsi-2 drives.
|
||||
|
||||
-Eric
|
||||
176
Linux-0.98/sources/sbin/lilo/lilo.6.CHANGES
Normal file
176
Linux-0.98/sources/sbin/lilo/lilo.6.CHANGES
Normal file
@@ -0,0 +1,176 @@
|
||||
Changes from version 5 to 6
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- added command-line argument passing.
|
||||
- now clears BSS of traditional images too.
|
||||
- chain.b is now more careful about register values when invoking
|
||||
the boot sector of the other OS.
|
||||
- added an interface for externally provided command lines.
|
||||
- added experimental recognition of linear addresses.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed opening the disktab file. (Using -f didn't work.)
|
||||
- fixed use of BIOS codes for the map file: the tilde is now appended
|
||||
before the BIOS code.
|
||||
- added a chdir("/") when using -r
|
||||
- added more sanity checks.
|
||||
- added generation of linear addresses.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- removed all references to swap device settings in the kernel because
|
||||
recent kernels don't support that any longer.
|
||||
- added a troubleshooting section.
|
||||
- several minor fixes and improvements.
|
||||
|
||||
|
||||
Changes from version 4 to 5
|
||||
---------------------------
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- added automatic boot sector backup.
|
||||
- fixed variable block size detection. (Didn't work with the 0.97-pl2
|
||||
kernel.)
|
||||
- added the chroot (-r) option.
|
||||
- made the partition table part of a foreign OS boot descriptor
|
||||
optional.
|
||||
|
||||
Documentation and installation
|
||||
------------------------------
|
||||
|
||||
- most of README has moved into doc.tex (LaTeX)
|
||||
- added a utility to activate a partition.
|
||||
- make install now reminds the user to update the map.
|
||||
- dd is now used in a more efficient way in the Makefile.
|
||||
(Fewer subshells, etc.)
|
||||
|
||||
|
||||
Changes from version 3 to 4
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- added a configurable delay.
|
||||
- added a diagnostic title message.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed all known include file conflicts.
|
||||
- added support for variable block sizes. (Not used yet.)
|
||||
- added some more sanity checks.
|
||||
- added a tool to determine SCSI disk parameters.
|
||||
|
||||
Documentation and installation
|
||||
------------------------------
|
||||
|
||||
- extended coverage of SCSI disks.
|
||||
- make install now backs up chain.b and boot.b of any older LILO
|
||||
installation. (To say: your system remains bootable even if you
|
||||
forget to run /etc/lilo/install after the update or if this fails
|
||||
for some reason.)
|
||||
- moved the changes section from README into CHANGES.
|
||||
- a set of pre-compiled executables of lilo, boot.b, chain.b and
|
||||
dparam.com is available too.
|
||||
|
||||
|
||||
Changes from version 2 to 3
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- can initialize BSS of unstripped kernels.
|
||||
- also accepts [Tab] to show the list of known images.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed parsing of the root device specification.
|
||||
- fixed setting of the root device when the boot image doesn't
|
||||
define it.
|
||||
- reduced the number of installable images from 19 to 16. (Because the
|
||||
descriptors have grown.)
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- added a booting basics section.
|
||||
- many minor changes.
|
||||
|
||||
|
||||
Changes from version 1 to 2
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- added command-line editing.
|
||||
- added debugging support (-DDEBUG).
|
||||
- added support for compacted maps.
|
||||
- some cosmetic changes.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- major rewrite.
|
||||
- files that contain "holes" are now handled properly.
|
||||
- added map compaction.
|
||||
- devices are now created on the fly only if they can't be found in /dev.
|
||||
- improved sanity checking.
|
||||
- can now boot other operating systems.
|
||||
- can now boot unstripped kernel executables.
|
||||
- added support for a disk parameter file.
|
||||
- reduced the number of installable images from 21 to 19.
|
||||
- changed the command-line syntax.
|
||||
- root and boot can now be specified on the command line.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- many changes, including correction of some minor errors.
|
||||
|
||||
|
||||
Changes from version 0 to 1
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- tested as master boot record.
|
||||
- improved the boot prompt invocation method.
|
||||
- increased the number of installable images to 21.
|
||||
- added a help facility.
|
||||
- improved read error handling and error reporting in the boot loader.
|
||||
- added a second stage boot loader.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed some minor bugs in the map installer. Removed all compiler
|
||||
warnings.
|
||||
- added labeling of images.
|
||||
- added version checking for the boot sector.
|
||||
- replaced option -r by -m. -r will be available for a while for
|
||||
compatibility.
|
||||
- added booting from device files (that have boot images written on them).
|
||||
- BIOS device codes can now be specified for boot image files too.
|
||||
- added concatenation of images. (This is a test feature that will be
|
||||
changed in the future.)
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- some minor documentation errors have been corrected.
|
||||
- the README now warns that the map has to be rebuilt after the images are
|
||||
replaced or moved.
|
||||
- added a files, a hints and an examples section.
|
||||
176
Linux-0.98/sources/sbin/lilo/lilo.6.CHANGES.txt
Normal file
176
Linux-0.98/sources/sbin/lilo/lilo.6.CHANGES.txt
Normal file
@@ -0,0 +1,176 @@
|
||||
Changes from version 5 to 6
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- added command-line argument passing.
|
||||
- now clears BSS of traditional images too.
|
||||
- chain.b is now more careful about register values when invoking
|
||||
the boot sector of the other OS.
|
||||
- added an interface for externally provided command lines.
|
||||
- added experimental recognition of linear addresses.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed opening the disktab file. (Using -f didn't work.)
|
||||
- fixed use of BIOS codes for the map file: the tilde is now appended
|
||||
before the BIOS code.
|
||||
- added a chdir("/") when using -r
|
||||
- added more sanity checks.
|
||||
- added generation of linear addresses.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- removed all references to swap device settings in the kernel because
|
||||
recent kernels don't support that any longer.
|
||||
- added a troubleshooting section.
|
||||
- several minor fixes and improvements.
|
||||
|
||||
|
||||
Changes from version 4 to 5
|
||||
---------------------------
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- added automatic boot sector backup.
|
||||
- fixed variable block size detection. (Didn't work with the 0.97-pl2
|
||||
kernel.)
|
||||
- added the chroot (-r) option.
|
||||
- made the partition table part of a foreign OS boot descriptor
|
||||
optional.
|
||||
|
||||
Documentation and installation
|
||||
------------------------------
|
||||
|
||||
- most of README has moved into doc.tex (LaTeX)
|
||||
- added a utility to activate a partition.
|
||||
- make install now reminds the user to update the map.
|
||||
- dd is now used in a more efficient way in the Makefile.
|
||||
(Fewer subshells, etc.)
|
||||
|
||||
|
||||
Changes from version 3 to 4
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- added a configurable delay.
|
||||
- added a diagnostic title message.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed all known include file conflicts.
|
||||
- added support for variable block sizes. (Not used yet.)
|
||||
- added some more sanity checks.
|
||||
- added a tool to determine SCSI disk parameters.
|
||||
|
||||
Documentation and installation
|
||||
------------------------------
|
||||
|
||||
- extended coverage of SCSI disks.
|
||||
- make install now backs up chain.b and boot.b of any older LILO
|
||||
installation. (To say: your system remains bootable even if you
|
||||
forget to run /etc/lilo/install after the update or if this fails
|
||||
for some reason.)
|
||||
- moved the changes section from README into CHANGES.
|
||||
- a set of pre-compiled executables of lilo, boot.b, chain.b and
|
||||
dparam.com is available too.
|
||||
|
||||
|
||||
Changes from version 2 to 3
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- can initialize BSS of unstripped kernels.
|
||||
- also accepts [Tab] to show the list of known images.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed parsing of the root device specification.
|
||||
- fixed setting of the root device when the boot image doesn't
|
||||
define it.
|
||||
- reduced the number of installable images from 19 to 16. (Because the
|
||||
descriptors have grown.)
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- added a booting basics section.
|
||||
- many minor changes.
|
||||
|
||||
|
||||
Changes from version 1 to 2
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- added command-line editing.
|
||||
- added debugging support (-DDEBUG).
|
||||
- added support for compacted maps.
|
||||
- some cosmetic changes.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- major rewrite.
|
||||
- files that contain "holes" are now handled properly.
|
||||
- added map compaction.
|
||||
- devices are now created on the fly only if they can't be found in /dev.
|
||||
- improved sanity checking.
|
||||
- can now boot other operating systems.
|
||||
- can now boot unstripped kernel executables.
|
||||
- added support for a disk parameter file.
|
||||
- reduced the number of installable images from 21 to 19.
|
||||
- changed the command-line syntax.
|
||||
- root and boot can now be specified on the command line.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- many changes, including correction of some minor errors.
|
||||
|
||||
|
||||
Changes from version 0 to 1
|
||||
---------------------------
|
||||
|
||||
Boot sector
|
||||
-----------
|
||||
|
||||
- tested as master boot record.
|
||||
- improved the boot prompt invocation method.
|
||||
- increased the number of installable images to 21.
|
||||
- added a help facility.
|
||||
- improved read error handling and error reporting in the boot loader.
|
||||
- added a second stage boot loader.
|
||||
|
||||
Map installer
|
||||
-------------
|
||||
|
||||
- fixed some minor bugs in the map installer. Removed all compiler
|
||||
warnings.
|
||||
- added labeling of images.
|
||||
- added version checking for the boot sector.
|
||||
- replaced option -r by -m. -r will be available for a while for
|
||||
compatibility.
|
||||
- added booting from device files (that have boot images written on them).
|
||||
- BIOS device codes can now be specified for boot image files too.
|
||||
- added concatenation of images. (This is a test feature that will be
|
||||
changed in the future.)
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
- some minor documentation errors have been corrected.
|
||||
- the README now warns that the map has to be rebuilt after the images are
|
||||
replaced or moved.
|
||||
- added a files, a hints and an examples section.
|
||||
310
Linux-0.98/sources/sbin/lilo/lilo.6.README
Normal file
310
Linux-0.98/sources/sbin/lilo/lilo.6.README
Normal file
@@ -0,0 +1,310 @@
|
||||
LILO - Generic Boot Loader for Linux ("LInux LOader") by Werner Almesberger
|
||||
=============================================================================
|
||||
|
||||
This is an ALPHA test release of a new boot loader. Be sure to have some
|
||||
means to boot your system from a different media if you install LILO on your
|
||||
hard disk.
|
||||
|
||||
|
||||
NOTE: Most of the documentation has moved into the LaTeX document doc.tex.
|
||||
This is only a minimal description for those who can't print or pre-
|
||||
view LaTeX documents.
|
||||
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- does not depend on the file system. (Tested with Minix, EXT FS and MS-DOS
|
||||
FS.)
|
||||
- can be used to boot from floppies and from hard disks.
|
||||
- can replace the master boot record.
|
||||
- can boot non-Linux systems (MS-DOS, DR DOS, OS/2, ...) and unstripped
|
||||
kernels.
|
||||
- supports up to 16 different boot images that can be selected at boot
|
||||
time. The root disk/partition can be set independently for each
|
||||
image.
|
||||
- boot sector, file map and boot images can be all on different disks or
|
||||
partitions.
|
||||
|
||||
|
||||
Restrictions and known problems
|
||||
-------------------------------
|
||||
|
||||
- SCSI disks are not fully supported yet. (Still waiting for some kernel
|
||||
changes.)
|
||||
- booting other operating systems may not work everywhere. If everything
|
||||
but booting a non-Linux OS from LILO works on your system, you should
|
||||
boot LILO by BOOTACTV and select the alternate OS with the latter as a
|
||||
temporary work-around.
|
||||
- booting non-Linux systems from the second hard disk ("D:") is not yet
|
||||
supported.
|
||||
|
||||
|
||||
Files
|
||||
-----
|
||||
|
||||
Files contained in lilo.5.tar.Z:
|
||||
|
||||
README This file.
|
||||
Makefile Makefile for everything else.
|
||||
*.c, *.h LILO map installer source.
|
||||
*.S LILO boot loader source.
|
||||
activate.c Simple boot partition setter.
|
||||
dparam.s Disk parameter dumper source.
|
||||
disktab Sample disk parameter table.
|
||||
|
||||
Files created after make (among others):
|
||||
|
||||
boot.b Combined boot sector.
|
||||
chain.b Chain loader.
|
||||
lilo LILO installer.
|
||||
activate Simple boot partition setter.
|
||||
dparam.com MS-DOS executable of the disk parameter dumper.
|
||||
|
||||
|
||||
!! STOP READING HERE IF YOU CAN USE THE LaTeX VERSION OF THE DOCUMENTATION !!
|
||||
|
||||
The LaTeX part is generally more up to date and contains more useful
|
||||
hints and examples. The following sections have been trimmed to make
|
||||
it easier to maintain them, e.g. by removing as many version-dependen-
|
||||
cies as possible.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
You have to run the 0.96c-pl1 kernel or any newer release.
|
||||
|
||||
This section describes one possible installation of LILO. Please read
|
||||
"Booting basics" in the LaTeX document for the whole story.
|
||||
|
||||
Non-SCSI installation:
|
||||
|
||||
Step 1: Extract all files from lilo.6.tar.Z, run make to compile and assemble
|
||||
all parts.
|
||||
Step 2: Read the "LILO installer" section in this README and be sure to
|
||||
understand what the command-line options do.
|
||||
Step 3: Do make install to copy all LILO files to /etc/lilo
|
||||
Step 4: Install lilo on a floppy disk:
|
||||
lilo -b /dev/fd0 -i boot.b -v -v -v /your_kernel_image
|
||||
Step 5: Reboot. If this doesn't work or if you don't want to install LILO on
|
||||
your hard disk anyway, you can stop here.
|
||||
Step 6: Get a working bootimage and a rootimage. If you have reason to be
|
||||
paranoid about your boot sector, mount the rootimage and copy your
|
||||
current boot sector to a file on it, e.g.
|
||||
dd if=/dev/hda2 of=/fd/boot_sector bs=512 count=1
|
||||
Step 7: Create a shell script /etc/lilo/install that installs LILO on your
|
||||
hard disk, e.g.
|
||||
# cat >/etc/lilo/install
|
||||
#!/bin/sh
|
||||
/etc/lilo/lilo <all_necessary_options> -i /etc/lilo/boot.b $* \
|
||||
/kernel_image(s)
|
||||
^D
|
||||
# chmod 755 /etc/lilo/install
|
||||
Step 8: Now, you can check what LILO would do if you
|
||||
were about to install it on your hard disk:
|
||||
/etc/lilo/install -v -v -v -t
|
||||
Step 9: If necessary, install a boot partition switcher. Run /etc/lilo/install
|
||||
to install LILO on your hard disk. If necessary, mark that partition
|
||||
"active".
|
||||
Step 10: Reboot.
|
||||
|
||||
SCSI installation:
|
||||
|
||||
Like non-SCSI installation, but you have to put the parameters of your
|
||||
SCSI drive into the file /etc/lilo/disktab.
|
||||
|
||||
|
||||
IMPORTANT: You have to repeat the installation procedure whenever any of the
|
||||
boot images is replaced or moved (e.g. after the kernel is re-
|
||||
compiled.) The -i option can be omitted if a LILO boot sector has
|
||||
already been installed.
|
||||
|
||||
|
||||
LILO Installer
|
||||
--------------
|
||||
|
||||
The LILO installer accepts the following command-line options:
|
||||
|
||||
-b boot_device
|
||||
|
||||
Sets the name of the device that contains the boot sector. If -b is
|
||||
omitted, the boot sector is read from (and possibly written to) the
|
||||
device that is currently mounted as root. A BIOS device code can be
|
||||
specified.
|
||||
|
||||
-c
|
||||
|
||||
Tries to merge read requests for adjacent sectors into a single read
|
||||
request. This drastically reduces load time and keeps the map
|
||||
smaller.
|
||||
|
||||
-d tsecs
|
||||
|
||||
Specifies the number of tenths of seconds LILO should wait before
|
||||
booting the first image. This is useful on systems that immediately
|
||||
boot from the hard disk after enabling the keyboard. LILO doesn't
|
||||
wait if -d is omitted.
|
||||
|
||||
-i boot_sector
|
||||
|
||||
Install the specified file as the new boot sector. If -i is omitted,
|
||||
the old boot sector is modified. A BIOS device code can be specified.
|
||||
|
||||
-l
|
||||
|
||||
Generate linear sector addresses instead of sector/head/cylinder
|
||||
addresses. Linear addresses are translated at run time and do not
|
||||
depend on disk geometry. This is experimental and is not (yet)
|
||||
intended for common use.
|
||||
|
||||
-m map_file
|
||||
|
||||
Specifies the location of the map file. If -m is omitted, a file
|
||||
/etc/lilo/map is used. A BIOS device code can be specified.
|
||||
|
||||
-r root_dir
|
||||
|
||||
Change the root directory to root_dir before doing anything else.
|
||||
This is typically used when running off a floppy, with the normal
|
||||
root mounted at some directory.
|
||||
|
||||
-s backup_file
|
||||
|
||||
Copy the old boot sector to backup_file instead of
|
||||
/etc/lilo/boot.<number>
|
||||
|
||||
-S backup_file
|
||||
|
||||
Like -s, but overwrite an old backup copy if it already exists.
|
||||
|
||||
-t
|
||||
Test only. This performs the entire installation procedure except
|
||||
replacing the map file and writing the modified boot sector. This
|
||||
can be used in conjunction with the -v option to verify that LILO
|
||||
will use sane values.
|
||||
|
||||
-v
|
||||
|
||||
Turns on lots of progress reporting. Repeating -v will turn on more
|
||||
reporting. (-v -v -v -v -v is the highest verbosity level and
|
||||
displays all sector mappings before and after compaction.)
|
||||
|
||||
|
||||
If no image files are specified, the currently mapped files are listed. Only
|
||||
the options -m and -v can be used in this mode.
|
||||
|
||||
If at least one file name is specified, a new map is created for those files
|
||||
and they are registered in the boot sector. If the root device has been set
|
||||
in the images, it is copied into the descriptors in the boot sector. If no
|
||||
root device has been set, the current root device is used. The root device
|
||||
can be overridden by appending them to the image specification, e.g.
|
||||
|
||||
lilo foo,/dev/hda1
|
||||
^ ^
|
||||
image root
|
||||
|
||||
Either numbers or device names can be used.
|
||||
|
||||
It is perfectly valid to use different root settings for the same image,
|
||||
because LILO stores them in the image descriptors and not in the images
|
||||
themselves. Example:
|
||||
|
||||
lin-hd=/linux,/dev/hda2 \
|
||||
lin-fd=/linux,/dev/fd0
|
||||
|
||||
The image files can reside on any media that is accessible at boot time.
|
||||
There's no need to put them on the root device, although this certainly
|
||||
doesn't hurt.
|
||||
|
||||
If LILO doesn't guess the correct BIOS device code, it can be specified by
|
||||
appending a colon and the code to the file name, e.g. /linux:0x80
|
||||
|
||||
LILO uses the first file name (without its path) of each image specification
|
||||
to identify that image. A different name can be specified by prefixing the
|
||||
specification with label= e.g.
|
||||
|
||||
msdos=/etc/lilo/chain.b+/dev/sda1@/dev/sda
|
||||
|
||||
LILO can boot the following types of images:
|
||||
|
||||
- "classic" boot images from a file
|
||||
- "classic" boot images from a device
|
||||
- unstripped kernel executables
|
||||
- the boot sector of some other operating system
|
||||
|
||||
The image type is determined by the syntax that is used for the image
|
||||
specification.
|
||||
|
||||
|
||||
Booting "classic" boot images from a file
|
||||
-----------------------------------------
|
||||
|
||||
If defined, the root device definition is taken from the boot image.
|
||||
The image is specified as follows:
|
||||
|
||||
file_name [ :BIOS_code ]
|
||||
|
||||
I.e. /linux
|
||||
|
||||
|
||||
Booting "classic" boot images from a device
|
||||
-------------------------------------------
|
||||
|
||||
The root device setting in the image is ignored. The range of sectors
|
||||
that should be mapped, has to be specified. Either a range (start-end)
|
||||
or a start and a distance (start+number) have to be specified. start
|
||||
and end ae zero-based. If only the start if specified, only that sector
|
||||
is mapped.
|
||||
|
||||
device_name [ :BIOS_code] #start [ -end | +number ]
|
||||
|
||||
I.e. /dev/fd0#1+512
|
||||
|
||||
|
||||
Booting unstripped kernel executables
|
||||
-------------------------------------
|
||||
|
||||
Unstripped kernel executables contain no root device information.
|
||||
The setup code of the kernel has also to be added to the kernel. First,
|
||||
it has to be copied to a suitable place and its header has to be removed,
|
||||
e.g.
|
||||
|
||||
(dd of=/dev/null bs=32 count=1; dd) </usr/src/linux/boot/setup \
|
||||
>/etc/lilo/setup.b
|
||||
|
||||
The image specification looks like this:
|
||||
|
||||
setup_name [ :BIOS_code ] +kernel_name [ :BIOS_code ]
|
||||
|
||||
I.e. /etc/lilo/setup.b+/usr/src/linux/tools/system
|
||||
|
||||
|
||||
Booting a foreign operating system
|
||||
----------------------------------
|
||||
|
||||
LILO can even boot other operating systems, e.g. MS-DOS. This feature
|
||||
is new and may not yet work totally reliably. (Reported to work with
|
||||
PC-DOS 4.0, MS-DOS 5.0 and DR-DOS 6.0.) To boot an other operating
|
||||
system, the name of a loader program, the device that contains the boot
|
||||
sector and the device that contains the master boot record have to be
|
||||
specified:
|
||||
|
||||
loader+boot_dev [ :BIOS_code ] @ [ part_dev ]
|
||||
|
||||
I.e. /etc/lilo/chain.b+/dev/hda2@/dev/hda
|
||||
|
||||
The boot sector is merged with the partition table and stored in the map
|
||||
file.
|
||||
|
||||
Currently, only the loader chain.b exists.
|
||||
|
||||
|
||||
LILO may create some device special files in your /tmp directory that are
|
||||
not removed if an error occurs. They are named /tmp/dev.<number>.
|
||||
|
||||
|
||||
Bugs and such
|
||||
-------------
|
||||
|
||||
Please send all bug reports to almesber@nessie.cs.id.ethz.ch
|
||||
310
Linux-0.98/sources/sbin/lilo/lilo.6.README.txt
Normal file
310
Linux-0.98/sources/sbin/lilo/lilo.6.README.txt
Normal file
@@ -0,0 +1,310 @@
|
||||
LILO - Generic Boot Loader for Linux ("LInux LOader") by Werner Almesberger
|
||||
=============================================================================
|
||||
|
||||
This is an ALPHA test release of a new boot loader. Be sure to have some
|
||||
means to boot your system from a different media if you install LILO on your
|
||||
hard disk.
|
||||
|
||||
|
||||
NOTE: Most of the documentation has moved into the LaTeX document doc.tex.
|
||||
This is only a minimal description for those who can't print or pre-
|
||||
view LaTeX documents.
|
||||
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- does not depend on the file system. (Tested with Minix, EXT FS and MS-DOS
|
||||
FS.)
|
||||
- can be used to boot from floppies and from hard disks.
|
||||
- can replace the master boot record.
|
||||
- can boot non-Linux systems (MS-DOS, DR DOS, OS/2, ...) and unstripped
|
||||
kernels.
|
||||
- supports up to 16 different boot images that can be selected at boot
|
||||
time. The root disk/partition can be set independently for each
|
||||
image.
|
||||
- boot sector, file map and boot images can be all on different disks or
|
||||
partitions.
|
||||
|
||||
|
||||
Restrictions and known problems
|
||||
-------------------------------
|
||||
|
||||
- SCSI disks are not fully supported yet. (Still waiting for some kernel
|
||||
changes.)
|
||||
- booting other operating systems may not work everywhere. If everything
|
||||
but booting a non-Linux OS from LILO works on your system, you should
|
||||
boot LILO by BOOTACTV and select the alternate OS with the latter as a
|
||||
temporary work-around.
|
||||
- booting non-Linux systems from the second hard disk ("D:") is not yet
|
||||
supported.
|
||||
|
||||
|
||||
Files
|
||||
-----
|
||||
|
||||
Files contained in lilo.5.tar.Z:
|
||||
|
||||
README This file.
|
||||
Makefile Makefile for everything else.
|
||||
*.c, *.h LILO map installer source.
|
||||
*.S LILO boot loader source.
|
||||
activate.c Simple boot partition setter.
|
||||
dparam.s Disk parameter dumper source.
|
||||
disktab Sample disk parameter table.
|
||||
|
||||
Files created after make (among others):
|
||||
|
||||
boot.b Combined boot sector.
|
||||
chain.b Chain loader.
|
||||
lilo LILO installer.
|
||||
activate Simple boot partition setter.
|
||||
dparam.com MS-DOS executable of the disk parameter dumper.
|
||||
|
||||
|
||||
!! STOP READING HERE IF YOU CAN USE THE LaTeX VERSION OF THE DOCUMENTATION !!
|
||||
|
||||
The LaTeX part is generally more up to date and contains more useful
|
||||
hints and examples. The following sections have been trimmed to make
|
||||
it easier to maintain them, e.g. by removing as many version-dependen-
|
||||
cies as possible.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
You have to run the 0.96c-pl1 kernel or any newer release.
|
||||
|
||||
This section describes one possible installation of LILO. Please read
|
||||
"Booting basics" in the LaTeX document for the whole story.
|
||||
|
||||
Non-SCSI installation:
|
||||
|
||||
Step 1: Extract all files from lilo.6.tar.Z, run make to compile and assemble
|
||||
all parts.
|
||||
Step 2: Read the "LILO installer" section in this README and be sure to
|
||||
understand what the command-line options do.
|
||||
Step 3: Do make install to copy all LILO files to /etc/lilo
|
||||
Step 4: Install lilo on a floppy disk:
|
||||
lilo -b /dev/fd0 -i boot.b -v -v -v /your_kernel_image
|
||||
Step 5: Reboot. If this doesn't work or if you don't want to install LILO on
|
||||
your hard disk anyway, you can stop here.
|
||||
Step 6: Get a working bootimage and a rootimage. If you have reason to be
|
||||
paranoid about your boot sector, mount the rootimage and copy your
|
||||
current boot sector to a file on it, e.g.
|
||||
dd if=/dev/hda2 of=/fd/boot_sector bs=512 count=1
|
||||
Step 7: Create a shell script /etc/lilo/install that installs LILO on your
|
||||
hard disk, e.g.
|
||||
# cat >/etc/lilo/install
|
||||
#!/bin/sh
|
||||
/etc/lilo/lilo <all_necessary_options> -i /etc/lilo/boot.b $* \
|
||||
/kernel_image(s)
|
||||
^D
|
||||
# chmod 755 /etc/lilo/install
|
||||
Step 8: Now, you can check what LILO would do if you
|
||||
were about to install it on your hard disk:
|
||||
/etc/lilo/install -v -v -v -t
|
||||
Step 9: If necessary, install a boot partition switcher. Run /etc/lilo/install
|
||||
to install LILO on your hard disk. If necessary, mark that partition
|
||||
"active".
|
||||
Step 10: Reboot.
|
||||
|
||||
SCSI installation:
|
||||
|
||||
Like non-SCSI installation, but you have to put the parameters of your
|
||||
SCSI drive into the file /etc/lilo/disktab.
|
||||
|
||||
|
||||
IMPORTANT: You have to repeat the installation procedure whenever any of the
|
||||
boot images is replaced or moved (e.g. after the kernel is re-
|
||||
compiled.) The -i option can be omitted if a LILO boot sector has
|
||||
already been installed.
|
||||
|
||||
|
||||
LILO Installer
|
||||
--------------
|
||||
|
||||
The LILO installer accepts the following command-line options:
|
||||
|
||||
-b boot_device
|
||||
|
||||
Sets the name of the device that contains the boot sector. If -b is
|
||||
omitted, the boot sector is read from (and possibly written to) the
|
||||
device that is currently mounted as root. A BIOS device code can be
|
||||
specified.
|
||||
|
||||
-c
|
||||
|
||||
Tries to merge read requests for adjacent sectors into a single read
|
||||
request. This drastically reduces load time and keeps the map
|
||||
smaller.
|
||||
|
||||
-d tsecs
|
||||
|
||||
Specifies the number of tenths of seconds LILO should wait before
|
||||
booting the first image. This is useful on systems that immediately
|
||||
boot from the hard disk after enabling the keyboard. LILO doesn't
|
||||
wait if -d is omitted.
|
||||
|
||||
-i boot_sector
|
||||
|
||||
Install the specified file as the new boot sector. If -i is omitted,
|
||||
the old boot sector is modified. A BIOS device code can be specified.
|
||||
|
||||
-l
|
||||
|
||||
Generate linear sector addresses instead of sector/head/cylinder
|
||||
addresses. Linear addresses are translated at run time and do not
|
||||
depend on disk geometry. This is experimental and is not (yet)
|
||||
intended for common use.
|
||||
|
||||
-m map_file
|
||||
|
||||
Specifies the location of the map file. If -m is omitted, a file
|
||||
/etc/lilo/map is used. A BIOS device code can be specified.
|
||||
|
||||
-r root_dir
|
||||
|
||||
Change the root directory to root_dir before doing anything else.
|
||||
This is typically used when running off a floppy, with the normal
|
||||
root mounted at some directory.
|
||||
|
||||
-s backup_file
|
||||
|
||||
Copy the old boot sector to backup_file instead of
|
||||
/etc/lilo/boot.<number>
|
||||
|
||||
-S backup_file
|
||||
|
||||
Like -s, but overwrite an old backup copy if it already exists.
|
||||
|
||||
-t
|
||||
Test only. This performs the entire installation procedure except
|
||||
replacing the map file and writing the modified boot sector. This
|
||||
can be used in conjunction with the -v option to verify that LILO
|
||||
will use sane values.
|
||||
|
||||
-v
|
||||
|
||||
Turns on lots of progress reporting. Repeating -v will turn on more
|
||||
reporting. (-v -v -v -v -v is the highest verbosity level and
|
||||
displays all sector mappings before and after compaction.)
|
||||
|
||||
|
||||
If no image files are specified, the currently mapped files are listed. Only
|
||||
the options -m and -v can be used in this mode.
|
||||
|
||||
If at least one file name is specified, a new map is created for those files
|
||||
and they are registered in the boot sector. If the root device has been set
|
||||
in the images, it is copied into the descriptors in the boot sector. If no
|
||||
root device has been set, the current root device is used. The root device
|
||||
can be overridden by appending them to the image specification, e.g.
|
||||
|
||||
lilo foo,/dev/hda1
|
||||
^ ^
|
||||
image root
|
||||
|
||||
Either numbers or device names can be used.
|
||||
|
||||
It is perfectly valid to use different root settings for the same image,
|
||||
because LILO stores them in the image descriptors and not in the images
|
||||
themselves. Example:
|
||||
|
||||
lin-hd=/linux,/dev/hda2 \
|
||||
lin-fd=/linux,/dev/fd0
|
||||
|
||||
The image files can reside on any media that is accessible at boot time.
|
||||
There's no need to put them on the root device, although this certainly
|
||||
doesn't hurt.
|
||||
|
||||
If LILO doesn't guess the correct BIOS device code, it can be specified by
|
||||
appending a colon and the code to the file name, e.g. /linux:0x80
|
||||
|
||||
LILO uses the first file name (without its path) of each image specification
|
||||
to identify that image. A different name can be specified by prefixing the
|
||||
specification with label= e.g.
|
||||
|
||||
msdos=/etc/lilo/chain.b+/dev/sda1@/dev/sda
|
||||
|
||||
LILO can boot the following types of images:
|
||||
|
||||
- "classic" boot images from a file
|
||||
- "classic" boot images from a device
|
||||
- unstripped kernel executables
|
||||
- the boot sector of some other operating system
|
||||
|
||||
The image type is determined by the syntax that is used for the image
|
||||
specification.
|
||||
|
||||
|
||||
Booting "classic" boot images from a file
|
||||
-----------------------------------------
|
||||
|
||||
If defined, the root device definition is taken from the boot image.
|
||||
The image is specified as follows:
|
||||
|
||||
file_name [ :BIOS_code ]
|
||||
|
||||
I.e. /linux
|
||||
|
||||
|
||||
Booting "classic" boot images from a device
|
||||
-------------------------------------------
|
||||
|
||||
The root device setting in the image is ignored. The range of sectors
|
||||
that should be mapped, has to be specified. Either a range (start-end)
|
||||
or a start and a distance (start+number) have to be specified. start
|
||||
and end ae zero-based. If only the start if specified, only that sector
|
||||
is mapped.
|
||||
|
||||
device_name [ :BIOS_code] #start [ -end | +number ]
|
||||
|
||||
I.e. /dev/fd0#1+512
|
||||
|
||||
|
||||
Booting unstripped kernel executables
|
||||
-------------------------------------
|
||||
|
||||
Unstripped kernel executables contain no root device information.
|
||||
The setup code of the kernel has also to be added to the kernel. First,
|
||||
it has to be copied to a suitable place and its header has to be removed,
|
||||
e.g.
|
||||
|
||||
(dd of=/dev/null bs=32 count=1; dd) </usr/src/linux/boot/setup \
|
||||
>/etc/lilo/setup.b
|
||||
|
||||
The image specification looks like this:
|
||||
|
||||
setup_name [ :BIOS_code ] +kernel_name [ :BIOS_code ]
|
||||
|
||||
I.e. /etc/lilo/setup.b+/usr/src/linux/tools/system
|
||||
|
||||
|
||||
Booting a foreign operating system
|
||||
----------------------------------
|
||||
|
||||
LILO can even boot other operating systems, e.g. MS-DOS. This feature
|
||||
is new and may not yet work totally reliably. (Reported to work with
|
||||
PC-DOS 4.0, MS-DOS 5.0 and DR-DOS 6.0.) To boot an other operating
|
||||
system, the name of a loader program, the device that contains the boot
|
||||
sector and the device that contains the master boot record have to be
|
||||
specified:
|
||||
|
||||
loader+boot_dev [ :BIOS_code ] @ [ part_dev ]
|
||||
|
||||
I.e. /etc/lilo/chain.b+/dev/hda2@/dev/hda
|
||||
|
||||
The boot sector is merged with the partition table and stored in the map
|
||||
file.
|
||||
|
||||
Currently, only the loader chain.b exists.
|
||||
|
||||
|
||||
LILO may create some device special files in your /tmp directory that are
|
||||
not removed if an error occurs. They are named /tmp/dev.<number>.
|
||||
|
||||
|
||||
Bugs and such
|
||||
-------------
|
||||
|
||||
Please send all bug reports to almesber@nessie.cs.id.ethz.ch
|
||||
507
Linux-0.98/sources/sbin/ps-0.98.diff
Normal file
507
Linux-0.98/sources/sbin/ps-0.98.diff
Normal file
@@ -0,0 +1,507 @@
|
||||
diff -c +recursive orig/ps-0.98/ps.c ps-0.98/ps.c
|
||||
*** orig/ps-0.98/ps.c Tue Oct 20 13:38:26 1992
|
||||
--- ps-0.98/ps.c Wed Nov 4 20:44:49 1992
|
||||
***************
|
||||
*** 178,184 ****
|
||||
show_procs()
|
||||
{
|
||||
struct task_struct *taskp;
|
||||
! union task_union task_buf;
|
||||
int tty, i, uid;
|
||||
off_t _task = k_addr("_task");
|
||||
|
||||
--- 178,185 ----
|
||||
show_procs()
|
||||
{
|
||||
struct task_struct *taskp;
|
||||
! struct task_struct task_buf;
|
||||
! char stack_buf[PAGE_SIZE];
|
||||
int tty, i, uid;
|
||||
off_t _task = k_addr("_task");
|
||||
|
||||
***************
|
||||
*** 192,218 ****
|
||||
if (taskp) {
|
||||
kmemread(&task_buf, taskp, sizeof(task_buf));
|
||||
/* check if valid, proc may have exited */
|
||||
! if ((unsigned) task_buf.task.state > 4 ||
|
||||
! task_buf.task.pid <= 0 && i != 0)
|
||||
continue;
|
||||
|
||||
if (pid >= 0) {
|
||||
! if (task_buf.task.pid != pid)
|
||||
continue;
|
||||
} else if (ctty) {
|
||||
! if (task_buf.task.tty != tty)
|
||||
continue;
|
||||
} else
|
||||
! if (!all && task_buf.task.uid != uid ||
|
||||
! !no_ctty && task_buf.task.tty == -1 ||
|
||||
! run_only && task_buf.task.state != TASK_RUNNING &&
|
||||
! task_buf.task.state != TASK_UNINTERRUPTIBLE)
|
||||
continue;
|
||||
|
||||
! (fmt_fnc[fmt])(&task_buf);
|
||||
if (fmt != PS_V && fmt != PS_M)
|
||||
! show_time(&task_buf);
|
||||
! printf("%s\n", cmd_args(&task_buf));
|
||||
}
|
||||
}
|
||||
}
|
||||
--- 193,221 ----
|
||||
if (taskp) {
|
||||
kmemread(&task_buf, taskp, sizeof(task_buf));
|
||||
/* check if valid, proc may have exited */
|
||||
! if ((unsigned) task_buf.state > 4 ||
|
||||
! (task_buf.pid <= 0 && i != 0) ||
|
||||
! !task_buf.kernel_stack_page)
|
||||
continue;
|
||||
|
||||
if (pid >= 0) {
|
||||
! if (task_buf.pid != pid)
|
||||
continue;
|
||||
} else if (ctty) {
|
||||
! if (task_buf.tty != tty)
|
||||
continue;
|
||||
} else
|
||||
! if (!all && task_buf.uid != uid ||
|
||||
! !no_ctty && task_buf.tty == -1 ||
|
||||
! run_only && task_buf.state != TASK_RUNNING &&
|
||||
! task_buf.state != TASK_UNINTERRUPTIBLE)
|
||||
continue;
|
||||
|
||||
! kmemread(&stack_buf, task_buf.kernel_stack_page, PAGE_SIZE);
|
||||
! (fmt_fnc[fmt])(&task_buf,&stack_buf);
|
||||
if (fmt != PS_V && fmt != PS_M)
|
||||
! show_time(&task_buf, &stack_buf);
|
||||
! printf("%s\n", cmd_args(&task_buf, &stack_buf));
|
||||
}
|
||||
}
|
||||
}
|
||||
***************
|
||||
*** 219,226 ****
|
||||
|
||||
|
||||
|
||||
! show_short(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
printf("%5d %s %s",
|
||||
task->pid,
|
||||
--- 222,230 ----
|
||||
|
||||
|
||||
|
||||
! show_short(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
printf("%5d %s %s",
|
||||
task->pid,
|
||||
***************
|
||||
*** 228,235 ****
|
||||
status(task));
|
||||
}
|
||||
|
||||
! show_long(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
long ppid;
|
||||
|
||||
--- 232,240 ----
|
||||
status(task));
|
||||
}
|
||||
|
||||
! show_long(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
long ppid;
|
||||
|
||||
***************
|
||||
*** 242,259 ****
|
||||
ppid,
|
||||
2 * PZERO - task->counter, /* sort of priority */
|
||||
PZERO - task->priority, /* nice value */
|
||||
! VSIZE(task),
|
||||
task->rss * 4,
|
||||
(task->state == TASK_INTERRUPTIBLE ||
|
||||
task->state == TASK_UNINTERRUPTIBLE ||
|
||||
Debug > 1 && task->state == TASK_STOPPED ?
|
||||
! wchan(task->tss.ebp, task) : ""),
|
||||
status(task),
|
||||
dev_to_tty(task->tty));
|
||||
}
|
||||
|
||||
! show_jobs(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
long ppid, tpgid;
|
||||
struct tty_struct *tt;
|
||||
--- 247,265 ----
|
||||
ppid,
|
||||
2 * PZERO - task->counter, /* sort of priority */
|
||||
PZERO - task->priority, /* nice value */
|
||||
! VSIZE(task,stack),
|
||||
task->rss * 4,
|
||||
(task->state == TASK_INTERRUPTIBLE ||
|
||||
task->state == TASK_UNINTERRUPTIBLE ||
|
||||
Debug > 1 && task->state == TASK_STOPPED ?
|
||||
! wchan(task->tss.ebp, stack) : ""),
|
||||
status(task),
|
||||
dev_to_tty(task->tty));
|
||||
}
|
||||
|
||||
! show_jobs(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
long ppid, tpgid;
|
||||
struct tty_struct *tt;
|
||||
***************
|
||||
*** 284,291 ****
|
||||
task->euid);
|
||||
}
|
||||
|
||||
! show_user(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
time_t start;
|
||||
int pcpu, pmem;
|
||||
--- 290,298 ----
|
||||
task->euid);
|
||||
}
|
||||
|
||||
! show_user(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
time_t start;
|
||||
int pcpu, pmem;
|
||||
***************
|
||||
*** 309,315 ****
|
||||
task->pid,
|
||||
pcpu / 10, pcpu % 10,
|
||||
pmem / 10, pmem % 10,
|
||||
! VSIZE(task),
|
||||
task->rss * 4,
|
||||
dev_to_tty(task->tty),
|
||||
status(task),
|
||||
--- 316,322 ----
|
||||
task->pid,
|
||||
pcpu / 10, pcpu % 10,
|
||||
pmem / 10, pmem % 10,
|
||||
! VSIZE(task,stack),
|
||||
task->rss * 4,
|
||||
dev_to_tty(task->tty),
|
||||
status(task),
|
||||
***************
|
||||
*** 316,323 ****
|
||||
ctime(&start) + (time_now - start > 3600*24 ? 4 : 10));
|
||||
}
|
||||
|
||||
! show_sig(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
unsigned long sigignore=0, sigcatch=0, bit=1;
|
||||
int i;
|
||||
--- 323,331 ----
|
||||
ctime(&start) + (time_now - start > 3600*24 ? 4 : 10));
|
||||
}
|
||||
|
||||
! show_sig(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
unsigned long sigignore=0, sigcatch=0, bit=1;
|
||||
int i;
|
||||
***************
|
||||
*** 341,348 ****
|
||||
dev_to_tty(task->tty));
|
||||
}
|
||||
|
||||
! show_vm(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
int pmem;
|
||||
|
||||
--- 349,357 ----
|
||||
dev_to_tty(task->tty));
|
||||
}
|
||||
|
||||
! show_vm(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
int pmem;
|
||||
|
||||
***************
|
||||
*** 354,360 ****
|
||||
printf(" %6d %4d %4d %4d ",
|
||||
task->maj_flt + (Sum ? task->cmaj_flt : 0),
|
||||
task->end_code / 1024,
|
||||
! SIZE(task), task->rss*4);
|
||||
if (task->rlim[RLIMIT_RSS].rlim_cur == RLIM_INFINITY)
|
||||
printf(" xx ");
|
||||
else
|
||||
--- 363,369 ----
|
||||
printf(" %6d %4d %4d %4d ",
|
||||
task->maj_flt + (Sum ? task->cmaj_flt : 0),
|
||||
task->end_code / 1024,
|
||||
! SIZE(task, stack), task->rss*4);
|
||||
if (task->rlim[RLIMIT_RSS].rlim_cur == RLIM_INFINITY)
|
||||
printf(" xx ");
|
||||
else
|
||||
***************
|
||||
*** 364,371 ****
|
||||
}
|
||||
|
||||
|
||||
! show_m(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
int i;
|
||||
unsigned long pagedir[0x300];
|
||||
--- 373,381 ----
|
||||
}
|
||||
|
||||
|
||||
! show_m(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
int i;
|
||||
unsigned long pagedir[0x300];
|
||||
***************
|
||||
*** 431,438 ****
|
||||
dt << pg_shift);
|
||||
}
|
||||
|
||||
! show_regs(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
printf("%2d %5d %8x %8x %8x ",
|
||||
task->start_code >> 26,
|
||||
--- 441,449 ----
|
||||
dt << pg_shift);
|
||||
}
|
||||
|
||||
! show_regs(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
printf("%2d %5d %8x %8x %8x ",
|
||||
task->start_code >> 26,
|
||||
***************
|
||||
*** 441,448 ****
|
||||
task->start_code >> 16,
|
||||
**/
|
||||
task->start_stack,
|
||||
! KSTK_ESP(task),
|
||||
! KSTK_EIP(task));
|
||||
|
||||
prtime(task->timeout, jiffies);
|
||||
prtime(task->it_real_value, 0);
|
||||
--- 452,459 ----
|
||||
task->start_code >> 16,
|
||||
**/
|
||||
task->start_stack,
|
||||
! KSTK_ESP(stack),
|
||||
! KSTK_EIP(stack));
|
||||
|
||||
prtime(task->timeout, jiffies);
|
||||
prtime(task->it_real_value, 0);
|
||||
***************
|
||||
*** 487,494 ****
|
||||
};
|
||||
|
||||
|
||||
! show_time(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
unsigned t;
|
||||
|
||||
--- 498,506 ----
|
||||
};
|
||||
|
||||
|
||||
! show_time(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
unsigned t;
|
||||
|
||||
***************
|
||||
*** 500,507 ****
|
||||
}
|
||||
|
||||
char *
|
||||
! status(task)
|
||||
struct task_struct *task;
|
||||
{
|
||||
static char buf[5] = " ";
|
||||
|
||||
--- 512,520 ----
|
||||
}
|
||||
|
||||
char *
|
||||
! status(task, stack)
|
||||
struct task_struct *task;
|
||||
+ reg_t * stack;
|
||||
{
|
||||
static char buf[5] = " ";
|
||||
|
||||
diff -c +recursive orig/ps-0.98/ps.h ps-0.98/ps.h
|
||||
*** orig/ps-0.98/ps.h Tue Sep 22 22:06:56 1992
|
||||
--- ps-0.98/ps.h Wed Nov 4 20:44:49 1992
|
||||
***************
|
||||
*** 21,42 ****
|
||||
|
||||
#define PAGE_MASK 0xfff
|
||||
|
||||
! #define KSTK_EIP(task) (*((unsigned long *)(task)+1019))
|
||||
! #define KSTK_ESP(task) (*((unsigned long *)(task)+1022))
|
||||
|
||||
! #define _SSIZE(task) (TASK_SIZE - KSTK_ESP(task))
|
||||
! #define SSIZE(task) (KSTK_ESP(task) ? _SSIZE(task) : 0)
|
||||
! #define VSIZE(task) (((task)->brk + 1023 + SSIZE(task)) / 1024)
|
||||
! #define SIZE(task) (((task)->brk - (task)->end_code + 1023 + \
|
||||
! SSIZE(task)) / 1024)
|
||||
|
||||
! typedef unsigned reg_t;
|
||||
!
|
||||
! union task_union {
|
||||
! struct task_struct task;
|
||||
! reg_t stack[PAGE_SIZE/4];
|
||||
! };
|
||||
|
||||
|
||||
char *find_func();
|
||||
unsigned long k_addr();
|
||||
--- 21,37 ----
|
||||
|
||||
#define PAGE_MASK 0xfff
|
||||
|
||||
! #define KSTK_EIP(stack) ((stack)[1019])
|
||||
! #define KSTK_ESP(stack) ((stack)[1022])
|
||||
|
||||
! #define _SSIZE(stack) (TASK_SIZE - KSTK_ESP(stack))
|
||||
! #define SSIZE(stack) (KSTK_ESP(stack) ? _SSIZE(stack) : 0)
|
||||
|
||||
! #define VSIZE(task,stack) (((task)->brk + 1023 + SSIZE(stack)) / 1024)
|
||||
! #define SIZE(task,stack) (((task)->brk - (task)->end_code + 1023 + \
|
||||
! SSIZE(stack)) / 1024)
|
||||
|
||||
+ typedef unsigned reg_t;
|
||||
|
||||
char *find_func();
|
||||
unsigned long k_addr();
|
||||
diff -c +recursive orig/ps-0.98/top.c ps-0.98/top.c
|
||||
*** orig/ps-0.98/top.c Fri Oct 16 19:55:57 1992
|
||||
--- ps-0.98/top.c Thu Nov 5 22:04:24 1992
|
||||
***************
|
||||
*** 54,60 ****
|
||||
char hdr[200];
|
||||
char *title="TOP by Roger Binns Ps (c) 1992 Branko Lankester";
|
||||
|
||||
! void do_it(struct task_struct *task, int num);
|
||||
void do_key(char c);
|
||||
char *cm, *clrtobot, *cl, *so, *se, *clrtoeol, *mb, *md, *us, *ue;
|
||||
char *outp;
|
||||
--- 54,60 ----
|
||||
char hdr[200];
|
||||
char *title="TOP by Roger Binns Ps (c) 1992 Branko Lankester";
|
||||
|
||||
! void do_it(struct task_struct *task, reg_t *stack, int num);
|
||||
void do_key(char c);
|
||||
char *cm, *clrtobot, *cl, *so, *se, *clrtoeol, *mb, *md, *us, *ue;
|
||||
char *outp;
|
||||
***************
|
||||
*** 424,430 ****
|
||||
show_procs()
|
||||
{
|
||||
struct task_struct *taskp;
|
||||
! union task_union task_buf;
|
||||
int tty, i, uid;
|
||||
off_t _task = k_addr("_task");
|
||||
|
||||
--- 424,431 ----
|
||||
show_procs()
|
||||
{
|
||||
struct task_struct *taskp;
|
||||
! struct task_struct task_buf;
|
||||
! char stack_buf[PAGE_SIZE];
|
||||
int tty, i, uid;
|
||||
off_t _task = k_addr("_task");
|
||||
|
||||
***************
|
||||
*** 436,450 ****
|
||||
if (taskp) {
|
||||
kmemread(&task_buf, taskp, sizeof(task_buf));
|
||||
/* check if valid, proc may have exited */
|
||||
! if ((unsigned) task_buf.task.state > 4 ||
|
||||
! task_buf.task.pid <= 0 && i != 0)
|
||||
continue;
|
||||
! do_it((struct task_struct *)&task_buf, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
! void do_it(struct task_struct *task, int num)
|
||||
{
|
||||
unsigned t, i;
|
||||
time_t now, start;
|
||||
--- 437,453 ----
|
||||
if (taskp) {
|
||||
kmemread(&task_buf, taskp, sizeof(task_buf));
|
||||
/* check if valid, proc may have exited */
|
||||
! if ((unsigned) task_buf.state > 4 ||
|
||||
! task_buf.pid <= 0 && i != 0 ||
|
||||
! !task_buf.kernel_stack_page)
|
||||
continue;
|
||||
! kmemread(&stack_buf, task_buf.kernel_stack_page, PAGE_SIZE);
|
||||
! do_it(&task_buf, (reg_t *) &stack_buf, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
! void do_it(struct task_struct *task, reg_t *stack, int num)
|
||||
{
|
||||
unsigned t, i;
|
||||
time_t now, start;
|
||||
***************
|
||||
*** 495,502 ****
|
||||
case P_NICE: sprintf(tmp, "%3d ", PZERO-task->priority); break;
|
||||
case P_PAGEIN: sprintf(tmp, "%6d ", task->maj_flt+(Sum ? task->cmaj_flt : 0)); break;
|
||||
case P_TSIZ: sprintf(tmp, "%5d ", task->end_code/1024); break;
|
||||
! case P_DSIZ: sprintf(tmp, "%5d ", SIZE(task)); break;
|
||||
! case P_SIZE: sprintf(tmp, "%5d ", VSIZE(task)); break;
|
||||
case P_TRS: sprintf(tmp, "%4d ", TRS); break;
|
||||
case P_SWAP: sprintf(tmp, "%4d ", SWAP); break;
|
||||
case P_SHARE: sprintf(tmp, "%5d ", SHARE); break;
|
||||
--- 498,505 ----
|
||||
case P_NICE: sprintf(tmp, "%3d ", PZERO-task->priority); break;
|
||||
case P_PAGEIN: sprintf(tmp, "%6d ", task->maj_flt+(Sum ? task->cmaj_flt : 0)); break;
|
||||
case P_TSIZ: sprintf(tmp, "%5d ", task->end_code/1024); break;
|
||||
! case P_DSIZ: sprintf(tmp, "%5d ", SIZE(task,stack)); break;
|
||||
! case P_SIZE: sprintf(tmp, "%5d ", VSIZE(task,stack)); break;
|
||||
case P_TRS: sprintf(tmp, "%4d ", TRS); break;
|
||||
case P_SWAP: sprintf(tmp, "%4d ", SWAP); break;
|
||||
case P_SHARE: sprintf(tmp, "%5d ", SHARE); break;
|
||||
***************
|
||||
*** 507,513 ****
|
||||
case P_WCHAN: sprintf(tmp, "%-9.9s ",
|
||||
(task->state == TASK_INTERRUPTIBLE ||
|
||||
task->state == TASK_UNINTERRUPTIBLE ?
|
||||
! wchan(task->tss.ebp, task) : "")); break;
|
||||
case P_STAT: sprintf(tmp, "%-4.4s ", status(task)); break;
|
||||
case P_TIME: sprintf(tmp, "%3d:%02d ", t/60, t%60); break;
|
||||
case P_COMMAND: strcpy(tmp, cmd_args(task)); break;
|
||||
--- 510,516 ----
|
||||
case P_WCHAN: sprintf(tmp, "%-9.9s ",
|
||||
(task->state == TASK_INTERRUPTIBLE ||
|
||||
task->state == TASK_UNINTERRUPTIBLE ?
|
||||
! wchan(task->tss.ebp, stack) : "")); break;
|
||||
case P_STAT: sprintf(tmp, "%-4.4s ", status(task)); break;
|
||||
case P_TIME: sprintf(tmp, "%3d:%02d ", t/60, t%60); break;
|
||||
case P_COMMAND: strcpy(tmp, cmd_args(task)); break;
|
||||
66
Linux-0.98/sources/sbin/strace.README
Normal file
66
Linux-0.98/sources/sbin/strace.README
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* @(#)README 1.4 91/09/06
|
||||
*
|
||||
* Copyright (C) 1991 Paul Kranenburg.
|
||||
*
|
||||
* Please send comments, enhancements or any other useful ideas to
|
||||
* the address at the end of this file.
|
||||
*
|
||||
*/
|
||||
|
||||
strace(1) is a system call tracer for Sun(tm) systems much like the
|
||||
Sun supplied program trace(1). strace(1) is a useful utility to sort
|
||||
of debug programs for which no source is available which unfortunately
|
||||
includes almost all of the Sun supplied system software.
|
||||
|
||||
Like trace(1), strace displays each system call and its arguments as it
|
||||
is invoked by the traced process, but tries to do a better job of
|
||||
decoding the arguments, displaying them in symbolic format whenever
|
||||
possible. Passed structures/character arrays are read from the process'
|
||||
address space and displayed in an appropriate format.
|
||||
|
||||
It is also possible to instruct strace to trace child processes as
|
||||
they are created by the fork(2) system call. However, this is slightly
|
||||
involved for two reasons: 1) the trace flag is cleared in the child
|
||||
process by the fork system call, so we must make a special effort to
|
||||
gain control of the child (see NOTES below), 2) our tracing manipulations
|
||||
of the child may interfere with a possible wait(2) system call executed
|
||||
by the (also traced) parent process. In this case we don't allow the parent
|
||||
to continue until one of its children enters a state that may cause the
|
||||
parent's wait(2) call to return.
|
||||
|
||||
|
||||
NOTES.
|
||||
|
||||
o Not all system calls have been implemented yet as described
|
||||
above (see dummy.h for a list), these calls only have their args
|
||||
displayed as hex numbers.
|
||||
|
||||
o The program draws heavily on Sun's extensions to the ptrace(2)
|
||||
system call.
|
||||
|
||||
o This release is based upon SunOS 4.1.1. The syscall list (syscall.h)
|
||||
and ioctl's (ioctlent.h) are probably most critically dependant
|
||||
on the OS version (see also /sys/os/init_sysent.c).
|
||||
|
||||
o The way in which child processes are caught and attached to after
|
||||
the fork() call is Sparc-specific (in fact it has the looks of a
|
||||
terrible hack). Also, this trick won't work with vfork(2).
|
||||
Enhancements are sollicited for.
|
||||
|
||||
|
||||
INSTALLATION.
|
||||
|
||||
Edit the paths in the Makefile to suit your local system.
|
||||
Enter the usual make commands (`make debug' to enable the
|
||||
compiler `-g' flag).
|
||||
|
||||
|
||||
COMMENTS TO:
|
||||
|
||||
P. Kranenburg
|
||||
Department of Computer Science
|
||||
Erasmus University Rotterdam
|
||||
P.O. Box 1738
|
||||
NL-3000 DR Rotterdam
|
||||
e-mail: pk@cs.few.eur.nl
|
||||
1053
Linux-0.98/sources/sbin/syslogd.c
Normal file
1053
Linux-0.98/sources/sbin/syslogd.c
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Linux-0.98/sources/sbin/syslogs.c.Z.uue
Normal file
BIN
Linux-0.98/sources/sbin/syslogs.c.Z.uue
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/sbin/sysvboot.taz
Normal file
BIN
Linux-0.98/sources/sbin/sysvboot.taz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/0.98.4-swap-patch
Normal file
BIN
Linux-0.98/sources/system/0.98.4-swap-patch
Normal file
Binary file not shown.
248
Linux-0.98/sources/system/NFS/nfs-client-0.3a.README
Normal file
248
Linux-0.98/sources/system/NFS/nfs-client-0.3a.README
Normal file
@@ -0,0 +1,248 @@
|
||||
These are the release notes for the NFS filesystem for Linux.
|
||||
|
||||
* Current Version
|
||||
|
||||
- NFS version 0.3a for Linux 0.98 patchlevel 6
|
||||
|
||||
* Status
|
||||
|
||||
- BETA, use with caution
|
||||
|
||||
* Limitations
|
||||
|
||||
- no read/write caching, minimal lookup/attribute caching, can't run binaries
|
||||
|
||||
* Copyright
|
||||
|
||||
- Rick Sladkey <jrs@world.std.com>
|
||||
|
||||
* Distrubution
|
||||
|
||||
- GNU copyleft as outlined in the GNU Public License version 2
|
||||
|
||||
* Where Available
|
||||
|
||||
- anonymous ftp from tsx-11.mit.edu:/pub/linux/ALPHA/NFS/nfs-client-0.3a.tar.Z
|
||||
|
||||
* References
|
||||
|
||||
- "NFS: Network File System Protocol specification," RFC 1094
|
||||
- "RPC: Remote Procedure Call Protocol specification version 2," RFC 1057
|
||||
- "XDR: External Data Representation standard," RFC 1014
|
||||
- "User Datagram Protocol," RFC 768
|
||||
- "Managing NFS and NIS," Hal Stern, O'Reilly, ISBN 0-937175-75-7
|
||||
|
||||
* How to Install
|
||||
|
||||
- please read this entire document before performing any installation
|
||||
- ensure that TCP/IP is in your kernel and your network is set up and works
|
||||
- unpack the main distribution somewhere
|
||||
- unpack linux.tar in /usr/src, no existing kernel files will be overwritten
|
||||
- patch the kernel from /usr/src using nfs.diffs, e.g. "patch -p0 <nfs.diffs"
|
||||
- carefully note and manually install any failed patches or stop now
|
||||
- run make dep in the kernel source directory
|
||||
- rebuild the new kernel remembering to save your old one
|
||||
- unpack mount.tar and shutdown.tar somewhere
|
||||
- backup or save your old "mount", "umount" and "shutdown" commands
|
||||
- install the new "mount", "umount" and "shutdown" commands
|
||||
- recompile and install the "ps" suite of programs
|
||||
- if your fstab mounts /proc then change the device from /dev/ram to none
|
||||
- install and reboot the new kernel
|
||||
|
||||
* How to Use
|
||||
|
||||
- locate an NFS server and a directory that you can mount
|
||||
- ensure that your server's sysadmin has exported the filesystem to you
|
||||
- ensure that your uids and gids match those used by the server
|
||||
- ensure that you have created the mount point for the directory
|
||||
- issue the command "/etc/mount server-name:/server-dir /local-dir"
|
||||
- cd into the new filesystem and test it
|
||||
- optionally add one or more entries to your /etc/fstab with a type of "nfs"
|
||||
|
||||
* Special Notes
|
||||
|
||||
- modified mount command
|
||||
|
||||
I have included a modified mount command based on Doug Quale's
|
||||
fstab-based mount package for Linux. This section describes the new
|
||||
mount command and why I had to modify it.
|
||||
|
||||
The mount program plays a crucial role in the NFS filesystem. Unlike
|
||||
many other filesystems, mount "knows about" NFS and performs actions
|
||||
specific to the nfs type. Things such as looking up the IP addresses
|
||||
of hostnames or contacting portmappers and mount daemons are done by
|
||||
the mount program on behalf of the kernel. Then the mount program
|
||||
passes a special data structure to the kernel through the mount system
|
||||
call.
|
||||
|
||||
New options specific to the nfs type of filesystem:
|
||||
|
||||
option (default) meaning
|
||||
-------------------------------------------------------------
|
||||
noac (off) no attribute caching
|
||||
rsize=n (1024) read buffer size
|
||||
wsize=n (1024) write buffer size
|
||||
hard (on) retry operations indefinitely
|
||||
soft (off) return I/O error after a major timeout
|
||||
timeo=n (7) timeout before retransmission in tenths of a second
|
||||
retrans=n (3) number of minor timeouts before a major timeout
|
||||
acregmin=n (3) minimum seconds to cache attributes of regular files
|
||||
acregmax=n (30) maximum seconds to cache attributes of regular files
|
||||
acdirmin=n (30) minimum seconds to cache attributes of directories
|
||||
acdirmax=n (60) maximum seconds to cache attributes of directories
|
||||
actimeo=n sets all attribute caching timeouts at once
|
||||
port=n (2049) which port to find the nfs service on
|
||||
|
||||
Other options which are parsed but not yet implemented:
|
||||
|
||||
option (default) meaning
|
||||
-------------------------------------------------------------
|
||||
nocto off supress fresh attribute on file creation
|
||||
posix off request posix semantics on the mounted filesystem
|
||||
intr off allow signals to interrupt a pending transaction
|
||||
bg off retry the mount in the background
|
||||
fg on try the remote mount only in the foreground
|
||||
|
||||
For example to mount a filesystem with a read and write buffer sizes
|
||||
of 2048, use "mount -o rsize=2048,wsize=2048 server:/server-dir /local-dir".
|
||||
|
||||
- modified umount command
|
||||
|
||||
I also modified Doug's umount command. This sections describes why.
|
||||
|
||||
The traditional umount system call accepted the name of a block device
|
||||
as its argument. For "virtual" filesystems that are not assosicated
|
||||
with true hardware block devices, it is awkward to provide a suitable
|
||||
argument to umount. For this reason, the mount system call now
|
||||
accepts and understands mount points as well as block devices. Since
|
||||
all filesystems must have a distinct mount point by definition, this
|
||||
interface is better suited for systems supporting virtual filesystems.
|
||||
The umount command must use this new system call interface to properly
|
||||
unmount virtual filesystems.
|
||||
|
||||
- modified shutdown command
|
||||
|
||||
I have included the shutdown command from Peter Orbaek's admutils-1.4
|
||||
package. It includes some changes I made for NFS. If you already
|
||||
have installed admutils-1.4, you don't need this version.
|
||||
|
||||
This version of shutdown (and reboot and halt) attempts to call
|
||||
"umount -a" to unmount all filesystems and then, if that fails, it
|
||||
tries to unmount them itself using the umount principles described
|
||||
above. In such a case it offers a few new features such as unmounting
|
||||
filesystems in reverse order and not giving a message about failing to
|
||||
unmount the root partition.
|
||||
|
||||
- backward compatibility of mount, umount and shutdown
|
||||
|
||||
I made some small concessions to purity to allow all the modified
|
||||
commands to continue to work correctly with older kernels. Therefore,
|
||||
these versions are suitable for general use by older kernels, as well
|
||||
as newer kernels with or without TCP/IP and NFS.
|
||||
|
||||
- /etc/rc and fstab considerations
|
||||
|
||||
If you include nfs mounts in your fstab, then you should change your
|
||||
/etc/rc to run "mount -vat nonfs" instead of "mount -va" because your
|
||||
networking will not have been configured yet and any NFS mounts will
|
||||
fail at that point. Then you can add "mount -vat nfs" to the end of
|
||||
your rc.net file to mount any NFS filesystems after the network is up.
|
||||
|
||||
- increasing the maximum number of mounted filesystems
|
||||
|
||||
The standard Linux kernel allows 16 filesystems to be mounted.
|
||||
With your ordinary filesystems and several NFS filesystems, you may
|
||||
run up against this limit. The limit of 16 is coded as
|
||||
NR_SUPER in /usr/src/linux/include/linux/limits.h. You may increase
|
||||
this value as needed.
|
||||
|
||||
- retransmission timeout values
|
||||
|
||||
If you have a slow or busy server or your system is separated from your
|
||||
server by a router or serveral bridges, you may get better performance
|
||||
by increasing the default retransmission timeout value. The value of
|
||||
7 equations to 0.7 seconds. You might try doubling it and see if it
|
||||
improves performance. See the Stern book for a detailed explanation
|
||||
on how the timeout mechanism works.
|
||||
|
||||
- nomenclature
|
||||
|
||||
It may seem redundant to use the phrase "NFS filesystem" since NFS
|
||||
stands for "Network File System" but the name actually refers to an
|
||||
NFS client as opposed to an NFS server. Thus, an unqualified
|
||||
reference to NFS includes both aspects of the NFS protocol. In this
|
||||
context, "NFS filesystem" refers to the implementation of an NFS
|
||||
client within an operating system or to the local directory structure
|
||||
of a remote filesystem.
|
||||
|
||||
* General NFS Usage Guidelines
|
||||
|
||||
- read-only filesystems
|
||||
|
||||
Your mount of a server's filesystem should match the ro/rw option with
|
||||
that of the server. However, you may still mount it read-only even if
|
||||
the server exports it read-write for extra safety during testing. If
|
||||
you mount it read-write and the server exports it as read-only you
|
||||
will receive EROFS (Read-only filesystem) errors from the server when
|
||||
attempting to write to the filesystem.
|
||||
|
||||
- mapping of root privileges
|
||||
|
||||
It is quite likely that your server will not allow root on your system
|
||||
to be mapped into root on the server. For this reason, you should
|
||||
generally access NFS mounted filesystems using a uid that is valid on
|
||||
that system. Even so, root will be allowed to access world-readable or
|
||||
world-writable files and directories. Just be aware that being root
|
||||
on an NFS client is sometimes the least privileged user you could
|
||||
possibly be.
|
||||
|
||||
* Change Log
|
||||
|
||||
- Version 0.3 dated 92-11-09
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Fixed a problem where current->timeout was not being reset to zero.
|
||||
|
||||
Fixed a minor memory leak in nfs_follow_link (reported and fixed
|
||||
by Phil Packer <pep@wicked.demon.co.uk>).
|
||||
|
||||
New features:
|
||||
|
||||
NFS kernel diffs now incorporated into Linux kernel 0.98 patchlevel 4.
|
||||
Shutdown diffs now incorporated into admutils-1.4.
|
||||
Changed malloc functions to use new kmalloc interface.
|
||||
|
||||
- Version 0.2a dated 92-11-02
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Fixed a "bug" where symlinks would crash SunOS (reported and fixed
|
||||
by <jon@robots.ox.ac.uk>).
|
||||
|
||||
Fixed a minor memory leak and a fence-post bug in nfs_symlink.
|
||||
|
||||
- Version 0.2 dated 92-11-01
|
||||
|
||||
New features:
|
||||
|
||||
Timeout and retransmission are fully implemented (should fix any "hangs").
|
||||
Preliminary lookup and attribute caching (better results with ls, pwd, etc.).
|
||||
All mount options parsed and many implemented (rsize, timeo, etc.).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Now du reports block counts correctly (reported by Bob Green
|
||||
<bob@inmos.co.uk>).
|
||||
|
||||
Fixed chmod on directories (reported by Ray Bellis <rpb@psy.oxford.ac.uk>).
|
||||
|
||||
Fixed hard links (reported by Ray Bellis <rpb@psy.oxford.ac.uk>).
|
||||
|
||||
Fixed mount points inside NFS filesystems (reported by Peter Chubb
|
||||
<peterc@suite.sw.oz.au>).
|
||||
|
||||
- Version 0.1 dated 92-10-28
|
||||
|
||||
First released version. No timeout or retransmission. Only readir caching.
|
||||
|
||||
222
Linux-0.98/sources/system/NFS/rpc/sunrpc-bin-4.0.README
Normal file
222
Linux-0.98/sources/system/NFS/rpc/sunrpc-bin-4.0.README
Normal file
@@ -0,0 +1,222 @@
|
||||
This is a binary distribution of sunrpc-4.0 compiled for Linux.
|
||||
|
||||
It is the RPC (Remote Procedure Call) and XDR (eXternal Data Represenation)
|
||||
library together with support programs. The original freely distributable
|
||||
sunrpc was written by Sun Microsystems for BSD systems. I did not include
|
||||
any secure_rpc stuff because I don't think it is very widely used and the
|
||||
secure_rpc distribution didn't include the necessary DES encrpytion.
|
||||
|
||||
I did a fair amount of hacking to get it to work with Linux. Plus
|
||||
I fixed a couple of ugly bugs.
|
||||
|
||||
The archive includes:
|
||||
|
||||
README this file
|
||||
etc/rpc RPC services files
|
||||
etc/portmap RPC portmapper daemon
|
||||
etc/rpcinfo RPC status reporting program
|
||||
usr/bin/rpcgen RPC protocol compiler
|
||||
usr/bin/rstat RPC sample remote status program
|
||||
usr/lib/librpclib.a RPC and XDR library
|
||||
usr/include/rpc/* RPC library include files
|
||||
usr/include/rpcsvc/* RPC protocol descriptions and header files
|
||||
usr/man/man[1358]/* RPC man pages
|
||||
|
||||
The binaries were compiled with version 4.1 jump-table libraries.
|
||||
They will not work with Linux TCP/IP 0.8.1 without the kernel patch at the
|
||||
end of this file. I have sent it to Ross and he may include in the next
|
||||
release. Even if you don't apply the patch you can still use the library
|
||||
and header files for porting.
|
||||
|
||||
You must have a /usr/etc/inet/protocols file for some of the programs
|
||||
to work. Here is one I cooked up:
|
||||
|
||||
$ cat /usr/etc/inet/protocols
|
||||
# protocols - standard well defined IP protocols
|
||||
ip 0
|
||||
icmp 1
|
||||
ggp 2
|
||||
tcp 6
|
||||
egp 8
|
||||
pup 12
|
||||
udp 17
|
||||
idp 22
|
||||
raw 255
|
||||
|
||||
Also make sure you have the following lines in /usr/etc/inet/services:
|
||||
|
||||
$ grep sunrpc /usr/etc/inet/services
|
||||
sunrpc 111/tcp
|
||||
sunrpc 111/udp
|
||||
|
||||
Here is how you use the portmapper. In your rc/rc.local/rc.net or whatever
|
||||
put the following fragment after you configure TCP/IP:
|
||||
|
||||
if [ -f /etc/portmap ]
|
||||
then
|
||||
echo "Starting portmapper..."
|
||||
/etc/portmap
|
||||
fi
|
||||
|
||||
Then if you have TCP/IP in your kernel and have applied the patch you
|
||||
can say:
|
||||
|
||||
$ /etc/rpcinfo -p
|
||||
program vers proto port
|
||||
100000 2 tcp 111 portmapper
|
||||
100000 2 udp 111 portmapper
|
||||
|
||||
If you get "Connection refused" you probably haven't applied the patch.
|
||||
|
||||
If all is well you can go to another machine on the net and say:
|
||||
|
||||
$ /etc/rpcinfo -p your-hostname
|
||||
program vers proto port
|
||||
100000 2 tcp 111 portmapper
|
||||
100000 2 udp 111 portmapper
|
||||
|
||||
This is not very useful unless you have some RPC services to provide.
|
||||
I have not yet finished porting rstat_svc which is very BSD-kernel oriented.
|
||||
When I do, you will be apply to run Sun's Performance Meter to display
|
||||
information about your Linux machine.
|
||||
|
||||
I will be releasing my port of a mount daemon and nfs server daemon shortly.
|
||||
|
||||
You don't need to run the portmapper or apply the patch to use RPC services
|
||||
on other machines. The only programs in this distribution that can do that
|
||||
are rpcinfo and rstat.
|
||||
|
||||
Enjoy,
|
||||
|
||||
Rick Sladkey
|
||||
jrs@world.std.com
|
||||
|
||||
Patch relative to TCP/IP version 0.8.1 follows:
|
||||
|
||||
*** sock.h~ Thu Sep 10 12:34:07 1992
|
||||
--- sock.h Tue Sep 15 01:12:37 1992
|
||||
***************
|
||||
*** 41,47 ****
|
||||
unsigned long inuse:1, dead:1, urginline:1,
|
||||
intr:1, blog:1, done:1, reuse:1, keepopen:1, linger:1,
|
||||
delay_acks:1, timeout:3, destroy:1, ack_timed:1, no_check:1,
|
||||
! exp_growth:1;
|
||||
int proc;
|
||||
volatile struct sock *next;
|
||||
volatile struct sock *pair;
|
||||
--- 41,47 ----
|
||||
unsigned long inuse:1, dead:1, urginline:1,
|
||||
intr:1, blog:1, done:1, reuse:1, keepopen:1, linger:1,
|
||||
delay_acks:1, timeout:3, destroy:1, ack_timed:1, no_check:1,
|
||||
! exp_growth:1, user_bound:1;
|
||||
int proc;
|
||||
volatile struct sock *next;
|
||||
volatile struct sock *pair;
|
||||
*** sock.c~ Sat Sep 12 12:26:56 1992
|
||||
--- sock.c Tue Sep 15 01:10:05 1992
|
||||
***************
|
||||
*** 729,735 ****
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EPERM);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
--- 729,735 ----
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EACCES);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
***************
|
||||
*** 748,754 ****
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EPERM);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
--- 748,754 ----
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EACCES);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
***************
|
||||
*** 800,805 ****
|
||||
--- 800,806 ----
|
||||
sk->state = TCP_CLOSE;
|
||||
sk->dead = 0;
|
||||
sk->ack_timed = 0;
|
||||
+ sk->user_bound = 0;
|
||||
|
||||
/* this is how many unacked bytes we will accept for
|
||||
this socket. */
|
||||
***************
|
||||
*** 936,942 ****
|
||||
return (0);
|
||||
}
|
||||
/* check this error. */
|
||||
! if (sk->state != TCP_CLOSE) return (-EIO);
|
||||
verify_area (uaddr, addr_len);
|
||||
memcpy_fromfs (&addr, uaddr, min (sizeof (addr), addr_len));
|
||||
if (addr.sin_family && addr.sin_family != AF_INET)
|
||||
--- 937,944 ----
|
||||
return (0);
|
||||
}
|
||||
/* check this error. */
|
||||
! if (sk->state != TCP_CLOSE) return (-EINVAL);
|
||||
! if (sk->user_bound) return (-EINVAL);
|
||||
verify_area (uaddr, addr_len);
|
||||
memcpy_fromfs (&addr, uaddr, min (sizeof (addr), addr_len));
|
||||
if (addr.sin_family && addr.sin_family != AF_INET)
|
||||
***************
|
||||
*** 957,963 ****
|
||||
}
|
||||
|
||||
if (snum <= PROT_SOCK && !suser())
|
||||
! return (-EPERM);
|
||||
|
||||
if (my_ip_addr(addr.sin_addr.s_addr) || addr.sin_addr.s_addr == 0)
|
||||
sk->saddr = addr.sin_addr.s_addr;
|
||||
--- 959,965 ----
|
||||
}
|
||||
|
||||
if (snum <= PROT_SOCK && !suser())
|
||||
! return (-EACCES);
|
||||
|
||||
if (my_ip_addr(addr.sin_addr.s_addr) || addr.sin_addr.s_addr == 0)
|
||||
sk->saddr = addr.sin_addr.s_addr;
|
||||
***************
|
||||
*** 980,985 ****
|
||||
--- 982,988 ----
|
||||
sk->dummy_th.source = net16(sk->num);
|
||||
sk->daddr = 0;
|
||||
sk->dummy_th.dest = 0;
|
||||
+ sk->user_bound = 1;
|
||||
return (0);
|
||||
}
|
||||
|
||||
***************
|
||||
*** 1290,1296 ****
|
||||
|
||||
case IP_SET_DEV:
|
||||
if (!suser())
|
||||
! return (-EPERM);
|
||||
return (ip_set_dev((struct ip_config *)arg));
|
||||
#if 0
|
||||
case IP_ADD_ROUTE:
|
||||
--- 1293,1299 ----
|
||||
|
||||
case IP_SET_DEV:
|
||||
if (!suser())
|
||||
! return (-EACCES);
|
||||
return (ip_set_dev((struct ip_config *)arg));
|
||||
#if 0
|
||||
case IP_ADD_ROUTE:
|
||||
164
Linux-0.98/sources/system/efs/efsprogs9.README
Normal file
164
Linux-0.98/sources/system/efs/efsprogs9.README
Normal file
@@ -0,0 +1,164 @@
|
||||
README file for the ext file system
|
||||
|
||||
Release 0a9
|
||||
04.11.92
|
||||
|
||||
Remy Card
|
||||
(card@masi.ibp.fr)
|
||||
|
||||
|
||||
|
||||
This file documents the ext file system for Linux and the programs
|
||||
needed to use this file system
|
||||
|
||||
The ext file system
|
||||
===================
|
||||
|
||||
The ext file system is an extension of the minix file system to get rid
|
||||
of its restrictions.
|
||||
|
||||
The ext file system allows :
|
||||
- varying length file names from 1 to 255 characters,
|
||||
- a maximum of 4 Giga blocks per file system, so the maximum size of
|
||||
a file system is 4 Tera bytes,
|
||||
- a maximum size of 16 Giga bytes per file,
|
||||
- a free blocks/inodes management with a linked list so no more
|
||||
disk space is "lost" for bitmaps.
|
||||
|
||||
Limitations of the ext file system
|
||||
==================================
|
||||
|
||||
The ext file system is not yet finished and some modifications will
|
||||
be made in the future. The current restrictions are :
|
||||
- some functions in the code are not very well written,
|
||||
- the ext file system is only able to manage 1024 bytes blocks. Some
|
||||
people are working to allow the Linux buffer cache to manage bigger
|
||||
blocks. When it is done, the ext file system will support bigger
|
||||
blocks.
|
||||
|
||||
Status of the ext file system
|
||||
=============================
|
||||
|
||||
Since release 0.96c, the ext file system has been integrated in Linux.
|
||||
So, there is nothing to modify in the kernel to use this file system. However,
|
||||
this file system is currently in alpha test and may contain some bugs.
|
||||
|
||||
How to use the ext file system
|
||||
==============================
|
||||
|
||||
To use the ext file system, you have to get linux 0.96c or latter.
|
||||
You also need two programs to create a file system and check that it is
|
||||
consistent.
|
||||
|
||||
These two programs can be obtained by anonymous FTP on ftp-masi.ibp.fr
|
||||
[132.227.64.26] in the file pub/linux/ALPHA/extfs/efsprogs9.tar.Z or on
|
||||
tsx-11.mit.edu in the file pub/linux/ALPHA/extfs/efsprogs9.tar.Z. This
|
||||
file contains the source and binary programs (compiled with GCC 2.2.2d and
|
||||
linked static) for mkefs (make ext file system) and efsck (ext file system
|
||||
check). You can also take the file efsprogs9.src.tar.Z which contains only the
|
||||
source programs or the file efsprogs9.bin.tar.Z which contains only the binary
|
||||
programs.
|
||||
|
||||
You also need to get the new mount and df command from the latest
|
||||
rootimage. These two commands now use the Linux VFS layer and can be used
|
||||
with any file system integrated in Linux.
|
||||
|
||||
Last, you must recompile every program using the readdir() function
|
||||
with a version of GCC greater than 2.1 (I suggest using GCC 2.2.2d which is the
|
||||
"official" C compiler for Linux). Some programs using readdir() are : the GNU
|
||||
fileutils, tar, the shells (bash, tcsh, zsh), ...
|
||||
|
||||
Using an ext file system
|
||||
========================
|
||||
|
||||
To create an ext file system, you must use the mkefs command. Its
|
||||
syntax is :
|
||||
mkefs [-c | -l filename] [-i bytes_per_inode] /dev/hdXX size_in_blocks
|
||||
|
||||
The arguments for mkefs are :
|
||||
-c tests bad blocks on the file system,
|
||||
-l file reads the list of bad blocks from the file,
|
||||
-i bpi specifies the inode ratio.
|
||||
|
||||
To mount an ext file system, you must use the new mount command. The
|
||||
syntax is : mount -t ext /dev/hdXX /dir
|
||||
|
||||
You can also add a line to the file /etc/fstab if you want the ext file
|
||||
system to be mounted when the system is booted. The format of this line is :
|
||||
/dev/hdXX /dir ext defaults
|
||||
|
||||
After mounting an ext file system, you can use it by the standard
|
||||
Linux commands (ls, rm, cp, mv, ...).
|
||||
|
||||
You can unmount an ext file system by the command :
|
||||
umount /dev/hdXX
|
||||
|
||||
You can check an ext file system by using the efsck command. Its syntax
|
||||
is :
|
||||
efsck [-larvsdtS] /dev/hdXX
|
||||
|
||||
The arguments for efsck are :
|
||||
-l lists all the file names in the file system
|
||||
-a automaically repairs the file system (use with caution)
|
||||
-r interactively repairs the file system
|
||||
-v verbose execution
|
||||
-s lists the super block informations
|
||||
-d prints debugging output (not very useful except for me
|
||||
when I try to find bugs in efsck...)
|
||||
-t tests for bad blocks on the file system
|
||||
-S salvages the blocks/inodes free lists
|
||||
|
||||
Important warnings:
|
||||
-------------------
|
||||
1/ efsck comes with NO WARRANTY !! I have written it by using the
|
||||
minix file system fsck program and it seems to work for me but it has not
|
||||
been extensively tested. I do not know is fsck is able to repair every
|
||||
kind of inconsistency. I suggest that you don't use the -a parameter.
|
||||
|
||||
2/ when efsck discovers problems in the free blocks/inodes linked lists,
|
||||
it salvages the lists, i.e. rebuilds them. If efsck rebuilds the lists, there
|
||||
may problems if the file system is mounted because a copy of the first free
|
||||
block number and first free inode number is kept in memory for mounted file
|
||||
systems. If the lists are salvaged, the first free block and first free inode
|
||||
can change and be different from the ones kept in memory. efsck tries to keep
|
||||
the same first free block/inode but it is not always possible. When one is
|
||||
changed, it now prints a warning message.
|
||||
|
||||
Future work on the ext fs
|
||||
=========================
|
||||
|
||||
I plan to modify the ext file system to add functionalities or
|
||||
remove some of its limitations :
|
||||
- be sure that the efsck program is good and fix its bugs if any,
|
||||
- fix bugs reported by alpha-testers,
|
||||
- use bigger blocks as soon as the buffer cache will be able to
|
||||
manage them, and perhaps use different block sizes in the same
|
||||
file system (like fragments in BSD).
|
||||
|
||||
The next release of the ext fs won't be compatible with the current
|
||||
one, i.e. a current file system won't be managed by the new code. However,
|
||||
the new ext fs will be able to coexist with the current one so transition
|
||||
will be easy. Moreover, a program will be available to convert a current ext
|
||||
fs to the new format.
|
||||
|
||||
How to report bugs
|
||||
==================
|
||||
|
||||
If you encounters a strange behaviour of the ext file system or of
|
||||
the mkefs and efsck programs, feel free to report them to me (card@masi.ibp.fr)
|
||||
so that I can find the bugs and fix them. It is also a good idea to report them
|
||||
to the KERNEL channel of the mailing list and I will send the fixes to this
|
||||
list.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
The ext fs code originates in the Minix fs management written by Linus
|
||||
Torvalds. Linus also gave some very good advices during the design of the
|
||||
ext fs.
|
||||
|
||||
I'd like to thank all alpha testers who report bugs or success. These
|
||||
reports help me to improve the ext fs.
|
||||
|
||||
Last but not least, my acknowledgements go to Wayne Davison who makes
|
||||
a good work in mkefs, efsck and the future conversion program.
|
||||
BIN
Linux-0.98/sources/system/linux-0.98.1.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.1.tar.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.2.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.2.tar.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.3.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.3.tar.gz
Normal file
Binary file not shown.
656
Linux-0.98/sources/system/linux-0.98.4-swappatch
Normal file
656
Linux-0.98/sources/system/linux-0.98.4-swappatch
Normal file
@@ -0,0 +1,656 @@
|
||||
diff -c +recursive 0.98.4/linux/fs/stat.c linux/fs/stat.c
|
||||
*** 0.98.4/linux/fs/stat.c Fri Nov 6 00:50:09 1992
|
||||
--- linux/fs/stat.c Tue Nov 10 12:54:53 1992
|
||||
***************
|
||||
*** 15,21 ****
|
||||
{
|
||||
struct old_stat tmp;
|
||||
|
||||
! printk("Warning: using old stat() call. Recompile your binary.\n");
|
||||
verify_area(statbuf,sizeof (*statbuf));
|
||||
tmp.st_dev = inode->i_dev;
|
||||
tmp.st_ino = inode->i_ino;
|
||||
--- 15,22 ----
|
||||
{
|
||||
struct old_stat tmp;
|
||||
|
||||
! printk("Warning: %s using old stat() call. Recompile your binary.\n",
|
||||
! current->comm);
|
||||
verify_area(statbuf,sizeof (*statbuf));
|
||||
tmp.st_dev = inode->i_dev;
|
||||
tmp.st_ino = inode->i_ino;
|
||||
diff -c +recursive 0.98.4/linux/include/linux/sched.h linux/include/linux/sched.h
|
||||
*** 0.98.4/linux/include/linux/sched.h Sun Nov 8 22:20:54 1992
|
||||
--- linux/include/linux/sched.h Tue Nov 10 22:00:09 1992
|
||||
***************
|
||||
*** 71,76 ****
|
||||
--- 71,77 ----
|
||||
#define TASK_UNINTERRUPTIBLE 2
|
||||
#define TASK_ZOMBIE 3
|
||||
#define TASK_STOPPED 4
|
||||
+ #define TASK_SWAPPING 5
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *) 0)
|
||||
***************
|
||||
*** 270,276 ****
|
||||
extern void sleep_on(struct wait_queue ** p);
|
||||
extern void interruptible_sleep_on(struct wait_queue ** p);
|
||||
extern void wake_up(struct wait_queue ** p);
|
||||
! extern void wake_one_task(struct task_struct * p);
|
||||
|
||||
extern int send_sig(long sig,struct task_struct * p,int priv);
|
||||
extern int in_group_p(gid_t grp);
|
||||
--- 271,277 ----
|
||||
extern void sleep_on(struct wait_queue ** p);
|
||||
extern void interruptible_sleep_on(struct wait_queue ** p);
|
||||
extern void wake_up(struct wait_queue ** p);
|
||||
! extern void wake_up_interruptible(struct wait_queue ** p);
|
||||
|
||||
extern int send_sig(long sig,struct task_struct * p,int priv);
|
||||
extern int in_group_p(gid_t grp);
|
||||
diff -c +recursive 0.98.4/linux/kernel/blk_drv/ll_rw_blk.c linux/kernel/blk_drv/ll_rw_blk.c
|
||||
*** 0.98.4/linux/kernel/blk_drv/ll_rw_blk.c Wed Nov 4 20:47:26 1992
|
||||
--- linux/kernel/blk_drv/ll_rw_blk.c Tue Nov 10 21:54:23 1992
|
||||
***************
|
||||
*** 238,244 ****
|
||||
req->waiting = current;
|
||||
req->bh = NULL;
|
||||
req->next = NULL;
|
||||
! current->state = TASK_UNINTERRUPTIBLE;
|
||||
add_request(major+blk_dev,req);
|
||||
schedule();
|
||||
}
|
||||
--- 238,244 ----
|
||||
req->waiting = current;
|
||||
req->bh = NULL;
|
||||
req->next = NULL;
|
||||
! current->state = TASK_SWAPPING;
|
||||
add_request(major+blk_dev,req);
|
||||
schedule();
|
||||
}
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/atixlmouse.c linux/kernel/chr_drv/atixlmouse.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/atixlmouse.c Sat Oct 17 13:47:35 1992
|
||||
--- linux/kernel/chr_drv/atixlmouse.c Tue Nov 10 22:30:04 1992
|
||||
***************
|
||||
*** 73,79 ****
|
||||
mouse.latch_buttons |= inb( ATIXL_MSE_DATA_PORT);
|
||||
ATIXL_MSE_ENABLE_UPDATE();
|
||||
mouse.ready = 1;
|
||||
! wake_up(&mouse.wait);
|
||||
}
|
||||
|
||||
static void release_mouse(struct inode * inode, struct file * file)
|
||||
--- 73,79 ----
|
||||
mouse.latch_buttons |= inb( ATIXL_MSE_DATA_PORT);
|
||||
ATIXL_MSE_ENABLE_UPDATE();
|
||||
mouse.ready = 1;
|
||||
! wake_up_interruptible(&mouse.wait);
|
||||
}
|
||||
|
||||
static void release_mouse(struct inode * inode, struct file * file)
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/busmouse.c linux/kernel/chr_drv/busmouse.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/busmouse.c Sat Oct 17 13:47:35 1992
|
||||
--- linux/kernel/chr_drv/busmouse.c Tue Nov 10 22:30:04 1992
|
||||
***************
|
||||
*** 53,59 ****
|
||||
mouse.dx += dx;
|
||||
mouse.dy += dy;
|
||||
mouse.ready = 1;
|
||||
! wake_up(&mouse.wait);
|
||||
MSE_INT_ON();
|
||||
}
|
||||
|
||||
--- 53,59 ----
|
||||
mouse.dx += dx;
|
||||
mouse.dy += dy;
|
||||
mouse.ready = 1;
|
||||
! wake_up_interruptible(&mouse.wait);
|
||||
MSE_INT_ON();
|
||||
}
|
||||
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/console.c linux/kernel/chr_drv/console.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/console.c Sat Sep 19 14:29:29 1992
|
||||
--- linux/kernel/chr_drv/console.c Tue Nov 10 22:30:04 1992
|
||||
***************
|
||||
*** 905,911 ****
|
||||
int c;
|
||||
unsigned int currcons;
|
||||
|
||||
! wake_up(&tty->write_q.proc_list);
|
||||
currcons = tty->line - 1;
|
||||
if (currcons >= NR_CONSOLES) {
|
||||
printk("con_write: illegal tty (%d)\n", currcons);
|
||||
--- 905,911 ----
|
||||
int c;
|
||||
unsigned int currcons;
|
||||
|
||||
! wake_up_interruptible(&tty->write_q.proc_list);
|
||||
currcons = tty->line - 1;
|
||||
if (currcons >= NR_CONSOLES) {
|
||||
printk("con_write: illegal tty (%d)\n", currcons);
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/keyboard.c linux/kernel/chr_drv/keyboard.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/keyboard.c Sun Nov 1 00:05:27 1992
|
||||
--- linux/kernel/chr_drv/keyboard.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 145,151 ****
|
||||
struct tty_struct *tty = TTY_TABLE(0);
|
||||
unsigned long new_head;
|
||||
|
||||
! wake_up(&keypress_wait);
|
||||
if (!tty)
|
||||
return;
|
||||
qp = &tty->read_q;
|
||||
--- 145,151 ----
|
||||
struct tty_struct *tty = TTY_TABLE(0);
|
||||
unsigned long new_head;
|
||||
|
||||
! wake_up_interruptible(&keypress_wait);
|
||||
if (!tty)
|
||||
return;
|
||||
qp = &tty->read_q;
|
||||
***************
|
||||
*** 153,159 ****
|
||||
qp->buf[qp->head]=ch;
|
||||
if ((new_head=(qp->head+1)&(TTY_BUF_SIZE-1)) != qp->tail)
|
||||
qp->head=new_head;
|
||||
! wake_up(&qp->proc_list);
|
||||
}
|
||||
|
||||
static void puts_queue(char *cp)
|
||||
--- 153,159 ----
|
||||
qp->buf[qp->head]=ch;
|
||||
if ((new_head=(qp->head+1)&(TTY_BUF_SIZE-1)) != qp->tail)
|
||||
qp->head=new_head;
|
||||
! wake_up_interruptible(&qp->proc_list);
|
||||
}
|
||||
|
||||
static void puts_queue(char *cp)
|
||||
***************
|
||||
*** 163,169 ****
|
||||
unsigned long new_head;
|
||||
char ch;
|
||||
|
||||
! wake_up(&keypress_wait);
|
||||
if (!tty)
|
||||
return;
|
||||
qp = &tty->read_q;
|
||||
--- 163,169 ----
|
||||
unsigned long new_head;
|
||||
char ch;
|
||||
|
||||
! wake_up_interruptible(&keypress_wait);
|
||||
if (!tty)
|
||||
return;
|
||||
qp = &tty->read_q;
|
||||
***************
|
||||
*** 174,180 ****
|
||||
!= qp->tail)
|
||||
qp->head=new_head;
|
||||
}
|
||||
! wake_up(&qp->proc_list);
|
||||
}
|
||||
|
||||
static void ctrl(int sc)
|
||||
--- 174,180 ----
|
||||
!= qp->tail)
|
||||
qp->head=new_head;
|
||||
}
|
||||
! wake_up_interruptible(&qp->proc_list);
|
||||
}
|
||||
|
||||
static void ctrl(int sc)
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/msbusmouse.c linux/kernel/chr_drv/msbusmouse.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/msbusmouse.c Sat Oct 17 13:47:36 1992
|
||||
--- linux/kernel/chr_drv/msbusmouse.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 60,66 ****
|
||||
mouse.dx += dx;
|
||||
mouse.dy += dy;
|
||||
mouse.ready = 1;
|
||||
! wake_up(&mouse.wait);
|
||||
}
|
||||
|
||||
static void release_mouse(struct inode * inode, struct file * file)
|
||||
--- 60,66 ----
|
||||
mouse.dx += dx;
|
||||
mouse.dy += dy;
|
||||
mouse.ready = 1;
|
||||
! wake_up_interruptible(&mouse.wait);
|
||||
}
|
||||
|
||||
static void release_mouse(struct inode * inode, struct file * file)
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/psaux.c linux/kernel/chr_drv/psaux.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/psaux.c Sun Nov 1 22:57:35 1992
|
||||
--- linux/kernel/chr_drv/psaux.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 155,161 ****
|
||||
}
|
||||
queue->head = head;
|
||||
aux_ready = 1;
|
||||
! wake_up(&queue->proc_list);
|
||||
}
|
||||
|
||||
|
||||
--- 155,161 ----
|
||||
}
|
||||
queue->head = head;
|
||||
aux_ready = 1;
|
||||
! wake_up_interruptible(&queue->proc_list);
|
||||
}
|
||||
|
||||
|
||||
***************
|
||||
*** 222,227 ****
|
||||
--- 222,228 ----
|
||||
|
||||
static int read_aux(struct inode * inode, struct file * file, char * buffer, int count)
|
||||
{
|
||||
+ struct wait_queue wait = { current, NULL };
|
||||
int i = count;
|
||||
unsigned char c;
|
||||
|
||||
***************
|
||||
*** 228,236 ****
|
||||
if (queue_empty()) {
|
||||
if (file->f_flags & O_NONBLOCK)
|
||||
return -EAGAIN;
|
||||
! cli();
|
||||
! interruptible_sleep_on(&queue->proc_list);
|
||||
! sti();
|
||||
}
|
||||
while (i > 0 && !queue_empty()) {
|
||||
c = get_from_queue();
|
||||
--- 229,243 ----
|
||||
if (queue_empty()) {
|
||||
if (file->f_flags & O_NONBLOCK)
|
||||
return -EAGAIN;
|
||||
! add_wait_queue(&queue->proc_list, &wait);
|
||||
! repeat:
|
||||
! current->state = TASK_INTERRUPTIBLE;
|
||||
! if (queue_empty() && !(current->signal & ~current->blocked)) {
|
||||
! schedule();
|
||||
! goto repeat;
|
||||
! }
|
||||
! current->state = TASK_RUNNING;
|
||||
!
|
||||
}
|
||||
while (i > 0 && !queue_empty()) {
|
||||
c = get_from_queue();
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/pty.c linux/kernel/chr_drv/pty.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/pty.c Sun Oct 11 21:22:25 1992
|
||||
--- linux/kernel/chr_drv/pty.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 24,33 ****
|
||||
{
|
||||
if (!tty)
|
||||
return;
|
||||
! wake_up(&tty->read_q.proc_list);
|
||||
if (!tty->link)
|
||||
return;
|
||||
! wake_up(&tty->link->write_q.proc_list);
|
||||
if (IS_A_PTY_MASTER(tty->line)) {
|
||||
if (tty->link->pgrp > 0)
|
||||
kill_pg(tty->link->pgrp,SIGHUP,1);
|
||||
--- 24,33 ----
|
||||
{
|
||||
if (!tty)
|
||||
return;
|
||||
! wake_up_interruptible(&tty->read_q.proc_list);
|
||||
if (!tty->link)
|
||||
return;
|
||||
! wake_up_interruptible(&tty->link->write_q.proc_list);
|
||||
if (IS_A_PTY_MASTER(tty->line)) {
|
||||
if (tty->link->pgrp > 0)
|
||||
kill_pg(tty->link->pgrp,SIGHUP,1);
|
||||
***************
|
||||
*** 51,57 ****
|
||||
break;
|
||||
}
|
||||
TTY_READ_FLUSH(to);
|
||||
! wake_up(&from->write_q.proc_list);
|
||||
}
|
||||
|
||||
/*
|
||||
--- 51,57 ----
|
||||
break;
|
||||
}
|
||||
TTY_READ_FLUSH(to);
|
||||
! wake_up_interruptible(&from->write_q.proc_list);
|
||||
}
|
||||
|
||||
/*
|
||||
***************
|
||||
*** 71,77 ****
|
||||
return -ENODEV;
|
||||
tty->write = tty->link->write = pty_write;
|
||||
tty->close = tty->link->close = pty_close;
|
||||
! wake_up(&tty->read_q.proc_list);
|
||||
if (filp->f_flags & O_NDELAY)
|
||||
return 0;
|
||||
while (!tty->link->count && !(current->signal & ~current->blocked))
|
||||
--- 71,77 ----
|
||||
return -ENODEV;
|
||||
tty->write = tty->link->write = pty_write;
|
||||
tty->close = tty->link->close = pty_close;
|
||||
! wake_up_interruptible(&tty->read_q.proc_list);
|
||||
if (filp->f_flags & O_NDELAY)
|
||||
return 0;
|
||||
while (!tty->link->count && !(current->signal & ~current->blocked))
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/serial.c linux/kernel/chr_drv/serial.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/serial.c Thu Oct 29 18:17:27 1992
|
||||
--- linux/kernel/chr_drv/serial.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 342,348 ****
|
||||
TTY_READ_FLUSH(info->tty);
|
||||
}
|
||||
if (!clear_bit(RS_EVENT_WRITE_WAKEUP, &info->event)) {
|
||||
! wake_up(&info->tty->write_q.proc_list);
|
||||
}
|
||||
if (!clear_bit(RS_EVENT_HUP_PGRP, &info->event)) {
|
||||
if (info->tty->pgrp > 0)
|
||||
--- 342,348 ----
|
||||
TTY_READ_FLUSH(info->tty);
|
||||
}
|
||||
if (!clear_bit(RS_EVENT_WRITE_WAKEUP, &info->event)) {
|
||||
! wake_up_interruptible(&info->tty->write_q.proc_list);
|
||||
}
|
||||
if (!clear_bit(RS_EVENT_HUP_PGRP, &info->event)) {
|
||||
if (info->tty->pgrp > 0)
|
||||
***************
|
||||
*** 1051,1056 ****
|
||||
--- 1051,1057 ----
|
||||
if (irq_lines & (1 << i))
|
||||
free_irq(i);
|
||||
}
|
||||
+ sti();
|
||||
#endif
|
||||
return kmem_start;
|
||||
}
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/tty_io.c linux/kernel/chr_drv/tty_io.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/tty_io.c Thu Nov 5 20:24:39 1992
|
||||
--- linux/kernel/chr_drv/tty_io.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 253,261 ****
|
||||
}
|
||||
TTY_WRITE_FLUSH(tty);
|
||||
if (!EMPTY(&tty->secondary))
|
||||
! wake_up(&tty->secondary.proc_list);
|
||||
if (tty->write_q.proc_list && LEFT(&tty->write_q) > TTY_BUF_SIZE/2)
|
||||
! wake_up(&tty->write_q.proc_list);
|
||||
if (tty->throttle && (LEFT(&tty->read_q) >= RQ_THRESHOLD_HW)
|
||||
&& !clear_bit(TTY_RQ_THROTTLED, &tty->flags))
|
||||
tty->throttle(tty, TTY_THROTTLE_RQ_AVAIL);
|
||||
--- 253,261 ----
|
||||
}
|
||||
TTY_WRITE_FLUSH(tty);
|
||||
if (!EMPTY(&tty->secondary))
|
||||
! wake_up_interruptible(&tty->secondary.proc_list);
|
||||
if (tty->write_q.proc_list && LEFT(&tty->write_q) > TTY_BUF_SIZE/2)
|
||||
! wake_up_interruptible(&tty->write_q.proc_list);
|
||||
if (tty->throttle && (LEFT(&tty->read_q) >= RQ_THRESHOLD_HW)
|
||||
&& !clear_bit(TTY_RQ_THROTTLED, &tty->flags))
|
||||
tty->throttle(tty, TTY_THROTTLE_RQ_AVAIL);
|
||||
***************
|
||||
*** 366,372 ****
|
||||
if (c==10 && L_CANON(tty))
|
||||
break;
|
||||
};
|
||||
! wake_up(&tty->read_q.proc_list);
|
||||
/*
|
||||
* If there is enough space in the secondary queue
|
||||
* now, let the low-level driver know.
|
||||
--- 366,372 ----
|
||||
if (c==10 && L_CANON(tty))
|
||||
break;
|
||||
};
|
||||
! wake_up_interruptible(&tty->read_q.proc_list);
|
||||
/*
|
||||
* If there is enough space in the secondary queue
|
||||
* now, let the low-level driver know.
|
||||
diff -c +recursive 0.98.4/linux/kernel/chr_drv/tty_ioctl.c linux/kernel/chr_drv/tty_ioctl.c
|
||||
*** 0.98.4/linux/kernel/chr_drv/tty_ioctl.c Tue Oct 27 00:37:38 1992
|
||||
--- linux/kernel/chr_drv/tty_ioctl.c Tue Nov 10 22:30:05 1992
|
||||
***************
|
||||
*** 26,32 ****
|
||||
cli();
|
||||
queue->head = queue->tail;
|
||||
sti();
|
||||
! wake_up(&queue->proc_list);
|
||||
}
|
||||
}
|
||||
|
||||
--- 26,32 ----
|
||||
cli();
|
||||
queue->head = queue->tail;
|
||||
sti();
|
||||
! wake_up_interruptible(&queue->proc_list);
|
||||
}
|
||||
}
|
||||
|
||||
***************
|
||||
*** 35,47 ****
|
||||
tty->status_changed = 1;
|
||||
tty->ctrl_status |= TIOCPKT_FLUSHREAD;
|
||||
flush(&tty->read_q);
|
||||
! wake_up(&tty->read_q.proc_list);
|
||||
flush(&tty->secondary);
|
||||
tty->secondary.data = 0;
|
||||
|
||||
if (tty = tty->link) {
|
||||
flush(&tty->write_q);
|
||||
! wake_up(&tty->write_q.proc_list);
|
||||
}
|
||||
}
|
||||
|
||||
--- 35,47 ----
|
||||
tty->status_changed = 1;
|
||||
tty->ctrl_status |= TIOCPKT_FLUSHREAD;
|
||||
flush(&tty->read_q);
|
||||
! wake_up_interruptible(&tty->read_q.proc_list);
|
||||
flush(&tty->secondary);
|
||||
tty->secondary.data = 0;
|
||||
|
||||
if (tty = tty->link) {
|
||||
flush(&tty->write_q);
|
||||
! wake_up_interruptible(&tty->write_q.proc_list);
|
||||
}
|
||||
}
|
||||
|
||||
***************
|
||||
*** 50,59 ****
|
||||
tty->status_changed = 1;
|
||||
tty->ctrl_status |= TIOCPKT_FLUSHWRITE;
|
||||
flush(&tty->write_q);
|
||||
! wake_up(&tty->write_q.proc_list);
|
||||
if (tty = tty->link) {
|
||||
flush(&tty->read_q);
|
||||
! wake_up(&tty->read_q.proc_list);
|
||||
flush(&tty->secondary);
|
||||
tty->secondary.data = 0;
|
||||
}
|
||||
--- 50,59 ----
|
||||
tty->status_changed = 1;
|
||||
tty->ctrl_status |= TIOCPKT_FLUSHWRITE;
|
||||
flush(&tty->write_q);
|
||||
! wake_up_interruptible(&tty->write_q.proc_list);
|
||||
if (tty = tty->link) {
|
||||
flush(&tty->read_q);
|
||||
! wake_up_interruptible(&tty->read_q.proc_list);
|
||||
flush(&tty->secondary);
|
||||
tty->secondary.data = 0;
|
||||
}
|
||||
diff -c +recursive 0.98.4/linux/kernel/printk.c linux/kernel/printk.c
|
||||
*** 0.98.4/linux/kernel/printk.c Sat Aug 15 18:36:16 1992
|
||||
--- linux/kernel/printk.c Tue Nov 10 22:32:43 1992
|
||||
***************
|
||||
*** 35,41 ****
|
||||
i = log_page;
|
||||
log_page = 0;
|
||||
free_page(i);
|
||||
! wake_up(&log_wait);
|
||||
return 0;
|
||||
case 1:
|
||||
i = get_free_page(GFP_KERNEL);
|
||||
--- 35,41 ----
|
||||
i = log_page;
|
||||
log_page = 0;
|
||||
free_page(i);
|
||||
! wake_up_interruptible(&log_wait);
|
||||
return 0;
|
||||
case 1:
|
||||
i = get_free_page(GFP_KERNEL);
|
||||
***************
|
||||
*** 97,103 ****
|
||||
log_start++;
|
||||
}
|
||||
if (log_page)
|
||||
! wake_up(&log_wait);
|
||||
console_print(buf);
|
||||
return i;
|
||||
}
|
||||
--- 97,103 ----
|
||||
log_start++;
|
||||
}
|
||||
if (log_page)
|
||||
! wake_up_interruptible(&log_wait);
|
||||
console_print(buf);
|
||||
return i;
|
||||
}
|
||||
diff -c +recursive 0.98.4/linux/kernel/sched.c linux/kernel/sched.c
|
||||
*** 0.98.4/linux/kernel/sched.c Sat Nov 7 12:07:41 1992
|
||||
--- linux/kernel/sched.c Tue Nov 10 21:59:34 1992
|
||||
***************
|
||||
*** 103,119 ****
|
||||
/* check alarm, wake up any interruptible tasks that have got a signal */
|
||||
|
||||
need_resched = 0;
|
||||
! for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)
|
||||
! if (*p) {
|
||||
! if ((*p)->timeout && (*p)->timeout < jiffies)
|
||||
! if ((*p)->state == TASK_INTERRUPTIBLE) {
|
||||
! (*p)->timeout = 0;
|
||||
! wake_one_task(*p);
|
||||
! }
|
||||
! if (((*p)->signal & ~(*p)->blocked) &&
|
||||
! (*p)->state==TASK_INTERRUPTIBLE)
|
||||
! wake_one_task(*p);
|
||||
! }
|
||||
|
||||
/* this is the scheduler proper: */
|
||||
|
||||
--- 103,117 ----
|
||||
/* check alarm, wake up any interruptible tasks that have got a signal */
|
||||
|
||||
need_resched = 0;
|
||||
! for(p = &LAST_TASK ; p > &FIRST_TASK ; --p) {
|
||||
! if (!*p || ((*p)->state != TASK_INTERRUPTIBLE))
|
||||
! continue;
|
||||
! if ((*p)->timeout && (*p)->timeout < jiffies) {
|
||||
! (*p)->timeout = 0;
|
||||
! (*p)->state = TASK_RUNNING;
|
||||
! } else if ((*p)->signal & ~(*p)->blocked)
|
||||
! (*p)->state = TASK_RUNNING;
|
||||
! }
|
||||
|
||||
/* this is the scheduler proper: */
|
||||
|
||||
***************
|
||||
*** 155,167 ****
|
||||
return -EINTR;
|
||||
}
|
||||
|
||||
- void wake_one_task(struct task_struct * p)
|
||||
- {
|
||||
- p->state = TASK_RUNNING;
|
||||
- if (p->counter > current->counter)
|
||||
- need_resched = 1;
|
||||
- }
|
||||
-
|
||||
/*
|
||||
* wake_up doesn't wake up stopped processes - they have to be awakened
|
||||
* with signals or similar.
|
||||
--- 153,158 ----
|
||||
***************
|
||||
*** 179,187 ****
|
||||
return;
|
||||
do {
|
||||
if (p = tmp->task) {
|
||||
! if (p->state == TASK_ZOMBIE)
|
||||
! printk("wake_up: TASK_ZOMBIE\n");
|
||||
! else if (p->state != TASK_STOPPED) {
|
||||
p->state = TASK_RUNNING;
|
||||
if (p->counter > current->counter)
|
||||
need_resched = 1;
|
||||
--- 170,203 ----
|
||||
return;
|
||||
do {
|
||||
if (p = tmp->task) {
|
||||
! if ((p->state == TASK_UNINTERRUPTIBLE) ||
|
||||
! (p->state == TASK_INTERRUPTIBLE)) {
|
||||
! p->state = TASK_RUNNING;
|
||||
! if (p->counter > current->counter)
|
||||
! need_resched = 1;
|
||||
! }
|
||||
! }
|
||||
! if (!tmp->next) {
|
||||
! printk("wait_queue is bad (eip = %08x)\n",((unsigned long *) q)[-1]);
|
||||
! printk(" q = %08x\n",q);
|
||||
! printk(" *q = %08x\n",*q);
|
||||
! printk(" tmp = %08x\n",tmp);
|
||||
! break;
|
||||
! }
|
||||
! tmp = tmp->next;
|
||||
! } while (tmp != *q);
|
||||
! }
|
||||
!
|
||||
! void wake_up_interruptible(struct wait_queue **q)
|
||||
! {
|
||||
! struct wait_queue *tmp;
|
||||
! struct task_struct * p;
|
||||
!
|
||||
! if (!q || !(tmp = *q))
|
||||
! return;
|
||||
! do {
|
||||
! if (p = tmp->task) {
|
||||
! if (p->state == TASK_INTERRUPTIBLE) {
|
||||
p->state = TASK_RUNNING;
|
||||
if (p->counter > current->counter)
|
||||
need_resched = 1;
|
||||
diff -c +recursive 0.98.4/linux/net/unix.c linux/net/unix.c
|
||||
*** 0.98.4/linux/net/unix.c Sat Aug 22 16:34:40 1992
|
||||
--- linux/net/unix.c Tue Nov 10 12:54:56 1992
|
||||
***************
|
||||
*** 329,335 ****
|
||||
PRINTK("unix_proto_bind: socket 0x%x, len=%d\n", sock,
|
||||
sockaddr_len);
|
||||
if (sockaddr_len <= UN_PATH_OFFSET ||
|
||||
! sockaddr_len >= sizeof(struct sockaddr_un)) {
|
||||
PRINTK("unix_proto_bind: bad length %d\n", sockaddr_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
--- 329,335 ----
|
||||
PRINTK("unix_proto_bind: socket 0x%x, len=%d\n", sock,
|
||||
sockaddr_len);
|
||||
if (sockaddr_len <= UN_PATH_OFFSET ||
|
||||
! sockaddr_len > sizeof(struct sockaddr_un)) {
|
||||
PRINTK("unix_proto_bind: bad length %d\n", sockaddr_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
***************
|
||||
*** 381,387 ****
|
||||
PRINTK("unix_proto_connect: socket 0x%x, servlen=%d\n", sock,
|
||||
sockaddr_len);
|
||||
if (sockaddr_len <= UN_PATH_OFFSET ||
|
||||
! sockaddr_len >= sizeof(struct sockaddr_un)) {
|
||||
PRINTK("unix_proto_connect: bad length %d\n", sockaddr_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
--- 381,387 ----
|
||||
PRINTK("unix_proto_connect: socket 0x%x, servlen=%d\n", sock,
|
||||
sockaddr_len);
|
||||
if (sockaddr_len <= UN_PATH_OFFSET ||
|
||||
! sockaddr_len > sizeof(struct sockaddr_un)) {
|
||||
PRINTK("unix_proto_connect: bad length %d\n", sockaddr_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
BIN
Linux-0.98/sources/system/linux-0.98.4.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.4.tar.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.5.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.5.tar.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.6.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.6.tar.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.patch1.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.patch1.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.patch2.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.patch2.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.patch3.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.patch3.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.patch4.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.patch4.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.patch5.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.patch5.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.patch6.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.patch6.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98.tar.gz
Normal file
BIN
Linux-0.98/sources/system/linux-0.98.tar.gz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/linux-0.98p2-scsi-patch
Normal file
BIN
Linux-0.98/sources/system/linux-0.98p2-scsi-patch
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/mount-patch-for-pre-0.98.4
Normal file
BIN
Linux-0.98/sources/system/mount-patch-for-pre-0.98.4
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/scsitape.taz
Normal file
BIN
Linux-0.98/sources/system/scsitape.taz
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/system/tcpip-patch-3-nov-92
Normal file
BIN
Linux-0.98/sources/system/tcpip-patch-3-nov-92
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/usr.bin/fileutils-3.4.tar.z
Normal file
BIN
Linux-0.98/sources/usr.bin/fileutils-3.4.tar.z
Normal file
Binary file not shown.
BIN
Linux-0.98/sources/usr.bin/mush.tar
Normal file
BIN
Linux-0.98/sources/usr.bin/mush.tar
Normal file
Binary file not shown.
62
Linux-0.98/sources/usr.bin/protocols.h
Normal file
62
Linux-0.98/sources/usr.bin/protocols.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/* protocols.h */
|
||||
#ifndef _NETINET_PROTOCOLS_H
|
||||
#define _NETINET_PROTOCOLS_H
|
||||
|
||||
#define IP_ICMP 1
|
||||
#define IP_IGMP 2
|
||||
#define IP_GGP 3
|
||||
#define IP_ST 5
|
||||
#define IP_TCP 6
|
||||
#define IP_UCL 7
|
||||
#define IP_EGP 8
|
||||
#define IP_IGP 9
|
||||
#define IP_BBN_RCC_MON 10
|
||||
#define IP_NVP-II 11
|
||||
#define IP_PUP 12
|
||||
#define IP_ARGUS 13
|
||||
#define IP_EMCON 14
|
||||
#define IP_XNET 15
|
||||
#define IP_CHAOS 16
|
||||
#define IP_UDP 17
|
||||
#define IP_MUX 18
|
||||
#define IP_DCN_MEAS 19
|
||||
#define IP_HMP 20
|
||||
#define IP_PRM 21
|
||||
#define IP_XNS_IDP 22
|
||||
#define IP_TRUNK1 23
|
||||
#define IP_TRUNK2 24
|
||||
#define IP_LEAF1 25
|
||||
#define IP_LEAF2 26
|
||||
#define IP_RDP 27
|
||||
#define IP_IRTP 28
|
||||
#define IP_ISO_TP4 29
|
||||
#define IP_NETBLT 30
|
||||
#define IP_MFE_NSP 31
|
||||
#define IP_MERIT_INP 32
|
||||
#define IP_SEP 33
|
||||
#define IP_3PC 34
|
||||
#define IP_CFTP 62
|
||||
#define SAT_EXPAK 64
|
||||
#define IP_RVD 66
|
||||
#define IP_IPPC 67
|
||||
#define IP_SAT_MON 69
|
||||
#define IP_VISA 70
|
||||
#define IP_IPCV 71
|
||||
#define IP_BR_SAT_MON 76
|
||||
#define IP_SUN_ND 77
|
||||
#define IP_WB_MON 78
|
||||
#define IP_WB_EXPAK 79
|
||||
#define IP_ISO_IP 80
|
||||
#define IP_VMTP 81
|
||||
#define IP_SECURE_VMTP 82
|
||||
#define IP_VINES 83
|
||||
#define IP_TTP 84
|
||||
#define NSFNET_IGP 85
|
||||
#define IP_DGP 86
|
||||
#define IP_TCF 87
|
||||
#define IP_IGRP 88
|
||||
#define IP_OSPFIGP 89
|
||||
#define IP_SPRITE_RPG 90
|
||||
#define IP_LARP 91
|
||||
|
||||
#endif /* _NETINET_PROTOCOLS_H*/
|
||||
Reference in New Issue
Block a user