add directory images

This commit is contained in:
gohigh
2024-02-19 00:24:50 -05:00
parent a40f4cadb0
commit eec934fe6c
80 changed files with 5388 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
images/Obsolete/11.21.Image Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,50 @@
The file eata_in_kernel.gz represents the image of a Slackware 2.1.0
boot disk compiled with the new DPT controller code found in kernels
1.1.64 and up. This disk is a 1.44 Meg floppy with kernel 1.1.72. It
also contains the QUOTA patch, which should not cause any problems
for you though.
Previously, I was using the DPT code mentioned in the SCSI-HOWTO,
the driver written by Cyril. This driver was not compatible with
the new kernel driver. However, you can do a backup and restore!
I got creative with a spare disk and the fact that my 'old'
partition was readable under the new kernel even though the
sectors/heads/cyls were totally different. Anyway, ***BE CAREFUL
AND BACKUP EVERYTHING!!!!!***
Let me say that again.
**** BE VERY VERY CAREFUL AND BACKUP EVERYTHING!!!! ***
If you need a kernel, you can do a 'mount -t minix /dev/fd0 /mnt' and
then copy off the kernel. (You may also use 'rdev' to change the
kernel's root partion.)
Good luck!
Steve...
Steve Kneizys
Director, Academic Computing, Ursinus College
stevo@acad.ursinus.edu
P.S. Here is part of the header from the new 'eata.c' code in the
kernel:
----------------------------------------------------------------
*
* 30 Nov 1994 rev. 1.09 for linux 1.1.68
* Released by Dario Ballabio (Dario_Ballabio@milano.europe.dg.com)
*
* This code has been tested with up to 3 Distributed Processing Technology
* PM2122A/9X (DPT SCSI BIOS v002.D1, firmware v05E.0) eisa controllers,
* no on board cache and no RAID option.
* BIOS must be enabled on the first board and must be disabled for all other
* boards.
* Support is provided for any number of DPT PM2122 eisa boards.
* All boards should be configured at the same IRQ level.
* Multiple IRQ configurations are supported too.
* Boards can be located in any eisa slot (1-15) and are named EATA0,
* EATA1,... in increasing eisa slot number.
* In order to detect the boards, the IRQ must be _level_ triggered
* (not _edge_ triggered).
*

Binary file not shown.

View File

@@ -0,0 +1,14 @@
Begin3
Title: eata_in_kernel.gz
Version: Dec 12, 1994
Entered-date: Dec 12, 1994
Description: Slackware 2.1.0 Boot disk for kernel DPT driver 1.1.72
Keywords: DPT, Slackware Boot Image
Author: stevo@ursinus.edu
Maintained-by: stevo@ursinus.edu
Primary-site: sunsite.unc.edu
Alternate-site:
Original-site:
Platform: Linux 80x86
Copying-policy: GPL
End

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,128 @@
CHANGES IN THE LINUX v0.96 ROOT DISKETTE
Jim Winstead Jr. - 4 July 1992
This file mostly contains info about the changes in the root diskette
from Linux v0.95a to Linux v0.96.
CHANGES
With the release of Linux v0.95a, the maintenance of the root diskette
has been assumed by Jim Winstead Jr. (jwinstea@jarthur.Claremont.EDU).
This continues with the release of the Linux 0.96 release diskette.
The changes between the Linux 0.96 and Linux 0.95a root diskettes are
detailed below:
- bash is back! /bin/sh is now a symlink to /bin/bash. ash was
simple too buggy for general use as /bin/sh. (This was likely
a result of a sloppy port to Linux rather than any flaws with
ash, but it seems silly to worry about ash when bash fits.)
- GNU tar is not on the root disk. Instead, the POSIX-defined
utility 'pax' is included, which handles tar _and_ cpio
archives. There are symlinks from /bin/cpio and /bin/tar to
/bin/pax to allow using the tar and cpio interfaces to pax.
(The big change you'll notice is that pax does not support a
'z' option for compressed tar files. You will have to pipe
them through 'uncompress' first.)
This was done because pax is roughly 1/3 the size of GNU tar,
and GNU tar offered nothing significant beyond what pax does.
- the install script has been completely rewritten. Now, it is
much more intelligent, and tries to guide you along the path
of installing Linux on your system.
- split /etc/rc into /etc/rc and /etc/rc.local. /etc/rc.local
is the only one you should ever have need to change.
- mount has been improved to accept a -a option. This reads
/etc/fstab and mounts the filesystems specified within,
including swapping partitions. See /etc/fstab to see how it
works.
Similar changes have been made to swapon to allow the 'swapon'
of a single swap file/partition from /etc/fstab.
As a result of these two improvements, /bin/mount -a and
/bin/swapon -a have both been added to /etc/rc, and you
shouldn't need to add additional mount commands to rc.local -
use /etc/fstab instead.
Thanks to Doug Quale for writing the new mount and swapon.
- uncompress is really a link to compress this time, I screwed
up last time. oops!
- I recompiled everything with GCC 2.2.2, and they are linked
against shared libraries (located in /lib) - it is important
that /lib be part of your root partition!
- many of the small utilities are linked as 'impure'
executables. This saves a great deal of disk space, at the
expense that they can't be demand-loaded or shared. Most, if
not all, of the utilities linked this way are very small and
infrequently used, however, so the benefits far outweigh the
small disadvantage there.
- rootdev really is rdev this time.
- /dev/MAKEDEV is a fairly generic script for making devices.
It supercedes /INSTALL/mkdev from the 0.95a root disk, and
really should be kept even after installation, because such
things as the scsi tape devices are not made by default - this
script allows you to make them when needed.
- added the lp devices, scsi devices, and miscellaneous other
devices.
- included a new termcap file based upon the termcap file
released with the setterm-0.96b utility. Also included are
the termcap entires for X terminals and generic vt100 entries.
If you have questions, problems, or complaints about the root
diskette, either post to comp.os.linux, or send mail to me at
jwinstea@jarthur.Claremont.EDU.
If you have questions, problems, or complaints about the boot diskette
or the kernel itself, post to comp.os.linux or send mail to Linus
Torvalds at torvalds@cc.helsinki.fi.
Remember, the only stupid questions are the ones you don't ask.
FUTURE CHANGES
I'm already anticipating some changes for the next release, so here's
a sneak preview:
- you probably won't notice, but I plan on cleaning up the
source of some of the utilities, most noticeably shutdown,
passwd and mkfs. Those are all pretty ugly.
- the install script will be improved. The current one was
written rather rapidly, so there are parts of it I'm not
entirely happy with.
- I'd like to write an update script that will allow people who
have already installed Linux to update their binaries from the
latest root disk. The install script could serve as a base
for this, but is a little destructive at present. (It would
simply copy over old binaries, etc.)
- the documentation on disk will be cleaned up, and possibly
added to.
- fill in the gaps in the MAKEDEV script. (SCSI tapes, more pty
devices.)
- the release after the extended filesystem is added to the
Linux kernel, the root disk will use it. That means v0.98, if
things go according to current plans. This is to allow time
for bugs in the extended filesystem to filter out, and for the
new mkfs and fsck to stabilize. (For those that don't know,
the extended filesystem supports 4 terabyte partitions and long
filenames, and is currently in alpha testing.)
Again, mail your questions, comments and suggestions about the root
diskette to me at jwinstea@jarthur.Claremont.EDU.

View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

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

View File

@@ -0,0 +1,119 @@
INSTALL NOTES FOR LINUX v0.96
Jim Winstead Jr. - July 4, 1992
This file contains basic instructions for installing Linux v0.96.
More detailed instructions have been written by others. Read the
Linux FAQ for some suggestions, and for pointers to other installation
documents.
COPYRIGHT
Linux 0.96 is NOT public domain software, but is copyrighted by Linus
Torvalds (torvalds@cc.helsinki.fi). The copyright terms follow the
GNU Copyleft. See the file COPYING from any GNU software package for
the finer points. Note that the unistd library functions and all
library functions written by Linus Torvalds are exempt from this
copyright, and you may use them as you wish.
WARNING
The 0.96 root disk requires the 0.96b or later kernel. A bootable
image of this kernel should be available where you got the image
for the 0.96 root disk.
INSTALLATION
1) First, and absolutely the most important step, MAKE BACKUPS OF YOUR
SYSTEM! This system won't do anything nearly as nasty as coredump all
over your harddrive (see 386BSD v0.0), but it is quite easy to
accidently screw something up while installing.
2) Test out the Linux v0.96b boot disk with the Linux v0.96 root
disk. If you are unable to get the boot disk to work properly on
your system, try posting to comp.os.linux, or contacting Linus.
Notice that Linux (as of v0.95) contains an init/getty/login suite,
and this will start up 'login' on the first four virtual consoles,
accessed by Left-Alt-F[1234]. If you experience problems on one
virtual console, it should be possible to switch to another one.
3) login as 'install', and the system will walk you through the
process of installing Linux on a hard drive partition. The
process is fairly automated, but the process requires that you go
through the steps of creating a partition for Linux usage. Some
tips follow:
Read the efdisk file from the intro login, which will explain
the basic concepts of hard disk partitions, and how to use
efdisk.
You may find it useful to login to one virtual console as
intro, so you can access the on-disk documentation, and
another as install, so you can do the installation and easy
access the documentation.
The maximum size of a Minix filesystem (the type created by
mkfs) is 64 megabytes. This is not a limitation of mkfs or
Linux, but a limitation of the Minix filesystem that is used.
With the release of Linux v0.97, a new 'extended' filesystem
will be released that will support 4 terabyte (!) partitions,
and extended filenames.
4) You should now have a complete (but very basic) root filesystem on
your harddrive. To be able to boot from floppy with this as your
root filesystem, you will have to edit the boot diskette. This is
done by modifying the word at offset 508 (decimal) with a program
such as Norton's Disk Editor, or use pboot.exe (available where
you got this file, the boot disk and the root disk, hopefully.)
This word is in 386-order (that is, least-significant byte first),
which means it should look like one of the following:
LSB MSB - device
--------------------------
01 03 - /dev/hda1 LSB = Least-Significant Byte
02 03 - /dev/hda2 MSB = Most-Significant Byte
03 03 - /dev/hda3
04 03 - /dev/hda4
41 03 - /dev/hdb1
42 03 - /dev/hdb2
43 03 - /dev/hdb3
44 03 - /dev/hdb4
The numbers are in hex, and if you're editing the boot diskette by
hand, these two bytes should initially be 00 00 (and are followed
by two non-zero bytes).
Note that pboot.exe predates Linux 0.95a, so some of the
information it presents is inaccurate (it refers to the old hd*
naming scheme). The codes to use are as above, but with the most-
significant byte first. (So /dev/hda1 = 0301, /dev/hda2 = 0302,
etc.)
5) You should now be able to boot from this diskette and it will use
your new Linux partition as the root partition. You'll notice,
however, that you can't do a whole lot with just the programs on
the root diskette. You'll need to get further packages from
whereever you got the root and boot diskettes, and read these from
a floppy using tar and compress. (Simple instructions: Download
the file to DOS, use rawrite to write the tar file to diskette.
Use 'tar zxvf /dev/<floppy>' to read the file from floppy, where
<floppy> is the appropriate floppy device. (PS0 is a 1.44 meg
3.5" as A:, PS1 is a 1.44 meg as B:, at0 is a 1.2 meg as A:, at1
is a 1.2 meg as B:.)
6) To reboot your machine when running Linux, you should use the
'reboot' command. This makes sure to flush all caches to disk,
and notifies other users that the system is going down (well, the
last bit isn't real important).
FAILURE TO DO THIS COULD RESULT IN BADLY CORRUPT FILESYSTEMS.
----------------------------------------------------------------------------
These instructions are not the best, but should be enough to get you
going. If you have more questions, either post on comp.os.linux, or
send mail to me (jwinstea@jarthur.Claremont.EDU), or to Linus
(torvalds@cc.helsinki.fi). Remember, the only stupid questions are
the ones that you don't ask.

View File

@@ -0,0 +1,265 @@
RELEASE NOTES FOR LINUX v0.95
Linus Torvalds, March 7, 1992
This is file mostly contains info on changed features of Linux, and
using old versions as a help-reference might be a good idea.
COPYRIGHT
Linux-0.95 is NOT public domain software, but is copyrighted by me. The
copyright conditions are the same as those imposed by the GNU copyleft:
get a copy of the GNU copyleft at any major ftp-site (if it carries
linux, it probably carries a lot of GNU software anyway, and they all
contain the copyright).
The copyleft is pretty detailed, but it mostly just means that you may
freely copy linux for your own use, and redistribute all/parts of it, as
long as you make source available (not necessarily in the same
distribution, but you make it clear how people can get it for nothing
more than copying costs). Any changes you make that you distribute will
also automatically fall under the GNU copyleft.
NOTE! The linux unistd library-functions (the low-level interface to
linux: system calls etc) are excempt from the copyright - you may use
them as you wish, and using those in your binary files won't mean that
your files are automatically under the GNU copyleft. This concerns
/only/ the unistd-library and those (few) other library functions I have
written: most of the rest of the library has it's own copyrights (or is
public domain). See the library sources for details of those.
INSTALLATION
This is a SHORT install-note. The installation is very similar to 0.11
and 0.12, so you should read INSTALL-0.11 too. There are a couple of
programs you will need to install linux: something that writes disk
images (rawrite.exe or NU or...) and something that can create harddisk
partitions (fdisk under xenix or older versions of dos, edpart.exe or
something like that).
NOTE! Repartitioning your harddisk will destroy all data on it (well,
not exactly, but if you know enough to get back the data you probably
didn't need this warning). So be careful.
READ THIS THROUGH, THEN READ INSTALL-0.11, AND IF YOU ARE SURE YOU KNOW
WHAT YOU ARE DOING, CONTINUE. OTHERWISE, PANIC. OR WRITE ME FOR
EXPLANATIONS. OR DO ANYTHING BUT INSTALL LINUX - IT'S VERY SIMPLE, BUT
IF YOU DON'T KNOW WHAT YOU ARE DOING YOU'LL PROBABLY BE SORRY. I'D
RATHER ANSWER A FEW UNNECESSARY MAILS THAN GET MAIL SAYING "YOU KILLED
MY HARDDISK, BASTARD. I'M GOING TO FIND YOU, AND YOU'LL BE SORRY WHEN I
DO".
Minumum files needed:
RELNOTES-0.95 (this file)
INSTALL-0.11 (+ any other docs you might find: the FAQ etc)
bootimage-0.96.Z
rootimage-0.95.Z
rootimage-0.12.Z (for tar+compress)
rawrite.exe
some disk partitioner
1) back up everything you have on your harddisk - linux-0.95 is still in
beta and might do weird things. The only thing I guarantee is that
it has worked fine on /my/ machine - for all I know it might eat your
harddisk and spit it out in small pieces on any other hardware.
2) Test out the linux boot-disk with the root file system. If it
doesn't work, check the hardware requirements, and mail me if you
still think it should work. I might not be able to help you, but
your bug-report would still be appreciated.
Linux-0.95 now has an init/login: there should be 4 logins started on
the first 4 virtual consoles. Log in as root (no password), and test
it out. Change to the other logins by pressing left-alt + FN[1-4].
Note that booting up with a floppy as root is S..L..O..W.. - the
floppy driver has been optimized for sequential access (backups etc),
and trashes somewhat with demand-loading.
Test that linux can read your harddisk at least partly: run the fdisk
program on the root-disk, and see if it barfs. If it tells you about
any partitions at all, linux can successfully read at least part of
your harddisk.
NOTE! Harddisk device names and numbers have changed between versions
0.12 and 0.95: the new numbering system was needed for the extended
partitions, and a new naming scheme was in order so that people
wouldn't cunfuse the old devices with the new ones.
The new harddisk device names are: /dev/hd followed by an 'a' for the
first drive, or a 'b' for the second one. After that comes the
partition number, 1-4 for the primary partitions, 5- for possible
extended partitions. No number means the complete disk. Like this:
/dev/hda the whole first harddisk (old: /dev/hd0)
/dev/hdb3 partition nr 3 on the second disk (old: /dev/hd8)
3) Make sure that you have a free /primary/ partition. There can be 4
primary partitions per drive: newer DOS fdisks seem to be able to
create only 2 (one primary and one extended). In that case use some
other partitioning software: edpart.exe etc. Linux fdisk currently
only tells you the partition info - it doesn't write to the disk.
Remember to check how big your partition was, as that can be used to
tell which device Linux thinks it is.
NOTE! Linux-0.95 /might/ recognize extended partitions: but the code
for this is utterly untested, as I don't have any of those. Do NOT
use the extended partitions unless you can verify that they are
indeed correctly set up - if my routines are wrong, writing to the
extended partitions might just overwrite some other partition
instead. Not nice.
4) Boot up linux again, fdisk to make sure you now have the new
partition, and use mkfs to make a filesystem on one of the partitions
fdisk reports. Write "mkfs -c /dev/hdX nnn" where X is the device
number reported by linux fdisk, and nnn is the size - also reported
by fdisk. nnn is the size in /blocks/, ie kilobytes. You should be
able to use the size info to determine which partition is represented
by which device name.
5) Mount the new disk partition: "mount /dev/hdX /mnt". Copy over the
root filesystem to the harddisk, eg like this:
# for i in bin dev etc usr tmp
# do
# cp +recursive /$i /mnt
# done
You caanot use just "cp +recursive / /mnt", as that will result in a
loop.
6) Sync the filesystem after you have played around enough, and reboot.
# sync
# lo
(none) login: sync
<wait for it to sync>
ctrl-alt-del
THIS IS IMPORTANT! NEVER EVER FORGET TO SYNC BEFORE KILLING THE MACHINE.
7) Change the bootdisk to understand which partition it should use as a
root filesystem. See INSTALL-0.11: it's still the word at offset
508 into the image. You should be up and running.
8) When you've successfully started up with your harddisk as root, you
can mount the older rootimage (rootimage-0.12) from a floppy, and
copy over any files you find there that weren't on the newer
root-image.
Mounting a floppy is easy: make the directory /floppy, and write:
# mount /dev/PS0 /floppy (if you have a 3.5" drive)
or
# mount /dev/at0 /floppy (for 5.25" floppies)
After that the files can be copied to your harddisk, eg:
# cp /floppy/usr/bin/compress /usr/bin
# ln -s /usr/bin/compress /usr/bin/compress
# cp /floppy/usr/bin/tar.Z /usr/bin
# uncompress /usr/bin/tar.Z
That's it. Now go back and read the INSTALL-0.11, until you are sure you
know what you are doing.
New features of 0.95, in order of appearance
(ie in the order you see them)
Init/login
Yeah, thanks to poe (Peter Orbaeck (sp?)), linux now boots up like a
real unix with a login-prompt. Login as root (no passwd), and change
your /etc/passwd to your hearts delight (and add other logins in
/etc/inittab etc).
Bash is even bigger
It's really a bummer to boot up from floppies: bash takes a long time to
load. Bash is also now so big that I couldn't fit compress and tar onto
the root-floppy: You'll probably want the old rootimage-0.12 just in
order to get tar+compress onto your harddisk. If anybody has pointers
to a simple shell that is freely distributable, it might be a good idea
to use that for the root-diskette.
Especially with a small buffer-cache, things aren't fun. Don't worry:
linux runs much better on a harddisk.
Virtual consoles on any (?) hardware.
You can select one of several consoles by pressing the left alt-key and
a function key at the same time. Linux should report the number of
virtual consoles available upon bootup. /dev/tty0 is now "the current"
screen, /dev/tty1 is the main console, and /dev/tty2-8 can exist
depending on your text-mode or card.
The virtual consoles also have some new screen-handling commands: they
confirm even better to vt200 control codes than 0.11. Special graphic
characters etc: you can well use them as terminals to VMS (although
that's a shameful waste of resources), and the PF1-4 keys work somewhat
in the application-key mode.
Symbolic links.
0.95 now allows symlinks to point to other symlinks etc (the maximum
depth is a rather arbitrary 5 links). 0.12 didn't like more than one
level of indirection.
Virtual memory.
VM under 0.95 should be better than under 0.12: no more lockups (as far
as I have seen), and you can now swap to the filesystem as well as to a
special partition. There are two programs to handle this: mkswap to set
up a swap-file/partition and swapon to start up swapping.
mkswap needs either a partition or a file that already exists to make a
swap-area. To make a swap-file, do this:
# dd bs=1024 count=NN if=/dev/hda of=swapfile
# mkswap swapfile NN
The first command just makes a file that is NN blocks long (initializing
it from /dev/hda, but that could be anything). The second command then
writes the necessary setup-info into the file. To start swapping, write
# swapon swapfile
NOTE! 'dd' isn't on the rootdisk: you have to install some things onto
the harddisk before you can get up and running.
NOTE2! When linux runs totally out of virtual memory, things slow down
dramatically. It tries to keep on running as long as it can, but at
least it shouldn't lock up any more. ^C should work, although you might
have to wait a while for it..
Faster floppies
Ok, you don't notice this much when booting up from a floppy: bash has
grown, so it takes longer to load, and the optimizations work mostly
with sequential accesses. When you start un-taring floppies to get the
programs onto your harddisk, you'll notice that it's much faster now.
That should be about the only use for floppies under a unix: nobody in
their right mind uses floppies as filesystems.
Better FS-independence
Hopefully you'll never even notice this, but the filesystem has been
partly rewritten to make it less minix-fs-specific. I haven't
implemented all the VFS-patches I got, so it's still not ready, but it's
getting there, slowly.
And that's it, I think.
Happy hacking.
Linus (torvalds@kruuna.helsinki.fi)

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,34 @@
If you are running a Cache program, and do not have it set to write
through, then (if you have Autocon set for a Warm or Cold boot -- and
probably External) you must configure Autocon to "Flush" your cache.
Hit the <F4> key, and put in the command string that causes your cache
to flush. The command should be listed in the documentation for your
Cache program. Autocon will then save the information, and perform a
"Flush" before each reboot.
If you are not sure if your Cache is set to "write through", please
configure Autocon to do the "Flush", just to be on the safe side.
The symptoms of a cache problem is that the Autoexec and Config files do
not get updated, and/or any edited Autocon configurations do not get
saved. In the worst case, the Autocon.Dat file will get corrupted, and
your screen colors will disappear (screen will be blank when you start
AutoCon).
Setting Autocon up to do the "Flush" will remove the problems.
Some Flush commands that I know are:
PC-KWIK - SUPERPCK /F
PC-CACHE - PC-CACHE /FLUSH
FLASH - FLASH /F?
HYPERDISK - HYPERDK W
SMARTDRV - SMARTDRV /C (new ver with WINDOWS 3.1)
Sorry for any inconvenience,
-Larry Weaver

View File

@@ -0,0 +1,61 @@
CHANGES
I don't know if you read the changes file in the previous version,
so I will summarize it. I sold my home in Santa Barbara, and moved
to a small town in Northern California to concentrate on writing
shareware full time. Well (you may ask), how's it going.
Since my program was reviewed on page 50 in the Nov. 13, 1990 issue
of PC Magazine, registrations have increased significantly.
Appearantly a lot of people read (and pay attention to) PC
Magazine. Site registrations have really increased, and I now have
some Fortune 50 customers. Banks, however, make up the bulk of
the Site Licensees.
I ran into a few tax problems (it was either pay Uncle a lot of
money, or put a lot of money into my house), so I've been
consulting pretty heavily the last year and doing major
reconstruction to my house. I think I am finally through with any
big consulting jobs (and with rebuilding my house), so now AutoCon
will be getting a lot more attention.
This is still not the release I had planned (it will probably show
up some time around July), but one of my competitors was on
Compuserve saying how much better he was than I because his program
could handle DOS 5.0's HIGH and UMB flags. I decided I needed to
add this capability to AutoCon and get out a new release before he
could cause any more problems. So with this release, AutoCon will
handle both MSDOS 5.0's HIGH and UMB flags, and it is compatible
with DRDOS which is one up on my competitor.
The 2.1 release of AutoCon will have a lot more editor
enhancements. I'm planning pull down menus (similar to the front
screen), and a split screen capability. I also intend to allow
Search/Replace operations to go automatically through all
configurations. I will also be able to use the screen size in
effect when AutoCon is started, instead of switching everything to
the 80X25 mode.
I have a support BBS online and functional. The number is (916)
623 4455, and it is in operation 24 hours a day. It has a 9600+
BAUD modem that is CompuCom CSP, V32, and V42 compatible (of course
it connects just fine at 2400 <or less> BAUD). The main function
of the BBS is (of course ) AutoCon support. If it gets busy
enough, it will grow into a full multi-line BBS. As a consequence
there are several megabytes of downloadable files on it, always
including the latest shareware release of AutoCon. I will also set
up a section for a group of Beta testers, so let me know if you are
interested in becomming one. I see several enhancements in
AutoCons future, as well as a few other programs that I have in
mind.
This is my first BBS and I'm sure there will be will be some
growing pains, so please bear with me.
I love the place I've moved to and I thank you very much for the
support you have given to AUTOCON, and for giving me the incentive
to change careers.
-Larry Weaver

View File

@@ -0,0 +1,8 @@
AutoCon V2.0g is a database manager for
Autoexec and Config Files. Allows up to
50 configurations, and makes switching
between them easy. Run full interactive
(editor, mouse, menus, context sensitive
help, etc.) or command line. MENU.CTL
device driver can setup menu of
configurations during boot. (ASP)

View File

@@ -0,0 +1,175 @@
The following is a list of the all of the editor functions, and the
default key assignments.
CURSOR MOVEMENT:
<Left>, <CtrlS>
Cursor left one character.
<Right>, <CtrlD>
Cursor right one character.
<CtrlLeft>, <CtrlA>
Cursor left one word. A 'word' is a series of non-separator
characters followed by one or more of the following :
' ', ';', '/', '='
<CtrlRight>, <CtrlF>
Cursor right one word.
<Home>, <CtrlQ><S>
Cursor to beginning of line.
<End>, <CtrlQ><D>
Cursor to end of line.
<Up>, <CtrlE>
Cursor up one line.
<Down>, <CtrlX>
Cursor down one line.
<CtrlW>
Scroll display up one line.
<CtrlZ>
Scroll display down one line.
<PgUp>, <CtrlR>
Scroll display up one page.
<PgDn>, <CtrlC>
Scroll display down one page.
<CtrlHome>, <CtrlQ><E>
Move cursor to top of edit window.
<CtrlEnd>, <CtrlQ><X>
Move cursor to bottom of edit window.
<CtrlPgUp>, <CtrlQ><R>
Move cursor to beginning of field.
<CtrlPgDn>, <CtrlQ><C>
Move cursor to end of field.
<Tab>, <CtrlI>
Move the cursor to the next tab stop.
<ClickLeft>
Move the cursor to the position indicated by the mouse.
DELETE FUNCTIONS:
<Del>, <CtrlG>
Delete character at cursor.
<Bksp>, <CtrlH>, <CtrlBksp>
Delete character to left of cursor.
<CtrlY>
Delete current line.
<CtrlQ><Y>
Delete from cursor to end of line.
<CtrlT>
Delete word to right of cursor.
NEW LINE:
<Enter>, <CtrlM>
Start a new line.
<CtrlN>
Split the current line at the cursor.
DEFAULT CONTROLS:
<CtrlP>
Insert control character. For example, to insert a ^G, you
would enter <CtrlP><CtrlG>.
<Ins>
Toggle insert mode on and off. Fat cursor indicates insert
mode; thin cursor indicates overtype mode.
<CtrlO><I>
Toggle auto-indent mode. In auto-indent mode, pressing
<Enter> in insert mode causes the new line to have the same
indentation as the previous line. Auto-indent also affects
the way that text is formatted when word wrap occurs.
<CtrlB>
Reformat the current paragraph. Use with caution.
<AltR>
Reformat the entire field. Use this command with caution.
<CtrlQ><L>
Restore original contents of the line and continue editing.
SAVE COMMANDS:
<Esc>, <CtrlBreak>, <ClickRight>, <CtrlK><Q>,
<AltF2>
Quit editing and abandon changes (With Question).
<F2>, <CtrlK><S>
Save the data, but continue editing.
<CtrlF2>, <CtrlK><X>, <CtrlK><D>, <AltX>
Save the data (if modified), and quit editing.
BLOCK COMMANDS:
<CtrlK><B>, <F7> <CtrlK><K>, <F8>
Begin a block mark. End a block mark.
<CtrlK><C> <CtrlK><V>
Copy a marked block. Move a marked block.
<CtrlK><Y> <F5>
Delete a marked block. Delete Contents of Entire field.
<CtrlK><U> <CtrlK><P>
Put marked block in buffer. Copy cUt buffer to Fieeld.
Allows moving data between records.
<CtrlK><W>
Write the Marked Block to the selected file name.
<CtrlK><R>
Read the selected file name into the edit field. You can
popup a file list and use a point and shoot select
SEARCH COMMANDS:
<CtrlQ><CtrlF>
Pops up a window for you to enter a string of text to search for.
The string remains valid across all records until it is changed with
another search function.
<CtrlQ><CtrlA>
Pops up a window for you to enter a string of text to search for,
then pops up a window for you to enter a string of text to replace
the search string with. You will be asked to confirm the
replacement. The strings remain valid across all records until it
is changed with another search function.
<CtrlL>
Repeats the last Search(/Replace) function without going through the
exercise of entering new strings.
MISCELLANEOUS COMMANDS:
<F1>, <ClickBoth>
Help. This command invokes the help routine for this topic
if it exists. Otherwise it does nothing.
<F6>
Pops up a key edit window to allow chaging all of the editor key
assignments.
<AltE>
Creates a "SET AUTOCON=<configuration name>" command for the
Autoexec field. If each Autoexec has the correct one, the name of
the boot configuration will be in the environment.
<AltF6>, <AltF7>, <AltF8>
Changes the keys assigned to change the colors used in the editor.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,94 @@
------------------- REGISTRATION ----------------------
Please support AutoCon!
Thank you for your support.
Remit To: Larry Weaver
P.O. Box 2639
Weaverville CA 96093-2639
---------------------------
You must check one registration option, and one disk option!
---------------------------
_
|_| AutoCon Standard registration ($15.00 -- no disk sent) $______
_
|_| AutoCon Site License and Registration (no disk sent)
$120.00 for the first 100 (or fewer) users or machines
100.00 for each additional 100 (or fewer) users or machines $______
---------------------------
_
|_| AutoCon Upgrade to the newest version ($8.00; $10.00 foreign) $______
Registered users only
_
|_| Subscription plan for REGISTERED users ($21.00; $26.00 foreign) $______
(Receive the next three updates of AutoCon, as they
become available. This fee is in addition to the
$15.00 or $120.00 registration.)
---------------------------
_
|_| Printed Manual ($8.00) $______
If you desire, I will print out the AUTOCON.DOC file and
send it to you. You can achieve the same results by printing
it out yourself, but several people seem to want this.
---------------------------
"Foreign" means outside the USA and Canada; the extra charge covers postage.
_ _
Payment by: |_| Check or |_| Money Order enclosed.
TOTAL in USA Funds. $______
Foreign checks are acceptable if they have the US Federal Reserve
Routing Number on them, use the current exchange rate.
_ _
Disk Type: |_| 5 1/4" (normally sent); |_| 3 1/2" required
Name ___________________________________________________________________
Address ___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
Day Phone: _________________________ Eve: ______________________
Compuserve ID: _____________________
_
Invoice Required |_| P. O. Number: ______________________
------------------------ User comments -------------------------
I acquired AutoCon V2.0g from
[ ] - Friend [ ] - Software product
[ ] - Computer Club [ ] - Computer Store
[ ] - Data Base Service [ ] - Support BBS
[ ] - Electronic BBS - Please give phone no. _____________
[ ] - Other (please specify) ___________________________
I would also appreciate any input you would care to provide
concerning AutoCon. If you have any ideas or comments which would
make AutoCon a better program, please let me know.
I value your comments!
Comments and/or suggestions:
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________

View File

@@ -0,0 +1,441 @@
Version 2.0g
I still had complaints about people seeing Echo Off in the Autoexec
Bat file, so now if you have a DOS higher than 3.2, it will start
with @Echo off.
If you are using DOS 5.0, A DOS=HIGH,NOUMB line will be appended to
the bottom of the Autoexec.bat file, and you will have to put a
DOS=LOW (and/ or a DOS=UMB) in the configurations you need them in.
Menu.Ctl will control the flags.
If you are using DRDOS, Menu.Ctl will now work with it as well as
MSDOS.
I've changed the way I load configurations, so you will be able to
run AutoCon with less memory, and there is no longer a 6K or 2K
limit on the Autoexec and Config fields.
Each configuration now has the names of the files that the field is
written to. (I've had several requests for this one.)
The help screen colors are now installable.
The MENU.CTL interface has been rewritten to show up more distinctly
when booting. I had several complaints that it was easy to miss.
It will now put up some distinctive boxex, and show up in color if
you have a color monitor. The colors are installable from AutoCon.
Each configuration now has the names of the files that the field is written
to. (I've had several requests for this one.)
You can tell AutoCon not to restore the screen on exit (eliminates the
need for AutoConx.exe.
Version 2.0e (mainly bug fix)
In Single mode if the Enviornment name wasn't set (AltE in the
editor) AutoCon could get the wrong cache 'Flush' information. This
is fixed, but I highly reccommend setting the Autocon Environment
variable if you are using Single mode.
If an external editor were being used, and the Autocon or Config
field size got too large, the AutoCon.Dat file could get messed up -
fixed.
Several people have complained that 4K and 2K is not large enough
for the Autoexec and Config fields, so I'm pushing the size up to 6K
and 4K. Please note that this adds 4K/configuration to AutoCon's
memory requirements.
There are two extra EXE files on the BBS. AutoCons.exe will still
use 4K and 2K for those needing the smaller memory requirements.
AutoConx.exe will not restore the screen when it exits. Try this if
you lose the cursor or the screen blanks out when you exit (I've had
two complaints about this).
Version 2.0d (bug fix)
If AutoCon followed an "ECHO OFF" and a "CLS" statement in a batch
file, the screen could get slightly messed up - fixed.
Version 2.0c (bug fix)
The user modified colors were getting lost if a reboot was performed
from the command line - fixed.
Version 2.0b (bug fix)
MENU.CTL had a problem with the name of the eighth configuration,
which is now fixed. It also had a tendency to leave menu choice 2
in the hi-lite mode, also fixed.
Several people complained about seeing the Errorlevel statements in
the AUTOEXEC.BAT during the boot process. AUTOEXEC.BAT files will
now start with ECHO OFF as the first statement if you choose the
MENU.CTL option.
Version 2.0 would allow you to choose more than the eight default
configurations. This is no longer allowed.
Version 2.0 had a problem writing the AUTOEXEC.BAT file for the Menu
mode if the Autoexec fields didn't end in a Carriage Return. This
is now fixed.
Version 2.0
I'm jumping the version number from 1.4 to 2.0 for this release.
The reason is that AutoCon's capability has changed so much in this
release that I think it warrants a Major revision number change.
The major change is the inclusion of two new files. These are
MENU.CTL and MENUNUM.COM. Menu.Ctl is a device driver that can
disable commands in the CONFIG.SYS file. MenuNum.Com is a file that
will ask the portion of Menu.Ctl that stays resident which
configuration was chosen, and set the DOS ERRORLEVEL to that number.
This allows setting up menu choices in the AUTOEXEC.BAT file to
match the choice made from the CONFIG.SYS file. Together these two
files allow you to choose a system configuration from a menu of
configurations during the boot process itself.
AutoCon will handle all of the interface details to these two
commands for you, and allow you to return to a "Normal" system
configuration in just a couple of keystrokes. This will allow you
to run programs like "Optimize" from Quarterdeck.
There is a pull-down menu system available on the main screen. Each
item on the menu has a context sensitive help entry. This should
make it very easy to get AutoCon up and running the first time, and
allow you to look up those commands you can't remember the
keystrokes for.
There are two new command line options. If you enter
AutoCon /<return>
on the command line, a window of your configurations will pop up
asking you to choose which configuration you wish to use to reboot
the system. This is equivalent to the "AutoCon <configuraion name>,
except that AutoCon lets you choose the name from a pick list.
The second new command is
AutoCon /@<configuration name>
where <configuration name> is the name shown on the main screen for
each configuration. If the name matches the configuration that was
used for the boot process, the DOS errorlevel will be set to 1. It
will be set to 0 otherwise. For this function to work correctly,
you need to boot up with Menu.Ctl, or assure that each Autoexec
field has the correct name assigned with a SET command. See the new
"Put Name in Environment" editor function defined below.
The internal editor has a few new capabilities. In order to access
most them you will have to edit your keystrokes (using the F6 key).
The block operations are no longer constrained to full lines. The
default keys for reformating were removed. You may reassign them.
"Search Function" (default assigned to ^Q^F) allows you to search
the text for a specified string of text. The string is active for
the entire AutoCon session, and will be the same across records.
"Search/Replace Function" (default assigned to ^Q^A) allows you to
search the text for a specified string of text, and relpace it
with another string of text. You will be asked to confirm the
replacement.
"Repeat Search Function" (default assigned to ^L) This will
repeat the last Search, or Search/Replace that was performed. The
informations is retained during the AutoCon session, and will be
the same across records.
"Install Editor Keys" (default assigned to F6) allows you to
change the editor keys during an edit session.
"Put Name in Environment" (default assigned to AltE) will put a
SET command in your edit field. This will guarantee that the
configuration you are editing has its name placed correctly in the
environment. AutoCon will use this name for various command line
functions.
"Change (Text - AltF6, Block - AltF7, Control Char - AltF8)
Attribute" will allow you to change the keys that call up the
editor color installation windows.
"View Last Dos Screen" (default assigned to AltV) allows you to
see the DOS screen as it was when AutoCOn was started. Could be
useful if the reason your changing a configuration is shown there.
By March 1, 1991 I will have a support BBS in place operating 24
hours a day. The number will be (916) 623 4455.
Version 1.4
One of the WhatsNews has to do with me, I am now a member of the ASP
(Association of ShareWare Professionals). The rest of the WhatsNews
all concern changes (and additions) to the program.
You now have the option to use the built in editor to edit the
Autoexec and Config fields, or to install an external editor to do
the job. <CtrlF6> will pop up a window for you to enter an external
editor's file name. The Path will be checked for the entered file
name, and if found, it will be used to edit the Autoexec and Config
fields in the future. For more info, see the "Installing External
Editor" section of AUTOCON.DOC.
From the command line, typing <AUTOCON /=> will check the Autoexec
and Config fields of the current configuration record against the
file contents of the current Configuration files (usually
C:\AUTOEXEC.BAT and C:\CONFIG.SYS). The results of the comparison
will be shown on the screen. SPECIAL NOTE! - the configuration will
need to have been saved with the 1.4 version of AUTOCON.
From the command line, typing <AUTOCON /*> will update the Autoexec
and Config fields of the current configuration record from the file
contents of the current Configuration files (usually C:\AUTOEXEC.BAT
and C:\CONFIG.SYS). You might want to be a little careful with this
one.
The internal editor has a few new capabilities. In order to access
them, you will probably have to edit your keystrokes (using the <F6>
key). The new commands are "Split Line", "Cut the marked block",
and "Paste the last Cut block". These commands will be a little
more convenient than the current "Write marked block" and "Read
marked block" file commands.
"Split Line" (default assigned to <CtrlN> key) splits the current
line at the cursor, leaving the cursor where it is, and moving the
rest of the line down to the next line.
"Cut the marked block" (default assigned to <CtrlK> <U> key
combination) will put the current marked block into a text buffer.
"Paste the last Cut block" (default assigned to <CtrlK> <P> key
combination) will paste the contents of the cut buffer to the
current cursor location. This command can be used to move the
data in the same record, or across records. After a cUt, the data
will stay in the buffer until a new cUt is performed, or AUTOCON
is exited.
Formerly the editor only recognized a ' ' (space) as a word mark
(for <CtrlF>, <CtrlA>, <CtrlRarw>, etc.). This has been enhanced
to also recognize the following characters as word marks :
'/', ';', and '='.
Line length was increased to 254 for those long path names (and
any other long lines needed). This necessitated removing the
word-wrap capability while editing the Autoexec and Config
fields (I don't think this will be a hardship, you probably don't
want to word-wrap the lines in your Autoexec and Config files
anyway). Word-wrap is still used in the Notes field, but please
don't enter a line longer than 127 characters in there.
A couple of functions were also added to the Interactive Mode.
<AltC> will pop-up a pick list of the current configuration
records, and allow you to select one. The contents of the
Autoexec and Config fields of the selected configuration record
will be copied to the current configuration record. Be careful
with this one, there is NO "Undo" command. You can always
use ESC to get out of the pick list without doing a copy.
<AltV> will now show the Dos screen as it was when Autocon was
started.
<Alt=> will check the Autoexec and Config fields of the current
configuration record against the contents of the current
configuration files (C:\AUTOEXEC.BAT and C:\CONFIG.SYS, unless you
have changed them with <F8> or <F9> keys). SPECIAL NOTE! - the
configuration will need to have been saved with the 1.4 version of
AUTOCON.
All of the color changes now show up instantly (you previously had
to wait till the next time Autocon was executed to see some of the
color changes).
ESC is no longer accepted as a "Yes" answer (there were a lot of
complaints on this one). A "Yes" answer now requires a <Y> or
<Enter> key (accept default).
There are a few cosmetic changes on the screens (all in response to
comments by users). I won't take the space to list each one.
There are a couple more entrys on the help screen, and (I hope) the
entries are arranged in a little more logical fashion.
UltraVision : Autocon is now UltraVision "Aware". Autocon will
detect if UltraVision is installed and active. If it is, Autocon
will use UltraVision to switch modes, and restore screens (in other
words, Autocon won't mess up your screen).
Windows Problems : After spending a very unproductive day on the
phone with Microsoft, I decided to add another boot type option to
Autocon. Several people use Autocon to reconfigure in and out of
Windows. When Windows is running in 386 enhanced mode, a software
boot (usually) doesn't work. Microsoft's recommendation : "Never
reboot while running Windows". They say that this may trash hard
disks and worse (I'm not sure what could be "worse" than trashing a
hard disk). I don't know about you, but I've had to reboot out of
Windows several times. I know it's probably not a good idea, but
there are times it should be quite safe (and times when it is forced
upon us). Anyway, they say that is no way they are aware of to
ensure that a software reboot will work.
Therefore :
You may now select (N)one as an alternate boot type (using the
<F5> key). If you select (N)one, Autocon will now reconfigure the
files, but will not attempt a reboot. Now you may run Autocon
under Windows, and after the system files are reconfigured, you
can hit the dreaded CtrlAltDel key combination.
By the way, I'm not much of an artist, so if someone (out of the
goodness of their hearts) designs a nice Icon for Autocon, I would
appreciate them sending me a copy.
A potentially nasty bug was squashed. Since I never received a
complaint on this one, I assume that I was the only one "bit". If
your current configuration record was the last one, and you deleted
it, Autocon tried to find it again the next time it was started.
This could lead to bizarre behavior (a messed up pointer for those
technical people). If the current record number is larger than the
max record number, it will now be adjusted (with appropriate warning
message). It will still be pointing to the wrong record, but it
will behave in a known fashion.
______________________________________________________________________
Version 1.3a
There are a few bug fixes, and a couple of enhancements in this
version. If you used F2 to save changes in the previous versions,
when you hit ESC to exit it would issue a warning that the changes
were about to be lost, this has been corrected.
AUTOCON will now attempt to detect and restore the EGA/VGA (45/50)
small character mode upon exit.
After updating the configuration with 1.3a, when AUTOCON is started
in the interactive mode, it will default to the configuration used
in the last update.
On the command line if you type <AUTOCON /?> the name of the current
configuration will be displayed (Note: you must have saved a
configuration with V1.3a first).
If you are in the full screen entry mode, hitting <F7> will update
the Autoexec and Config fields in the current record from the
current AUTOEXEC.BAT and CONFIG.SYS files. This saves going into
each of the two fields and doing a <F5> <^KR> <AltX>.
From the command line, typing AUTOCON followed by a / and the name
of a configuration (e.g. <AUTOCON /NoTSRs>) will cause that
configuration to have it's Autoexec and Config fields updated from
the current AUTOEXEC.BAT and CONFIG.SYS files.
There was a bug in V1.3 that caused AUTOCON to have a problem with
reading files that were not terminated with ^Z. If you got an
"Edit Buffer Full" message when you tried to edit a field that you
know wasn't too big, then you were bitten by this bug. This is
fixed in 1.3a.
If you were in one of the fields and issued an <^KW> (block save)
and didn't have a marked block, you were not given an error message
in previous versions. This is fixed in 1.3a.
The help screen displayed in a color change window was the one for
changing the editor keystrokes. This is fixed in 1.3a.
______________________________________________________________________
Version 1.3
There are several changes in this version. If you have added
several extra configurations that you no longer need, the <CtrlF3>
key will delete the current configuration (you can't delete record
one, nor can you go below five records).
You can change the keystrokes used by the built in editor. Hitting
the <F6> key in the main menu will pop up a key editor which will
allow changing the actions of all of the control keys used in the
editor.
You can change the colors used by AUTOCON. Hitting the <Alt> key in
combination with the function keys will allow customization of most
of the colors. The use of each key is detailed in the pop-up help.
The DAT file format for 1.3 is quite different than the one for 1.2.
The white space has been eliminated, and as a consequence it is
significantly smaller (mine are about 1/4 the previous size). The
first time you run 1.3 it will change the format, and the DAT file
will no longer be compatible with 1.2. You may want to make a copy
of AUTOCON.DAT (just to be on the safe side) before running 1.3.
______________________________________________________________________
Version 1.2d keeps current file attributes
A request was made to update the Autoexec and Config files, but to
not change their current attributes (system, read only, hidden,
etc.). Therefore AUTOCON now reads the current file attributes of
Autoexec.Bat and Config.Sys before updating them, and restores the
attributes after the update.
______________________________________________________________________
Version 1.2c adds a boot type select.
Some computers have trouble with the warm boot that AUTOCON was
originally configured with. These seem to mainly be machines with
large hard disks, and a large hard disk manager. The <F5> key now
allows you to change the boot type from warm to cold to get around
this problem.
______________________________________________________________________
Version 1.2a is a bug fix.
AUTOCON didn't recognize more than three configurations from the
command line.
Version 1.2 is a bug fix.
When you attempted to read in your old configuration files to the
AUTOEXEC and CONFIG fields, it always defaulted to C:\AUTOEXEC.BAT
an C:\CONFIG.SYS no matter what files you had selected. The read
file option now works correctly.
______________________________________________________________________
Version 1.1 charges are as follows.
1. AUTOCON now does a Reboot when a reconfiguration is done from the
command line.
2. AUTOCON now handles up to 50 configurations (originally only 5).
3. You can now read any file into an AUTOEXEC or CONFIG edit field
(allows you to use your old configurations).
4. The On-line Help has been updated/enhanced.
5. The Doc file has been enhanced (left out a few things the first
time).
6. Allows you the choice of a Reboot when reconfiguring in the data
entry mode.
7. Hopefully a better choice of colors on an LCD screen. If you have
an LCD, you need to have your mode set to BW80 (2).

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,3 @@
@echo This batch file uses Turbo C to build pfdisk.exe
@echo Note that only SMALL model has been tested...
tcc -v- -epfdisk.exe pfdiskaz.c syscodes.c s_msdos.c

View File

@@ -0,0 +1,264 @@
PFDISK(8) MAINTENANCE COMMANDS PFDISK(8)
NAME
pfdisk - partition fixed disk
SYNOPSIS
pfdisk device
DESCRIPTION
pfdisk partitions the fixed disk identified as device into (at
most) four parts, each of which may be independently loaded with
an operating system. The actual name of device depends on the
operating system in use. For ESIX (System V/386) the device
name is either "/dev/rdsk/0s0" or "/dev/rdsk/1s0". For Minix,
it is "/dev/hd0" or "/dev/hd5". For MS-DOS it is a single digit
(zero or one).
pfdisk reads the hard disk partition table from block zero of
device into memory and allows the user to examine, modify, or
save the partition table. A regular file may be used instead of
a real device for testing purposes, though the device geometry
must be specified manually, and some systems will requrire a
file-name argument with the "R" and "W" commands (DOS, ESIX).
The partition table on device is NOT modified unless the write
command (W) is used with no argument.
USAGE
Commands
All pfdisk commands consist of a command word followed by
optional blank-separated command arguments. Note that only the
first letter of a command word is significant (except for "wq"
and "q!"). All command letters are accepted in either upper or
lower case. Numeric arguments are specified using C syntax.
Extra arguments are silently ignored.
The commands are:
? Prints a command summary (help).
1 sys_id first last sys_name
Set the partition table entry for part one, using:
sys_id as its system ID code, first as the lowest num-
bered cylinder it uses, last as the highest numbered
cylinder it uses, and sys_name (optional) as the system
name (in the menu name table).
2|3|4 sys-id first last sys-name
Similar to 1 but sets partition two, three, or four,
respectively.
Release 1.3 Last change: Oct 1990 1
PFDISK(8) MAINTENANCE COMMANDS PFDISK(8)
A number
Mark partition number as active (so it will be used for
booting). If number is zero, no partition will be
active.
G cylinders heads sectors
Inform pfdisk what the geometry of the device is.
I Print a summary of the known ID codes.
L List the partition table. See Output Format below.
Q Quit without saving. If the memory copy of the parti-
tion table was modified, a warning will be issued and
the command ignored.
Q! Quit, even if the memory copy of the partition table was
not saved.
R file-name
Read boot sector from file-name (if given) otherwise
read from device.
W file-name
Write boot sector to file-name. (if given) otherwise
write to device.
WQ Same as "write" followed by "quit".
# This line is a comment (to be ignored).
Output Format
Here is a sample of the output from the L command:
# Partition table on device: /dev/rdsk/0s0
geometry 1222 15 34 (cyls heads sectors)
# ID First(cyl) Last(cyl) Name # start, length (sectors)
1 4 0 127 MS-LOSS # 34, 65246
2 129 128 255 Minix # 65280, 65280
3 0 0 0 # 0, 0
4 99 256 1220 ESIX # 130560, 492150
# note: last(4): phys=(1023,14,34) logical=(1220,14,34)
active: 4
This output format is carefully constructed so that it may be
saved in a file (by redirecting standard output) and later used
as input (by redirecting standard input). On a UNIX system, one
can save this output using the command:
Release 1.3 Last change: Oct 1990 2
PFDISK(8) MAINTENANCE COMMANDS PFDISK(8)
(echo L) | pfdisk device-name > save-file
save-file is a complete record of the partition table. On a
UNIX system, one could use save-file to re-initialize the parti-
tion table using the command:
(cat save-file ; echo wq) | pfdisk device-name
Consistency of each partition table entry is checked while the
table is listed. Any inconsistencies discovered are reported in
a commentary note as shown above.
Physical vs. Logical
Each partition table entry has both "physical" and a "logical"
fields. The physical fields specify the lowest and highest
cylinder,head,sector combinations to be used in that partition.
The logical start field has the total number of sectors which
precede this partition, and the logical length field has the
total number of sectors contained in this partition. These
fields should be self consistent unless the disk has more than
1024 cylinders.
The physical cylinder fields are only ten-bits wide so the con-
tents are limited to 1023. The logical sector fields are 32 bits
wide and always show the true logical beginning and length of
the partition. Generally, the physical start field is used only
to locate the secondary boot sector, and the logical start and
length fields are used to actually delimit the partition used by
a particular system.
Partition Names
The Name field in the partition table is treated specially if
the bootmenu program is installed in the primary boot sector.
(See the file bootmenu.doc for more information.) pfdisk can
recognize the name table used by bootmenu and will show the
actual names present in that name table. If any other boot pro-
gram is used then the Name field reflects the result of a
table-lookup of the system ID.
If you provide a name when setting any partition entry, the
boot-sector is marked as using a name table, so that on subse-
quent uses of pfdisk you will see the partition names you have
specified.
Boot program replacement
You can replace the boot program in your boot sector without
affecting the partition table by using pfdisk as follows.
First, (as always) save a copy of the current boot sector (on a
Release 1.3 Last change: Oct 1990 3
PFDISK(8) MAINTENANCE COMMANDS PFDISK(8)
floppy) using the "W file" command. Then, use the "R file" com-
mand to read the new boot program. If the boot program read in
is less than 446 bytes long, the partition table will be
unchanged.
Unlike the DOS or UNIX fdisk programs, pfdisk has NO boot pro-
gram compiled into its executable image. If you wish to use
pfdisk to partition a newly formatted hard disk, you must have a
boot program image available to read in using the "r file" com-
mand. Two boot programs, "bootmenu.bin" and "bootauto.bin" are
distributed with pfdisk and should be found with its source
files. See the file bootmenu.doc for further information about
these boot programs.
AUTHOR
Gordon W. Ross
Release 1.3 Last change: Oct 1990 4

Binary file not shown.

View File

@@ -0,0 +1,605 @@
/*
* pfdisk - Partition a Fixed DISK
* by Gordon W. Ross, Jan. 1990
*
* See the file "pfdisk.doc" for user instructions.
*
* This program uses a simple, line-oriented interpreter,
* designed for both interactive and non-interactive use.
* To facilitate non-interactive use, the output from the
* 'L' (list partitions) command is carefully arranged so it
* can be used directly as command input. Neat trick, eh?
*/
char *versionString =
"# pfdisk version 1.2.1 by Gordon W. Ross Aug. 1990\nModified by S. Lubkin Oct. 1991\n";
/* These don't really matter. The user is asked to set them. */
#define DEFAULT_CYLS 306
#define DEFAULT_HEADS 4
#define DEFAULT_SECTORS 17
#define PROMPT_STRING "pfdisk> "
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "sysdep.h"
#include "syscodes.h"
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
struct part { /* An entry in the partition table */
uchar active; /* active flag (0x80 or 0) */
uchar b_head; /* begin head */
uchar b_sec; /* sector */
uchar b_cyl; /* cylinder */
uchar sysid; /* system id (see sysid.c) */
uchar e_head; /* end head */
uchar e_sec; /* end sector */
uchar e_cyl; /* end cylinder */
/* These two are just longs, but this way is machine independent. */
/* uchar lsBeg[4]; /* logical sectors, beginning Saul */
ulong lsBeg; /* logical sectors, beginning Saul */
/* uchar lsLen[4]; /* logical sectors, length Saul */
ulong lsLen; /* logical sectors, length Saul */
};
#define LOC_PT 0x1BE
#define LOC_NT 0x1AA /* Saul */
/* #define LOC_NT 0x180 Saul */
/* #define LOC_GWR 0x1A0 Saul */
#define LOC_GWR 0x1A9 /* Saul */
#define MAGIC_LOC 0x1FE
#define MAGIC_0 0x55
#define MAGIC_1 0xAA
#define MAX_LINE 80
#define NT_ENTRY_SIZE 5 /* Saul */
/* Note: Entry in "printf" command, should be manually changed, to
"%-NT_ENTRY_SIZE.NT_ENTRY_SIZEs" Saul */
/* And header printf line should have blanks adjusted Saul */
char s[22]; /* For holding error string */
char buffer[SECSIZE]; /* The boot block buffer */
int bufmod=0; /* buffer modified... */
/* (zero means buffer is unmodified) */
int useNTable; /* boot sector uses name table */
/* device parameters (force someone to set them!) */
unsigned cyls = DEFAULT_CYLS;
unsigned heads = DEFAULT_HEADS;
unsigned sectors = DEFAULT_SECTORS;
char *devname; /* device name */
char cmdline[MAX_LINE];
char filename[80]; /* used by r/w commands */
char *prompt; /* null if no tty input */
/* Some of these strings are used in more than one place.
* For consistency, I put a newline on all of them.
*/
char h_h[] = "? <enter> : Help summary\n";
char h_l[] = "L : List partition table\n";
char h_1[] = "1 id first last [name]: set partition 1\n";
char h_2[] = "2,3,4 ... (like 1) : set respective partition\n";
char h_a[] = "A n [m, ...] : Activate partition(s) n [m, ...]\n";
char h_g[] = "G cyls heads sectors : set disk Geometry\n";
char h_i[] = "I : list known ID numbers\n";
char h_r[] = "R [optional-file] : Read device (or specified file)\n";
char h_w[] = "W [optional-file] : Write device (or specified file)\n";
char h_q[] = "Q[!] : Quit (! means force)\n";
char * helpTable[] = {
h_h, h_l, h_1, h_2, h_a, h_g, h_i, h_r, h_w, h_q,
"# (All command letters have lower-case equivalents.)\n",
(char *) 0 }; /* This MUST have a zero as the last element */
char *BadArg="Error: bad argument: %s\n";
char *WarnNotSaved =
"Warning, modified partition table not saved.\n";
help()
{
char ** p;
for (p = helpTable; *p; p++)
printf(*p);
}
/* forward declarations */
void checkValidity();
char * setPartition();
char * makeActive();
char * setGeometry();
ulong chs2long();
char * nameID();
int printIDs();
main(argc,argv)
int argc;
char *argv[];
{
char *cmdp; /* points to command word */
char *argp; /* points to command args */
/* check command line args (device name) */
if (argc != 2) {
usage(argv[0]); /* See s-sysname.c */
exit(1);
}
devname = argv[1];
/* Should we prompt? */
prompt = (isatty(fileno(stdin))) ? PROMPT_STRING : (char *) 0;
/* Print version name. */
fputs(versionString, stderr);
/* get disk parameters */
getGeometry(devname,&cyls,&heads,&sectors);
/* Get the boot block. */
if (getBBlk(devname, buffer) < 0)
fprintf(stderr,"%s: read failed\n", devname);
checkValidity();
if (prompt) fprintf(stderr,"For help, enter: '?'\n");
/* Read and process commands a line at a time. */
while (1) {
if (prompt) fputs(prompt,stdout);
if (! fgets(cmdline, MAX_LINE, stdin)) break;
/* Find beginning of command word */
cmdp = cmdline;
while (isspace(*cmdp)) cmdp++;
/* find beginning of args */
argp = cmdp;
while (*argp && !isspace(*argp)) argp++;
while (isspace(*argp) || *argp=='=') argp++;
switch (*cmdp) {
case '\0': /* blank line */
case '#': /* line comment */
break;
case '?': case 'h': case 'H':
help();
break;
case '1': /* set partition entry */
case '2': case '3': case '4':
argp = setPartition(cmdp, argp);
if (argp) { /* arg list error */
fprintf(stderr,BadArg,argp);
fprintf(stderr,h_1);
fprintf(stderr,h_2);
break;
}
bufmod = 1;
break;
case 'a': case 'A': /* activate partition */
argp = makeActive(argp);
if (argp) {
fprintf(stderr,BadArg,argp);
fprintf(stderr,h_a);
break;
}
bufmod = 1;
break;
case 'g': case 'G': /* set disk parameters (Geometry) */
argp = setGeometry(argp);
if (argp) { /* arg list error */
fprintf(stderr,BadArg,argp);
fprintf(stderr,h_g);
}
break;
case 'i': case 'I': /* List known ID numbers */
printIDs();
break;
case 'l': case 'L': /* List the partition table */
listPTable();
break;
case 'q': case 'Q': /* Quit */
if (bufmod && (cmdp[1] != '!')) {
fprintf(stderr,"\007%s%s\n", WarnNotSaved,
"Use 'wq' or 'q!' (enter ? for help).");
break;
}
exit(0);
/*NOTREACHED*/
case 'r': case 'R': /* read from device or file */
if (sscanf(argp,"%80s",filename) == 1) {
/* Arg specified, read from filename */
if (getFile(filename, buffer, SECSIZE) < 0)
fprintf(stderr,"%s: read failed\n", filename);
bufmod = 1;
} else {
/* No arg, use device. */
if (getBBlk(devname, buffer) < 0)
fprintf(stderr,"%s: read failed\n", devname);
bufmod = 0;
}
checkValidity();
break;
case 'w': case 'W': /* Write to file or device */
if (sscanf(argp,"%80s",filename) == 1) {
/* Arg specified, write to filename */
if (putFile(filename, buffer, SECSIZE) < 0)
fprintf(stderr, "%s: write failed\n", filename);
} else { /* No arg, use device. */
if (putBBlk(devname, buffer) < 0)
fprintf(stderr, "%s: write failed\n", devname);
bufmod = 0;
}
if (cmdp[1] == 'q' || cmdp[1] == 'Q') exit(0);
break;
default:
fprintf(stderr,"'%c': unrecognized. Enter '?' for help.\n", *cmdp);
break;
} /* switch */
} /* while */
if (bufmod) fprintf(stderr, WarnNotSaved);
exit(0);
} /* main */
/* Check for valid boot block (magic number in last two bytes).
* Also, check for presence of partition name table.
*/
void checkValidity()
{
/* Check the magic number. */
if ((buffer[MAGIC_LOC] & 0xFF) != MAGIC_0 ||
(buffer[MAGIC_LOC+1] & 0xFF) != MAGIC_1 ) {
/* The boot sector is not valid -- Fix it. */
buffer[MAGIC_LOC] = MAGIC_0;
buffer[MAGIC_LOC+1] = MAGIC_1;
bufmod = 1;
fprintf(stderr,
"\n\tWarning: The boot sector has an invalid magic number.\n\
\tThe magic number has been fixed, but the other contents\n\
\tare probably garbage. Initialize using the command:\n\
\t\tR boot-program-file (i.e. bootmenu.bin)\n\
\tthen set each partition entry if necessary.\n");
}
/* Does it use a name table (for a boot menu)?
* My boot program does, and can be identified by
* finding my name in a particular (unused) area.
*/
useNTable = ( buffer[LOC_GWR] == (char)0x3A ); /* Saul */
/* useNTable = !strcmp(&buffer[LOC_GWR], "Gordon W. Ross"); Saul */
}
char * setPartition(cmdp,argp) /* return string on error */
char *cmdp,*argp;
{
struct part *pp; /* partition entry */
char * np; /* name table pointer */
char tmpname[20];
char * newname = tmpname; /* name field */
int index; /* partition index (0..3) */
uint id; /* ID code (see syscodes.c) */
uint first,last; /* user supplied cylinders */
uint c,h,s; /* working cyl,head,sect, */
int i; /* returned by sscanf */
ulong lsbeg, lslen; /* logical begin, length */
/* Value check the index */
index = *cmdp - '1';
if (index < 0 || index > 3)
return("index");
pp = (struct part *) &buffer[LOC_PT + index * 16];
np = &buffer[LOC_NT + index * NT_ENTRY_SIZE]; /* Saul */
/* np = &buffer[LOC_NT + index * 8]; Saul */
/* Read System ID */
if ((i=sscanf(argp,"%d%d%d%s", &id, &first, &last, newname)) < 1)
return("id");
/* If ID==0, just clear out the entry and return. */
if (id == 0) {
strncpy( (char *) pp, "", 16);
if (useNTable) strncpy( np, "", NT_ENTRY_SIZE); /* Saul */
/* if (useNTable) strncpy( np, "", 8); Saul */
return((char *)0);
}
/* Read first and last cylinder */
if (i < 3)
return("first last (missing)");
/* Reasonable start,end cylinder numbers? */
if (first > last) return("first > last");
if (first > 1023) return("first > 1023");
if (last >= cyls) return("last >= cyls");
/* Get (optional) system name. */
if (i == 3) { /* no name given, use default */
newname = nameID(id);
}
else useNTable = 1;
/* Set the ID and name. */
pp->sysid = id;
if (useNTable) {
strncpy(np, newname, NT_ENTRY_SIZE); /* Saul */
/* strncpy(np, newname, 8); Saul */
/* strcpy(&buffer[LOC_GWR], "Gordon W. Ross"); Saul */
buffer[LOC_GWR] = (char)0x3A; /* Saul */
}
/* set beginning c,h,s */
c = first;
/* if c == 0, head == 1 (reserve track 0) */
h = (first) ? 0 : 1;
s = 1;
pp->b_cyl = c & 0xFF;
pp->b_head = h;
pp->b_sec = s | ((c >> 2) & 0xC0);
/* Set the logical sector begin field */
lsbeg = lslen = chs2long(c,h,s); /* using lslen as temp. */
/* pp->lsBeg[0] = lslen & 0xff; lslen >>= 8;
pp->lsBeg[1] = lslen & 0xff; lslen >>= 8;
pp->lsBeg[2] = lslen & 0xff; lslen >>= 8;
pp->lsBeg[3] = lslen & 0xff; lslen >>= 8; Saul */
pp->lsBeg = lslen; /* Saul */
/* set ending c,h,s (last may be larger than 1023) */
c = (last>1023) ? 1023 : last; /* limit c to 1023 */
h = heads - 1; s = sectors;
pp->e_cyl = c & 0xFF;
pp->e_head = h;
pp->e_sec = s | ((c >> 2) & 0xC0);
/* Set the logical sector length field (using REAL end cylinder) */
lslen = chs2long(last,h,s) + 1 - lsbeg;
/* pp->lsLen[0] = lslen & 0xff; lslen >>= 8;
pp->lsLen[1] = lslen & 0xff; lslen >>= 8;
pp->lsLen[2] = lslen & 0xff; lslen >>= 8;
pp->lsLen[3] = lslen & 0xff; lslen >>= 8; Saul */
pp->lsLen = lslen; /* Saul */
return((char *)0); /* success */
} /* setPartition() */
char * makeActive(argp) /* return error string or zero */
char *argp;
{
struct part *pp; /* partition entry */
int i,act1,act2,act3,act4,act5; /* which one becomes active */
act1=0;
act2=0;
act3=0;
act4=0;
if ((i=sscanf(argp,"%d%d%d%d%d", &act1, &act2, &act3, &act4, &act5)) < 1)
return("missing partition number");
if ( i > 4)
return("at most four partition numbers");
act1--; /* make it zero-origin */
act2--; /* make it zero-origin */
act3--; /* make it zero-origin */
act4--; /* make it zero-origin */
i=0; pp = (struct part *) &buffer[LOC_PT];
while (i<4) {
if (pp->sysid == 0 && (i == act1|| i == act2 || i == act3 || i == act4)) {
sprintf(s, "partition %d empty", i+1);
return(s);
}
i++; pp++;
}
i=0; pp -= 4;
while (i<4) {
if (i == act1|| i == act2 || i == act3 || i == act4)
pp->active = 0x80;
else
pp->active = 0;
i++; pp++;
}
return((char *)0);
}
char * setGeometry(argp) /* return string on error */
char *argp;
{
int c,h,s;
if (sscanf(argp,"%d%d%d", &c, &h, &s) < 3)
return("(missing)");
if (c<1) return("cyls");
if (h<1) return("heads");
if (s<1) return("sectors");
cyls=c; heads=h; sectors=s;
return((char *)0);
}
listPTable() /* print out partition table */
{
struct part * pp; /* partition table entry */
char *name;
int i; /* partition number */
/* int numActive=0; /* active partition [1-4], 0==none */
char Active[20]; /* active partitions [1-4], 0==none */
uint pbc,pbh,pbs; /* physical beginning c,h,s */
uint pec,peh,pes; /* physical ending c,h,s */
uint lbc,lbh,lbs; /* logical beginning c,h,s */
uint lec,leh,les; /* logical ending c,h,s */
ulong lsbeg,lslen; /* logical sectors: begin, length */
strcpy(Active, "active:");
printf("# Partition table on device: %s\n", devname);
printf("geometry %d %d %d (cyls heads sectors)\n",
cyls, heads, sectors);
/* printf("# ID First(cyl) Last(cyl) Name "); Saul */
printf("# ID First(cyl) Last(cyl) Name "); /* Saul */
printf("# start, length (sectors)\n");
for (i=0; i<4; i++) {
pp = (struct part *) &buffer[LOC_PT + i * 16];
if (pp->active) {
char s[3];
sprintf(s, " %d", i+1);
strcat(Active,s);
if (pp->active != 0x80)
fprintf(stderr, "Warning: Partition %d is active, with the illegal activity byte %d.\nCorrect with the \"A\" command.\n", i+1, pp->active);
/* if(numActive)
fprintf(stderr,"Error: multiple active partitions.\n");
else numActive = i+1; */
}
/* physical beginning c,h,s */
pbc = pp->b_cyl & 0xff | (pp->b_sec << 2) & 0x300;
pbh = pp->b_head;
pbs = pp->b_sec & 0x3F;
/* physical ending c,h,s */
pec = pp->e_cyl & 0xff | (pp->e_sec << 2) & 0x300;
peh = pp->e_head;
pes = pp->e_sec & 0x3F;
/* compute logical beginning (c,h,s) */
/* lsbeg = ((((((pp->lsBeg[3] ) << 8 )
| pp->lsBeg[2] ) << 8 )
| pp->lsBeg[1] ) << 8 )
| pp->lsBeg[0] ; Saul */
lsbeg = pp->lsBeg; /* Saul */
long2chs(lsbeg, &lbc, &lbh, &lbs);
/* compute logical ending (c,h,s) */
/* lslen = ((((((pp->lsLen[3]) << 8 )
| pp->lsLen[2]) << 8 )
| pp->lsLen[1]) << 8 )
| pp->lsLen[0] ; Saul */
lslen = pp->lsLen; /* Saul*/
/* keep beginning <= end ... */
if (lslen > 0) long2chs(lsbeg+lslen-1, &lec, &leh, &les);
else long2chs(lsbeg, &lec, &leh, &les);
if (useNTable)
name = &buffer[LOC_NT + i * NT_ENTRY_SIZE ]; /* Saul */
/* name = &buffer[LOC_NT + i * 8]; Saul */
else
name = nameID((uint) pp->sysid);
/* show physical begin, logical end (works for cyl>1023) */
/* # ID First(cyl) Last(cyl) Name... # ... */
/* printf("%d %3d %4d %4d %-8.8s # %ld, %ld\n", Saul */
printf("%d %3d %4d %4d %-5.5s # %ld, %ld\n", /* Saul */
i+1, pp->sysid, pbc, lec, name, lsbeg, lslen );
/* That's all, for an empty partition. */
if (pp->sysid == 0) continue;
/*
* Now do some consistency checks...
*/
/* Same physical / logical beginning? */
if (pbc != lbc || pbh != lbh || pbs != lbs ) {
printf("# note: first(%d): ", i+1);
printf("phys=(%d,%d,%d) ", pbc, pbh, pbs);
printf("logical=(%d,%d,%d)\n",lbc, lbh, lbs);
}
/* Same physical / logical ending? */
if (pec != lec || peh != leh || pes != les ) {
printf("# note: last(%d): ", i+1);
printf("phys=(%d,%d,%d) ", pec, peh, pes);
printf("logical=(%d,%d,%d)\n",lec, leh, les);
}
/* Beginning on cylinder boundary? */
if (pbc == 0) { /* exception: start on head 1 */
if (pbh != 1 || pbs != 1) {
printf("# note: first(%i): ", i+1);
printf("phys=(%d,%d,%d) ", pbc, pbh, pbs);
printf("should be (%d,1,1)\n", pbc);
}
} else { /* not on cyl 0 */
if (pbh != 0 || pbs != 1) {
printf("# note: first(%i): ", i+1);
printf("phys=(%d,%d,%d) ", pbc, pbh, pbs);
printf("should be (%d,0,1)\n", pbc);
}
}
/* Ending on cylinder boundary? */
if (peh != (heads-1) || pes != sectors) {
printf("# note: last(%i): ", i+1);
printf("phys=(%d,%d,%d) ", pec, peh, pes);
printf("should be (%d,%d,%d)\n",
pec, heads-1, sectors);
}
} /* for */
if ( !Active[7] ) /* No active partitions */
strcat(Active, " 0 (none)");
strcat(Active, "\n");
printf(Active);
/* printf("active: %d %s\n", numActive,
(numActive) ? "" : "(none)"); */
} /* listPTable() */
ulong chs2long(c,h,s)
uint c,h,s;
{
ulong l;
if (s<1) s=1;
l = c; l *= heads;
l += h; l *= sectors;
l += (s - 1);
return(l);
}
long2chs(ls, c, h, s) /* convert logical sec-num to c,h,s */
ulong ls; /* Logical Sector number */
uint *c,*h,*s; /* cyl, head, sector */
{
int spc = heads * sectors;
*c = ls / spc;
ls = ls % spc;
*h = ls / sectors;
*s = ls % sectors + 1; /* sectors count from 1 */
}
char * nameID(n)
unsigned int n;
{
struct intString *is;
is = sysCodes;
while (is->i) {
if (is->i == n) return(is->s);
is++;
}
if (!n) return(is->s);
return("unknown");
}
int printIDs() /* print the known system IDs */
{
struct intString * is = sysCodes;
/* This might need to do more processing eventually, i.e.
* if (prompt) { ... do more processing ... }
*/
printf("_ID_\t__Name__ ____Description____\n");
while (is->i) {
printf("%3d\t%s\n", is->i, is->s);
is++;
}
}

View File

@@ -0,0 +1,43 @@
/* This file holds all knowledge of partition ID codes.
* Thanks to leendert@cs.vu.nl (Leendert van Doorn) for
* collecting most of this information.
*/
#define extern
#include "syscodes.h"
#undef extern
/* Note that my boot program menu can only use the first 8 characters
* of these names. The colon in the nineth position shows where the
* first truncated char is. (There's not much room in the bootblock!)
* changed sysCodes[] below, adding SIZE tms */
struct intString sysCodes[SIZE] = {
{ 0x01, "DOS12 :12-bit FAT" },
{ 0x02, "XENIX :root" },
{ 0x03, "XENIX :usr" },
{ 0x04, "DOS16 :16-bit FAT" },
{ 0x05, "DOSex :DOS 3.3 extended volume" },
{ 0x06, "DOSbi :DOS 4.0 large volume" },
{ 0x07, "OS/2 :OS/2 (or QNX or Adv. UNIX...)" },
{ 0x08, "AIX :file system" },
{ 0x09, "AIXbt:boot partition" },
{ 0x10, "OPUS :?" },
{ 0x40, "VENIX :Venix 80286" },
{ 0x51, "NOVEL :?" },
{ 0x52, "CPM :?" },
{ 0x63, "UNIX :System V/386" },
{ 0x64, "NOVEL :?" },
{ 0x75, "PC/IX :?" },
{ 0x80, "Minix :Minix (ver. 1.4a and earlier)" },
{ 0x81, "Minix :Minix (ver. 1.4b and later)" },
{ 0x93, "Ameba :Amoeba file system" },
{ 0x94, "Ameba :Amoeba bad block table?" },
{ 0xDB, "C.DOS :Concurrent DOS" },
/* { 0xF2, "DOS-2nd :DOS 3.3+ second partition" }, */
/* { 0xFF, "BAD-TRK :Bad track table?" }, */
/* Make sure this is last! */
{ 0, "empty" }
};

View File

@@ -0,0 +1,4 @@
#define SIZE 40 /* added tms */
struct intString { unsigned int i; char * s; };
extern struct intString sysCodes[SIZE]; /* was sysCodes[] modified tms */

View File

@@ -0,0 +1,22 @@
/* communicate declarations from the files: s_*.c */
#define SECSIZE 0x200
extern int usage(); /* print a usage message */
/* (char *progname) */
extern void getGeometry(); /* determine disk parameters */
/* (char *dev, uint *cyls, uint *heads, uint *sectors) */
extern int getFile(); /* open, read, close, return(num-read) */
/* (char *name, char *buf, int len) */
extern int putFile(); /* open, write, close, return(num-writen) */
/* (char *name, char *buf, int len) */
extern int getBBlk(); /* open, read, close, return(num-read) */
/* (char *dev, char *buf) */
extern int putBBlk(); /* open, write, close, return(num-writen) */
/* (char *dev, char *buf) */

View File

@@ -0,0 +1,163 @@
/* This file contains system-specific functions for MS-DOS.
* The program pfdisk.c calls these routines.
*/
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dos.h>
#define extern
#include "sysdep.h"
#undef extern
int usage(prog) /* print a usage message */
char *prog; /* program name */
{
fprintf(stderr,"Usage: %s <disk>\n", prog);
fprintf(stderr,"\twhere <disk> is a digit [0-9]\n");
}
void getGeometry(name, c, h, s)
char *name; /* device name */
unsigned *c,*h,*s; /* cyls, heads, sectors */
{
int dev; /* hard disk number */
union REGS regs;
struct SREGS sregs;
if (name[0] < '0' ||
name[0] > '9' ||
name[1] != 0 )
{
fprintf(stderr,"%s: device name must be a digit\n", name);
return;
}
dev = (name[0] - '0');
regs.h.ah = 8; /* get param. */
regs.h.dl = dev | 0x80;
int86x(0x13,&regs,&regs,&sregs);
/* Are that many drives responding? */
if (regs.h.dl <= dev ) {
fprintf(stderr,"%s: drive not found\n", name);
return;
}
if (regs.x.cflag) {
fprintf(stderr,"%s: can't get disk parameters\n", name);
return;
}
*c = ((((int) regs.h.cl << 2) & 0x300) | regs.h.ch) + 1;
*h = regs.h.dh + 1;
*s = regs.h.cl & 0x3F;
}
int getFile(name, buf, len) /* read file into buffer */
char *name, *buf;
int len;
{ /* (open, read, close) */
int devfd, retval;
devfd = open(name, O_RDONLY|O_BINARY, 0);
if (devfd < 0) {
fprintf(stderr,"%s: can't open for reading\n", name);
return(devfd);
}
retval = read(devfd, buf, len);
if (retval < 0)
fprintf(stderr,"%s: read failed\n", name);
close(devfd);
return(retval);
}
int putFile(name, buf, len) /* write buffer to file */
char *name, *buf;
int len;
{ /* (open, write, close) */
int devfd, retval;
devfd = open(name,
O_WRONLY|O_CREAT|O_BINARY,
S_IREAD|S_IWRITE ); /* stupid DOS... */
if (devfd < 0) {
fprintf(stderr,"%s: can't open for writing\n", name);
return(devfd);
}
retval = write(devfd, buf, len);
if (retval < 0)
fprintf(stderr,"%s: write failed\n", name);
close(devfd);
return(retval);
}
int getBBlk(name, buf) /* read boot block into buffer */
char *name, *buf;
{ /* BIOS absolute disk read */
int dev;
union REGS regs;
struct SREGS sregs;
if (name[0] < '0' ||
name[0] > '9' ||
name[1] != 0 )
{
fprintf(stderr,"%s: device name must be a digit\n",name);
return(-1);
}
dev = (name[0] - '0');
segread(&sregs); /* get ds */
sregs.es = sregs.ds; /* buffer address */
regs.x.bx = (int) buf;
regs.h.ah = 2; /* read */
regs.h.al = 1; /* sector count */
regs.h.ch = 0; /* track */
regs.h.cl = 1; /* start sector */
regs.h.dh = 0; /* head */
regs.h.dl = dev|0x80; /* drive */
int86x(0x13,&regs,&regs,&sregs);
if (regs.x.cflag) {
fprintf(stderr,"%s: read failed\n", name);
return(-1);
}
return(SECSIZE);
}
int putBBlk(name, buf) /* write buffer to boot block */
char *name, *buf;
{ /* BIOS absolute disk write */
int dev;
union REGS regs;
struct SREGS sregs;
if (name[0] < '0' ||
name[0] > '9' ||
name[1] != 0 )
{
fprintf(stderr,"%s: device name must be a digit\n", name);
return(-1);
}
dev = (name[0] - '0');
segread(&sregs); /* get ds */
sregs.es = sregs.ds; /* buffer address */
regs.x.bx = (int) buf;
regs.h.ah = 3; /* write */
regs.h.al = 1; /* sector count */
regs.h.ch = 0; /* track */
regs.h.cl = 1; /* start sector */
regs.h.dh = 0; /* head */
regs.h.dl = dev|0x80; /* drive */
int86x(0x13,&regs,&regs,&sregs);
if (regs.x.cflag) {
fprintf(stderr,"%s: write failed\n",name);
return(-1);
}
return(SECSIZE);
}

Binary file not shown.

View File

@@ -0,0 +1,182 @@
/*
rawrite.c Write a binary image to a 360K diskette.
By Mark Becker
Usage:
MS-DOS prompt> RAWRITE
And follow the prompts.
History
-------
1.0 - Initial release
1.1 - Beta test (fixing bugs) 4/5/91
Some BIOS's don't like full-track writes.
1.101 - Last beta release. 4/8/91
Fixed BIOS full-track write by only
writing 3 sectors at a time.
1.2 - Final code and documentation clean-ups. 4/9/91
*/
#include <alloc.h>
#include <bios.h>
#include <ctype.h>
#include <dir.h>
#include <dos.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE (!FALSE)
#define SECTORSIZE 512
#define RESET 0
#define LAST 1
#define READ 2
#define WRITE 3
#define VERIFY 4
#define FORMAT 5
int done;
/*
Catch ^C and ^Break.
*/
int handler(void)
{
done = TRUE;
return(0);
}
void msg(char (*s))
{
fprintf(stderr, "%s\n", s);
_exit(1);
}
/*
Identify the error code with a real error message.
*/
void Error(int (status))
{
switch (status) {
case 0x00: msg("Operation Successful"); break;
case 0x01: msg("Bad command"); break;
case 0x02: msg("Address mark not found"); break;
case 0x03: msg("Attempt to write on write-protected disk"); break;
case 0x04: msg("Sector not found"); break;
case 0x05: msg("Reset failed (hard disk)"); break;
case 0x06: msg("Disk changed since last operation"); break;
case 0x07: msg("Drive parameter activity failed"); break;
case 0x08: msg("DMA overrun"); break;
case 0x09: msg("Attempt to DMA across 64K boundary"); break;
case 0x0A: msg("Bad sector detected"); break;
case 0x0B: msg("Bad track detected"); break;
case 0x0C: msg("Unsupported track"); break;
case 0x10: msg("Bad CRC/ECC on disk read"); break;
case 0x11: msg("CRC/ECC corrected data error"); break;
case 0x20: msg("Controller has failed"); break;
case 0x40: msg("Seek operation failed"); break;
case 0x80: msg("Attachment failed to respond"); break;
case 0xAA: msg("Drive not ready (hard disk only"); break;
case 0xBB: msg("Undefined error occurred (hard disk only)"); break;
case 0xCC: msg("Write fault occurred"); break;
case 0xE0: msg("Status error"); break;
case 0xFF: msg("Sense operation failed"); break;
}
_exit(1);
}
/*
Identify what kind of diskette is installed in the specified drive.
Return the number of sectors per track assumed as follows:
9 - 360 K and 720 K 5.25".
15 - 1.2 M HD 5.25".
18 - 1.44 M 3.5".
*/
int nsects(int (drive))
{
static int nsect[] = {18, 15, 9};
char *buffer;
int i, status;
/*
Read sector 1, head 0, track 0 to get the BIOS running.
*/
buffer = (char *)malloc(SECTORSIZE);
biosdisk(RESET, drive, 0, 0, 0, 0, buffer);
status = biosdisk(READ, drive, 0, 10, 1, 1, buffer);
if (status == 0x06) /* Door signal change? */
status = biosdisk(READ, drive, 0, 0, 1, 1, buffer);
for (i=0; i < sizeof(nsect)/sizeof(int); ++i) {
biosdisk(RESET, drive, 0, 0, 0, 0, buffer);
status = biosdisk(READ, drive, 0, 0, nsect[i], 1, buffer);
if (status == 0x06)
status = biosdisk(READ, drive, 0, 0, nsect[i], 1, buffer);
if (status == 0x00) break;
}
if (i == sizeof(nsect)/sizeof(int)) {
msg("Can't figure out how many sectors/track for this diskette.");
}
free(buffer);
return(nsect[i]);
}
void main(void)
{
char fname[MAXPATH];
char *buffer, *pbuf;
int count, fdin, drive, head, track, status, spt, buflength, ns;
puts("RaWrite 1.2 - Write disk file to raw floppy diskette\n");
ctrlbrk(handler);
printf("Enter source file name: ");
scanf("%s", fname);
_fmode = O_BINARY;
if ((fdin = open(fname, O_RDONLY)) <= 0) {
perror(fname);
exit(1);
}
printf("Enter destination drive: ");
scanf("%s", fname);
drive = fname[0];
drive = (islower(drive) ? toupper(drive) : drive) - 'A';
printf("Please insert a formatted diskette into ");
printf("drive %c: and press -ENTER- :", drive + 'A');
while (bioskey(1) == 0) ; /* Wait... */
if ((bioskey(0) & 0x7F) == 3) exit(1); /* Check for ^C */
putchar('\n');
done = FALSE;
/*
* Determine number of sectors per track and allocate buffers.
*/
spt = nsects(drive);
buflength = spt * SECTORSIZE;
buffer = (char *)malloc(buflength);
printf("Number of sectors per track for this disk is %d\n", spt);
printf("Writing image to drive %c:. Press ^C to abort.\n", drive+'A');
/*
* Start writing data to diskette until there is no more data to write.
*/
head = track = 0;
while ((count = read(fdin, buffer, buflength)) > 0 && !done) {
pbuf = buffer;
for (ns = 1; count > 0 && !done; ns+=3) {
printf("Track: %02d Head: %2d Sector: %2d\r", track, head, ns);
status = biosdisk(WRITE, drive, head, track, ns, 3, pbuf);
if (status != 0) Error(status);
count -= (3*SECTORSIZE);
pbuf += (3*SECTORSIZE);
}
if ((head = (head + 1) & 1) == 0) ++track;
}
if (eof(fdin)) {
printf("\nDone.\n");
biosdisk(2, drive, 0, 0, 1, 1, buffer); /* Retract head */
}
} /* end main */

View File

@@ -0,0 +1,86 @@
RaWrite 1.2
-----------
Purpose
-------
Write a disk image file to a 360K floppy disk.
Equipment/Software Requirements
-------------------------------
PC/XT/AT with a floppy disk drive capable of reading and writing a 360K
diskette.
This program uses generic low-level BIOS diskette read/write functions. It
should be portable to nearly every PC in existance. PS/2's should be able
to run RawWrite but this has not been tested.
CAVEAT
------
This program will write ANY disk file to a floppy, overwriting any previous
information that may have been present. If you wish to re-use a diskette
under MS-DOS thats been written to by RawWrite then the disk will need to be
reformatted; all MS-DOS specific information will have been erased.
How to Compile
--------------
TCC rawrite.c
The source code is specific to Borland International's Turbo C 2.01 and has
been tested in all memory models.
Usage
-----
C> RAWRITE
And follow the prompts. All arguments are case-insensitive.
A sample run is shown below. The disk file being written, in this example,
is named DEMODISK and the destination - where the image is being written -
is the B: drive.
This program may be aborted at any time by typing ^C.
Sample Run
----------
C> RAWRITE
RaWrite 1.2 - Write disk file to raw floppy diskette
Enter source file name: DEMODISK
Enter destination drive: B
Please insert a formatted 360K diskette into drive B: and press -ENTER- :
Writing image to drive B:
Errors
------
RaWrite attempts to determine if the diskette is a 360K, 720K, 1.2M, or
1.44M diskette by reading specific sectors. If the inserted diskette is not
one of the mentioned types, then RaWrite will abort with a short error
message.
Errors such as write protect, door open, bad disk, bad sector, etc. cause a
program abort with a short error message.
History
-------
1.0 - Initial release
1.1 - Beta test (fixing bugs) 4/5/91
Some BIOS's don't like full-track writes.
1.101 - Last beta release. 4/8/91
Fixed BIOS full-track write by only only
writing 3 sectors at a time.
1.2 - Final code and documentation clean-ups. 4/9/91

View File

@@ -0,0 +1,16 @@
These are the binaries which we believe will get Linux up on most x86
systems. We don't know much about Linux, tell us if we are wrong.
For full sources and other linux files ftp to tsx-11.mit.edu,
sub-directory pub/linux/.
The two subdirectories here are images/ and INSTALL/, see the file
README.tsx-11.mit.edu (here) for a description. The images/ directory
has a zip file with the other files in it (you can use "unzip -l
images.zip" to list the files in that zip here on World if you are a
login shell.)
-yfnsm

View File

@@ -0,0 +1,179 @@
-----------------------------------------------------------------------
Linux -- The free Minix like Un*x clone is here!
Yes, we have Linux 0.97! (the latest and greatest!)
-----------------------------------------------------------------------
Welcome to TSX-11's Linux FTP site!
Directory structure:
docs documentation (such as it is)
INSTALL contains various programs useful for getting
Linux up and running.
SCSI contains the SCSI patches from drew@cs.colorado.edu,
including a bootable .12 kernel for those with
seagate adaptors only.
images contains the initial boot disk and root disk images
binaries various binaries for Linux
(use the tar and compress programs found on the
root disk to unpack these)
sources sources to Linux, broken down by whether system
sources (including libc.a), sources to system
programs, sources to usr.bin, and library sources.
patches contains patches to Linux (typically, but not always
patches to the system sources, such as patches to
add new features to the kernel).
ports contains patches to make other programs compile on
a Linux system
mail-archive contains an archive of the Linux-Activsts mailing
list
info contains various useful informational files which
Linux hackers may find useful
TSX-11 does not yet have a mail server --- I'm working on it....
-----------------------------------------------------------------------
To upload stuff --- please use the directory /incoming. It is
world-writable, but not world-readable, so you (or anybody else) will
not be able to see stuff which you drop there until I move it to the
proper place the directory hierarchy.
Please send mail to ftp-linux@tsx-11.mit.edu after you leave something there,
so I can pick it up as soon as possible.
-----------------------------------------------------------------------
The email address for digests of alt.os.linux (soon comp.os.linux?) is
linux-activists@news-digests.mit.edu
Anything mailed to this address will be posted to the appropriate
newsgroup.
All administrative requests (subscriptions/unsubscriptions/etc) MUST
go to the administrative address:
linux-activists-request@news-digests.mit.edu
See below for what happens if you ignore this address :-)
-----------------------------------------------------------------------
Linux mailing list (is _MANUALLY_ kept) addresses:
For subscribing and unsubscribing:
linux-activists-request@niksula.hut.fi
For mailing real articles:
linux-activists@niksula.hut.fi
Please, do NOT send subscribe/unsubscribe mails to
linus-activist@niksula.hut.fi, or I and other people
will *flame* you, and you'll notice, how your mailbox
filled up ;-). You even might get dozens of copies
of netiquette from net users ...
How to find out, who's on the list ?
Just "telnet joker.cs.hut.fi 25" ('25' or 'smtp')
tell our smtp, you want to "vrfy linux-activists", then
you have the list of users. Say "quit" to quit.
-----------------------------------------------------------------------
current status can be obtained by using "finger torvalds@kruuna.helsinki.fi"
Here's a sample entry:
[kruuna.helsinki.fi]
Login name: torvalds In real life: Linus Benedict Torvalds
Directory: /home/kruuna/tkol/torvalds Shell: /bin/tcsh
Last login Wed Mar 18 23:28 on ttyp5 from klaava
New mail received Thu Mar 19 05:45:04 1992;
unread since Wed Mar 18 23:51:01 1992
Plan:
Free UNIX for the 386
The current version of linux is 0.95a: it was released March 17th, and
is pretty close to what 1.0 will be : it needs some testing, but should
be good enough to use for many things. 0.95a contains mainly bug-fixes
to 0.95.
NOTE! NOTE! NOTE! Plain 0.95 had problems with some harddisks that
worked ok under 0.12, as well as a few bad bugs. These have been
corrected (hopefully), but make sure you have the "a" version: the bugs
in plain 0.95 can crash your machine rather badly.
Linux can be gotten by anonymous ftp from 'nic.funet.fi' (128.214.6.100)
in the directory '/pub/OS/Linux'. This directory structure contains all
the linux OS- and library-sources, and enough binaries to get going. To
install linux you still need to know something about unices: it's
relatively straightforward to install, but the documentation sucks raw
eggs, and people with no previous unix experience are going to get very
confused.
Linux still requires an AT-compatible disk to be useful: there are
patches for a SCSI driver (currently ST-0[1|2]), but it hasn't made it
into the "official" kernel yet. (The patches are against the 0.12
version, but they should work with little changes on 0.95)
There are now a couple of other sites containing linux, as people have
had difficulties with connecting to nic. The sites are:
Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
directory /pub/msdos/replace
tsx-11.mit.edu (18.172.1.2):
directory /pub/linux
(and many additional sites: there are now sites in the uk, japan etc
that carry linux, but I have lost count)
There is also a mailing list set up 'Linux-activists@niksula.hut.fi'.
To join, mail a request to 'Linux-activists-request@niksula.hut.fi'.
It's no use mailing me: I have no actual contact with the mailing-list
(other than being on it, naturally).
For those of you able to read the alt.* newsgroups, there is also a
linux newsgroup available: alt.os.linux, which should hopefully become a
comp.* group when the votings etc are ready.
Mail me for more info:
Linus (torvalds@kruuna.Helsinki.FI)
0.95 contains these new things:
- ptrace (gdb is in beta-testing)
- VFS (at least a minimal stubs-version)
- bug-corrections (notably mm, but other bugs as well)
- better VC's (screen blanking, works on non-[EV]GA etc)
- init/login
- faster floppies
0.95a should correct these bugs in plain 0.95:
- floppy-reset gets called, and the machine may be unable to read
floppies on certain hardware.
- Some harddisks get read-errors (resulting in general protection errors
etc)
- console and tty-drivers have known bugs - sometimes weird output when
writing heavily to the screen.
- extended partitions don't work after all.
-----------------------------------------------------------------------

View File

@@ -0,0 +1,150 @@
CHANGES IN THE LINUX v0.97 ROOT DISKETTE
Jim Winstead Jr. - 4 August 1992
This file mostly contains info about the changes in the root diskette
from Linux v0.96 to Linux v0.97.
BUGS
'mount' is broken in strange ways, particularly in passing
options '-o whatever'. I'm working on this.
CHANGES
With the release of Linux v0.95a, the maintenance of the root diskette
has been assumed by Jim Winstead Jr. (jwinstea@jarthur.Claremont.EDU).
This continues with the release of the Linux 0.97 release diskette.
The changes between the Linux 0.97 and Linux 0.96 root diskettes are
detailed below, and the changes in earlier releases are summarized
after that:
- many small binaries were added, including:
cmp cut date env find head id install logname nice
nohup pathchk printenv printf sed setserial sort sum
tac tee tr tty uname uniq wall wc who whoami write yes
(Some of these may have been on previous root disks -
I don't have the motivation to double check that. In any
case, they are definitely on 0.97. :)
- ps, w, uptime, and related utilities were removed.
Because these programs rely very closely upon the
kernel being used, they can be outdated quite quickly.
- migrated mount/umount/swapon from /bin to /etc.
This conforms to common usage (only root can use these
programs), and current standards.
- moved 'rootdev' to /usr/bin and renamed to 'setroot'.
This reflects more common usage of the utility - it is no
longer needed for inserting the root device in /etc/mtab, but
it is still useful to change the root device of a kernel image.
- removed /lib/libhard.2.2.2 and moved /lib/libsoft.2.2.2 to
/lib/libm.2.2.2, instead of using a symlink.
- upgraded efdisk and renamed to fdisk.
efdisk was upgraded to v0.93, from Owen LeBlanc's MCC 0.96c
interim release, with some small changes from me to support the
-l flag, allowing it to completely replace fdisk.
- fixed compress to work with long filenames.
Previous versions of compress would refuse to compress files
with names longer than 12 characters - this was hardcoded in
the source the FSF makes available.
- brought device names up to standards.
Fixed some device names according to decisions made on
the Linux Standards discussion list, particularly
renaming /dev/lp* to /dev/par*, 'hard' /dev/fd*
devices, /dev/bm (bus mouse), and fixing the numbering
of /dev/ttys*.
- revised /etc/group.
/etc/group now contains only the 'standard' group names
discussed in the Linux Standards list. Of special note is the
renaming of the 'bin' group to 'obsolete'.
Using the 'bin' group as a means of identifying executables is
not recommended. That is what the executable bits are designed
to do.
- revised /etc/passed.
/etc/passwd was changed as a result of the new /etc/group, and
to eliminate unnecessary usernames - many groups were removed
because using uid != 0 for important files is a security hole
on NFS-mountable drives
- changes file permissions and ownerships.
This was done to reflect changes in /etc/group and /etc/passwd.
- fixed up the install script where it was broken.
All known major bugs were fixed. Particularly where /usr was
concerned.
- fixed the install documentation to refer to pax.
- minor gaffes from 0.96 fixed (/etc/getty linked with
shared libs, correct file ownerships, etc)
If you have questions, problems, or complaints about the root
diskette, either post to comp.os.linux, or send mail to me at
jwinstea@jarthur.Claremont.EDU.
If you have questions, problems, or complaints about the boot diskette
or the kernel itself, post to comp.os.linux or send mail to Linus
Torvalds at torvalds@cc.helsinki.fi.
Remember, the only stupid questions are the ones you don't ask.
SUMMARY
This section very briefly summarizes previous changes.
0.95a -> 0.96
- reintroduced GNU bash as /bin/sh
- replaced GNU tar (/bin/tar) with POSIX pax utility
- all-new and improved installation script
- split /etc/rc into /etc/rc and /etc/rc.local
- new mount/umount/swapon with auto-mounting - uses /etc/fstab
- recompiled all utilities with shared libraries (gcc 2.2.2)
- added /dev/MAKEDEV - device creation script
- all new /etc/termcap using "tc=con-unk" entries
FUTURE CHANGES
I'm already anticipating some changes for future releases, so here's
a sneak preview:
- the install script will be improved. The current one was
written rather rapidly, so there are parts of it I'm not
entirely happy with.
- I'd like to write an update script that will allow people who
have already installed Linux to update their binaries from the
latest root disk. The install script could serve as a base
for this, but is a little destructive at present. (It would
simply copy over old binaries, etc.)
- program to allow the 'intro' login to be more interactive, and
will also serve more general purposes (it will be a generic
curses-based file-selector with support for file descriptions).
- the documentation on disk will be cleaned up, and possibly
added to.
- fill in the gaps in the MAKEDEV script. (SCSI tapes, more pty
devices.)
- the release after the extended filesystem is added to the
Linux kernel, the root disk will use it. That means v0.98, if
things go according to current plans. This is to allow time
for bugs in the extended filesystem to filter out, and for the
new mkfs and fsck to stabilize. (For those that don't know,
the extended filesystem supports 4 terabyte partitions and long
filenames, and is currently in testing.)
Again, mail your questions, comments and suggestions about the root
diskette to me at jwinstea@jarthur.Claremont.EDU.

View File

@@ -0,0 +1,149 @@
CHANGES IN THE LINUX v0.97.1 ROOT DISKETTE
Jim Winstead Jr. - 16 August 1992
This file mostly contains info about the changes in the root diskette
from Linux v0.97 to Linux v0.97.1.
CHANGES
With the release of Linux v0.95a, the maintenance of the root diskette
has been assumed by Jim Winstead Jr. (jwinstea@jarthur.Claremont.EDU).
This continues with the release of the Linux 0.97.1 release diskette.
The changes between the Linux 0.97.1 and Linux 0.97 root diskettes are
detailed below, and the changes in earlier releases are summarized
after that:
- fixed mount.
A few hours after releasing 0.97, I figured out why
mount wasn't working correctly with the MS-DOS
filesystem. 'mount' now does things correctly, and
will even pass 'odd' mount options correctly (i.e. the
conv=something option for the MS-DOS fs). Thanks to
Werner Almesberger for providing smount, from which
most of my changes to Doug Quale's mount were taken.
- made passwd sgid system.
I forgot to last time, which made /etc/passwd belong to
whatever group the person who last changed their password
belonged to. Thanks to Scott Mace (emace@tenet.edu) for
spotting this one.
- fixed bug in /etc/termcap.
The 'is' and 'rs' strings had an extra colon in them,
and the k? strings were wrong. Special thanks to
Jaakko.Hyvatti@Helsinki.FI for pointing this out.
- fixed pax (some).
Pax was broken in a few spots, and I've been trying to
clean it up. In particular, it would give some false
errors because it would try to create some directories
twice. Duh. I'm also trying to bring it up to POSIX
compliance, since it's quite out of date.
- fixed problems with GNU fileutilities.
The GNU fileutilities (cp, du and ls in particular)
were making some bad assumptions about the blocksize
on filesystems. I think I've tracked that all down.
Also, fixed ls so it recognizes the dir and vdir
counterparts using argv[0] instead of seperate filenames.
I was also able to trim some size off a few utilities
due to functions available in libc.
- compiled GNU text utilities to use getopt/regex from libc.
I also fixed cat so you can use it with the various
options (like -v, etc). This saved over 30k. (Wow!)
- compiled GNU shell utilities to use getopt/regex from libc.
This saved another 30k. Wow again!
- compiled GNU tput to use termcap from shared libs.
A lot of the changes to be like this, don't they? :)
Saved about 4k here.
- compiled sed with -N.
Saved 6k. :)
- added creation of user account to /INSTALL/install.
The install script now asks for a username to create an
account for and sets it up. This should encourage not
using 'root' all the time.
If you have questions, problems, or complaints about the root
diskette, either post to comp.os.linux, or send mail to me at
jwinstea@jarthur.Claremont.EDU.
If you have questions, problems, or complaints about the boot diskette
or the kernel itself, post to comp.os.linux or send mail to Linus
Torvalds at torvalds@cc.helsinki.fi.
Remember, the only stupid questions are the ones you don't ask.
SUMMARY
This section very briefly summarizes previous changes.
0.96 -> 0.97
- many small binaries were added.
- ps, w, uptime, and related utilities were removed.
- migrated mount/umount/swapon from /bin to /etc.
- moved 'rootdev' to /usr/bin and renamed to 'setroot'.
- removed /lib/libhard.2.2.2 and moved /lib/libsoft.2.2.2 to
/lib/libm.2.2.2, instead of using a symlink.
- upgraded efdisk and renamed to fdisk.
- fixed compress to work with long filenames.
- brought device names up to standards.
- revised /etc/group.
- revised /etc/passed.
- changes file permissions and ownerships.
- fixed up the install script where it was broken.
- fixed the install documentation to refer to pax.
- minor gaffes from 0.96 fixed (/etc/getty linked with shared
libs, correct file ownerships, etc)
0.95a -> 0.96
- reintroduced GNU bash as /bin/sh
- replaced GNU tar (/bin/tar) with POSIX pax utility
- all-new and improved installation script
- split /etc/rc into /etc/rc and /etc/rc.local
- new mount/umount/swapon with auto-mounting - uses /etc/fstab
- recompiled all utilities with shared libraries (gcc 2.2.2)
- added /dev/MAKEDEV - device creation script
- all new /etc/termcap using "tc=con-unk" entries
FUTURE CHANGES
I'm already anticipating some changes for future releases, so here's
a sneak preview:
- the install script will be improved. The current one was
written rather rapidly, so there are parts of it I'm not
entirely happy with. Michael K. Johnson (johnsonm@stolaf.edu)
has said he is working on this and the update script (below).
- I'd like to write an update script that will allow people who
have already installed Linux to update their binaries from the
latest root disk. The install script could serve as a base
for this, but is a little destructive at present. (It would
simply copy over old binaries, etc.)
- program to allow the 'intro' login to be more interactive, and
will also serve more general purposes (it will be a generic
curses-based file-selector with support for file descriptions).
- the documentation on disk will be cleaned up, and possibly
added to.
- fill in the gaps in the MAKEDEV script. (SCSI tapes, more pty
devices.)
- the release after the extended filesystem is added to the
Linux kernel, the root disk will use it. That means v0.98, if
things go according to current plans. This is to allow time
for bugs in the extended filesystem to filter out, and for the
new mkfs and fsck to stabilize. (For those that don't know,
the extended filesystem supports 4 terabyte partitions and long
filenames, and is currently in testing.)
Again, mail your questions, comments and suggestions about the root
diskette to me at jwinstea@jarthur.Claremont.EDU.

Binary file not shown.

View File

@@ -0,0 +1,68 @@
RaWrite 1.3
------------
Disclaimer of Warrenty
----------------------
Users of this software must accept this disclaimer of warranty: "This
software is supplied AS IS. Mark Becker disclaims all warranties, expressed
or implied, including, without limitation, the warranties of merchantability
and of fitness for any purpose. Mark Becker assumes no liability for
damages, direct or consequential, which may result from the use of this
software."
Purpose
-------
Write a disk image file to a floppy disk.
Equipment/Software Requirements
-------------------------------
* PC/XT/AT or 100% compatible with at least 256K of RAM and a floppy disk
drive.
* MS-DOS version 3.21 or greater.
* A formatted diskette.
This program uses well-documented generic low-level DOS and BIOS functions.
It should run on nearly every PC in existance. PS/2's should be able to run
RaWrite but this has not been tested.
CAVEAT
------
This program will write ANY disk file to a floppy, overwriting any previous
information that may have been present. If you wish to re-use a diskette
that has been written to by RaWrite then that diskette will probably need to
be reformatted; all MS-DOS specific information will have been erased.
Usage
-----
C> RAWRITE
And follow the prompts. All arguments are case-insensitive.
If the source and destination drives are the same, RaWrite will ask the user
to swap diskettes as required. Rawrite allocates a large buffer in RAM to
reduce the number of disk swaps.
RaWrite may be aborted at any time by typing ^C or CTRL-Break.
Errors
------
RaWrite attempts to determine if the diskette is a 1.44M, 1.2M, 720K, or 360K
diskette by reading sectors 18, 15, and 9 in that order. If the inserted
diskette is not one of the these types, then RaWrite will abort with an error
message.
Errors such as write protect, door open, bad disk, bad sector, etc. cause a
program abort with a short error message.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

18
images/README Normal file
View File

@@ -0,0 +1,18 @@
The rootimage-0.11-for-orig or rootimage-0.11.Z can be used with the
orignal bootimage-0.11. That is the bootimage compiled without any
modification to the kernel source of linux 0.11.
Other bootimage-0.11 images must be used with the rootimage having
the same dating tag.The difference between rootimage-0.11.Z and
rootimage-0.1x-XXXXXX is they have different bash(sh).
rootimage-0.11.Z bash version 1.05, No job control.
rootimage-0.11-XXXXXX bash version 1.12, No job control.
rootimage-0.12.Z bash version 1.12, Has job control.
rootimage-0.12.XXXXXX bash version 1.12, Has job control.
Jiong Zhao (gohigh@sh163.net)
2004-03-23

182
images/Tools/rawrite.c Normal file
View File

@@ -0,0 +1,182 @@
/*
rawrite.c Write a binary image to a 360K diskette.
By Mark Becker
Usage:
MS-DOS prompt> RAWRITE
And follow the prompts.
History
-------
1.0 - Initial release
1.1 - Beta test (fixing bugs) 4/5/91
Some BIOS's don't like full-track writes.
1.101 - Last beta release. 4/8/91
Fixed BIOS full-track write by only
writing 3 sectors at a time.
1.2 - Final code and documentation clean-ups. 4/9/91
*/
#include <alloc.h>
#include <bios.h>
#include <ctype.h>
#include <dir.h>
#include <dos.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE (!FALSE)
#define SECTORSIZE 512
#define RESET 0
#define LAST 1
#define READ 2
#define WRITE 3
#define VERIFY 4
#define FORMAT 5
int done;
/*
Catch ^C and ^Break.
*/
int handler(void)
{
done = TRUE;
return(0);
}
void msg(char (*s))
{
fprintf(stderr, "%s\n", s);
_exit(1);
}
/*
Identify the error code with a real error message.
*/
void Error(int (status))
{
switch (status) {
case 0x00: msg("Operation Successful"); break;
case 0x01: msg("Bad command"); break;
case 0x02: msg("Address mark not found"); break;
case 0x03: msg("Attempt to write on write-protected disk"); break;
case 0x04: msg("Sector not found"); break;
case 0x05: msg("Reset failed (hard disk)"); break;
case 0x06: msg("Disk changed since last operation"); break;
case 0x07: msg("Drive parameter activity failed"); break;
case 0x08: msg("DMA overrun"); break;
case 0x09: msg("Attempt to DMA across 64K boundary"); break;
case 0x0A: msg("Bad sector detected"); break;
case 0x0B: msg("Bad track detected"); break;
case 0x0C: msg("Unsupported track"); break;
case 0x10: msg("Bad CRC/ECC on disk read"); break;
case 0x11: msg("CRC/ECC corrected data error"); break;
case 0x20: msg("Controller has failed"); break;
case 0x40: msg("Seek operation failed"); break;
case 0x80: msg("Attachment failed to respond"); break;
case 0xAA: msg("Drive not ready (hard disk only"); break;
case 0xBB: msg("Undefined error occurred (hard disk only)"); break;
case 0xCC: msg("Write fault occurred"); break;
case 0xE0: msg("Status error"); break;
case 0xFF: msg("Sense operation failed"); break;
}
_exit(1);
}
/*
Identify what kind of diskette is installed in the specified drive.
Return the number of sectors per track assumed as follows:
9 - 360 K and 720 K 5.25".
15 - 1.2 M HD 5.25".
18 - 1.44 M 3.5".
*/
int nsects(int (drive))
{
static int nsect[] = {18, 15, 9};
char *buffer;
int i, status;
/*
Read sector 1, head 0, track 0 to get the BIOS running.
*/
buffer = (char *)malloc(SECTORSIZE);
biosdisk(RESET, drive, 0, 0, 0, 0, buffer);
status = biosdisk(READ, drive, 0, 10, 1, 1, buffer);
if (status == 0x06) /* Door signal change? */
status = biosdisk(READ, drive, 0, 0, 1, 1, buffer);
for (i=0; i < sizeof(nsect)/sizeof(int); ++i) {
biosdisk(RESET, drive, 0, 0, 0, 0, buffer);
status = biosdisk(READ, drive, 0, 0, nsect[i], 1, buffer);
if (status == 0x06)
status = biosdisk(READ, drive, 0, 0, nsect[i], 1, buffer);
if (status == 0x00) break;
}
if (i == sizeof(nsect)/sizeof(int)) {
msg("Can't figure out how many sectors/track for this diskette.");
}
free(buffer);
return(nsect[i]);
}
void main(void)
{
char fname[MAXPATH];
char *buffer, *pbuf;
int count, fdin, drive, head, track, status, spt, buflength, ns;
puts("RaWrite 1.2 - Write disk file to raw floppy diskette\n");
ctrlbrk(handler);
printf("Enter source file name: ");
scanf("%s", fname);
_fmode = O_BINARY;
if ((fdin = open(fname, O_RDONLY)) <= 0) {
perror(fname);
exit(1);
}
printf("Enter destination drive: ");
scanf("%s", fname);
drive = fname[0];
drive = (islower(drive) ? toupper(drive) : drive) - 'A';
printf("Please insert a formatted diskette into ");
printf("drive %c: and press -ENTER- :", drive + 'A');
while (bioskey(1) == 0) ; /* Wait... */
if ((bioskey(0) & 0x7F) == 3) exit(1); /* Check for ^C */
putchar('\n');
done = FALSE;
/*
* Determine number of sectors per track and allocate buffers.
*/
spt = nsects(drive);
buflength = spt * SECTORSIZE;
buffer = (char *)malloc(buflength);
printf("Number of sectors per track for this disk is %d\n", spt);
printf("Writing image to drive %c:. Press ^C to abort.\n", drive+'A');
/*
* Start writing data to diskette until there is no more data to write.
*/
head = track = 0;
while ((count = read(fdin, buffer, buflength)) > 0 && !done) {
pbuf = buffer;
for (ns = 1; count > 0 && !done; ns+=3) {
printf("Track: %02d Head: %2d Sector: %2d\r", track, head, ns);
status = biosdisk(WRITE, drive, head, track, ns, 3, pbuf);
if (status != 0) Error(status);
count -= (3*SECTORSIZE);
pbuf += (3*SECTORSIZE);
}
if ((head = (head + 1) & 1) == 0) ++track;
}
if (eof(fdin)) {
printf("\nDone.\n");
biosdisk(2, drive, 0, 0, 1, 1, buffer); /* Retract head */
}
} /* end main */

86
images/Tools/rawrite.doc Normal file
View File

@@ -0,0 +1,86 @@
RaWrite 1.2
-----------
Purpose
-------
Write a disk image file to a 360K floppy disk.
Equipment/Software Requirements
-------------------------------
PC/XT/AT with a floppy disk drive capable of reading and writing a 360K
diskette.
This program uses generic low-level BIOS diskette read/write functions. It
should be portable to nearly every PC in existance. PS/2's should be able
to run RawWrite but this has not been tested.
CAVEAT
------
This program will write ANY disk file to a floppy, overwriting any previous
information that may have been present. If you wish to re-use a diskette
under MS-DOS thats been written to by RawWrite then the disk will need to be
reformatted; all MS-DOS specific information will have been erased.
How to Compile
--------------
TCC rawrite.c
The source code is specific to Borland International's Turbo C 2.01 and has
been tested in all memory models.
Usage
-----
C> RAWRITE
And follow the prompts. All arguments are case-insensitive.
A sample run is shown below. The disk file being written, in this example,
is named DEMODISK and the destination - where the image is being written -
is the B: drive.
This program may be aborted at any time by typing ^C.
Sample Run
----------
C> RAWRITE
RaWrite 1.2 - Write disk file to raw floppy diskette
Enter source file name: DEMODISK
Enter destination drive: B
Please insert a formatted 360K diskette into drive B: and press -ENTER- :
Writing image to drive B:
Errors
------
RaWrite attempts to determine if the diskette is a 360K, 720K, 1.2M, or
1.44M diskette by reading specific sectors. If the inserted diskette is not
one of the mentioned types, then RaWrite will abort with a short error
message.
Errors such as write protect, door open, bad disk, bad sector, etc. cause a
program abort with a short error message.
History
-------
1.0 - Initial release
1.1 - Beta test (fixing bugs) 4/5/91
Some BIOS's don't like full-track writes.
1.101 - Last beta release. 4/8/91
Fixed BIOS full-track write by only only
writing 3 sectors at a time.
1.2 - Final code and documentation clean-ups. 4/9/91

Binary file not shown.

Binary file not shown.

BIN
images/bootimage-0.95 Normal file

Binary file not shown.

BIN
images/bootroot-0.11 Normal file

Binary file not shown.

BIN
images/bootroot-0.11.zip Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.