add directory Linux-0.98

This commit is contained in:
gohigh
2024-02-19 00:21:16 -05:00
parent 265896c4ae
commit 56596ada90
13765 changed files with 3471432 additions and 0 deletions

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,500 @@
fg
mv Xconfig.microsoft{,-mouse}
rm *~
diff Xconfig{,.microsoft-mouse}
cp ~adam/Xconfig Xconfig.ET4000-1024x768
more Xconfig.ET4000-1024x768
sync
mv Xconfig.ET4000-1024x768 Xconfig.ET4000-1024x768.72MHz
mv Xconfig.ET4000-1024x768.72MHz Xconfig.72MHz-ET4000-1024x768
ls
sync
vi Xconfig
chmod +w Xconfig
vi Xconfig
vi /INSTALL/install
echo /etc/*.install
vi /INSTALL/install
pwd
cat /etc/passwd
sync
vi /INSTALL/install
vi /INSTALL/install
sync
vi /INSTALL/install
rm /usr/spool/install/partitioned
vi /INSTALL/install
vi /INSTALL/install
mkefs
pwd
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
man bash
jobs
fg
ojbs
jobs
vi /INSTALL/install
pwd
cat > /tmp/foo
chmod a+rx /tmp/foo
/tmp/foo
man bash
vi /tmp/foo
/tmp/foo
vi /tmp/foo
/tmp/foo
jobs
vi /INSTALL/install
vi /tmp/foo
/tmp/foo
cat /tmp/foo
man bash
jobs
vi /tmp/foo
/tmp/foo
vi /tmp/foo
/tmp/foo
vi /tmp/foo
ans='abc def'
set $ans
echo $1
echo $2
echo $@
echo $*
echo $@[1]
echo $@(2)
echo ${@:2}
echo $@[2]
echo $@
echo $*
man bash
echo $1
echo $2
shift
echo $1
echo $#
pwd
pwd
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
pwd
pwd
vi /INSTALL/install
pwd
cd /usr/src/linux/
cd ../usr.bin/efsprogs/
ls
vi mkefs.c
mkefs &
pwd
fg
jobs
cd
vi /INSTALL/install
vi /INSTALL/install
cd /bin
mv ../sbin/* .
rmdir ../sbin
rm ../usr/sbin
pwd
rmdir ../usr/sbin
pwd
vi .profiel
vi .profile
cd
vi .bashrc
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
mount -t ext /dev/hdb1 /mnt
umount /dev/hdb1
vi /INSTALL/install
vi /INSTALL/
vi /INSTALL/install
for new in ; do
echo bar
done
for new in x y ; do
echo bar
done
fg
goto crap
go to grap
label x
x:
echo $SHELL
vi /INSTALL/install
echo $?child
jobs
fg
vi /INSTALL/install
umount /dev/hdb1
vi /INSTALL/install
trap
man trap
man bash
pwd
vi /INSTALL/install
jobs
df
umount /dev/hdb1
umount /dev/hdb1
man mkdir
ls -gdl foo
mkdir -p foo/bar
ls -gdl foo
ls -gdl foo/bar
rm -rf foo
umask
pwd
vi /INSTALL/install
df
ls
echo
echo
pwd
pwd
pwd
df
mount -t ext /dev/hdb1 /mnt
cd /mnt
ls
mkdir -p /etc/lilo
cd /etc/lilo
mkdir -p /mnt/etc/lilo
pwd
tar cf - . ( cd /mnt/etc/lilo ; tar xf - ) &
tar cf - . | ( cd /mnt/etc/lilo ; tar xf - ) &
pwd
cd /mnt/etc/lilo/
ls
cd /
umount /dev/hdb1
vi /INSTALL/install
umount /dev/hdb1
umount /dev/hdb1
vi /INSTALL/install
df
pwd
cp -r . /usr/include
cd ..
pwd
make
cd boot
make clean
ls -gld *.S *.s
rm *.s
cd ..
make
make clean
vi Makefile
sync
d
df
make
vi Makefile
rm Image
make
ls -gdl system.tmp Image
suspend
ls /mnt
cd etc/lilo/
cat install
pwd
cd /mnt/etc
pwd
df
mount -t ext /dev/hdb1 /mnt
cd /mnt/etc/lilo/
cat install
ls -gdl /vmlinux
lilo -c -i /etc/lilo -b /dev/hdb1 /vmlinux
lilo -c -i /etc/lilo -b /dev/hdb1 /mnt/vmlinux
ls -gdl /mnt/vmlinux
cat /etc/lilo/install
jobs
vi /INSTALL/install
setroot
cd /usr/src
echo */*setro*
pwd
echo */*/*setro*
sync
pwd
pwd
cd /usr/src/linux
ls
make
which as86
ls -gdl /usr/bin/as86
df
umount /dev/hdb1
mount -t iso9660 /dev/cdrom /mnt
ls -gdl /mnt/usr/bin/as86
cmp /mnt/usr/bin/as86 /usr/bin/as86
umount /dev/cdrom
make
cd boot/
egrep NORMAL_VGA *.[ch]
ls
erep NORMAL_VGA *
egrep NORMAL_VGA *
more setup.S
pwd
more ../include/linux/config.h
!
vi /usr/include/linux/config.h
pwd
cd ..
pwd
cd include/
pwd
su
pwd
fg
jobs
emacs setroot.c &
man stat
make setroot
make
make setroot
make setroot
make setroot
mkdir /usr/src/bin/setroot
cp setroot.c /usr/src/bin/setroot
mv setroot /bin
egrep /vmlinux /INSTALL/install
cp /INSTALL/install ~adam
vi /INSTALL/install
egrep setroot /INSTALL/install
setroot
df
cd /mnt
ls -gdl vmlinux
setroot /dev/cdrom vmlinux
emacs /usr/src/bin/setroot/setroot.c
vi /INSTALL/install
cd /usr/src/bin
cd setroot/
ls
jobs
vi setroot.c
make setroot
cp setroot /bin/setroot
ls -gdl /bin/setroot
df
cd /mnt/
setroot /dev/cdrom vmlinux
ls -gdl /dev/cdrom
jobs
cd /usr/src/bin
cd setroot/
vi setroot.c
make setroot
./setroot /dev/cdrom /mnt/vmlinux
vi setroot.c
make setroot
./setroot /dev/cdrom /mnt/vmlinux
ls -gdl /dev/hda3
./setroot /dev/hda3 /mnt/vmlinux
jobs
vi setroot.c
make setroot
./setroot /dev/hda3 /mnt/vmlinux
ls -gdl /dev/hda3
jobs
vi setroot.c
make setroot
./setroot /dev/hda3 /mnt/vmlinux
ls -gdl /dev/hda3
vi setroot.c
make setroot
./setroot /dev/hda3 /mnt/vmlinux
jobs
vi setroot.c
make setroot
./setroot /dev/hda3 /mnt/vmlinux
vi setroot.c
make setroot
./setroot /dev/hda3 /mnt/vmlinux
./setroot /dev/cdrom /mnt/vmlinux
vi setroot.c
make setroot
cp setroot /bin/setroot
sync
rm setroot
pwd
cd /mnt/vmlinux
pwd
cd /mnt
rm vmlinux
cp /usr/src/linux/Image vmlinux
setroot /dev/cdrom vmlinux
setroot /dev/cdrom /hda2
setroot /dev/hda2 vmlinux
ls -gdl /dev/hda2
pwd
pushd /usr/src/bin/setroot/
vi setroot.c
make setroot
mv setroot /bin/
sycn
sync
pwd
vi /INSTALL/install
df
umount /dev/hdb1
pwd
cd
ls -gld /etc/passwd*
cd /
find / -name '*.o' -type f -print
cd /usr/src
find . -name '*.o' -type f -exec rm -f {} \;
df
vi /INSTALL/install
pwd
du -s /usr/src
df
sync
vi /INSTALL/install
cd /tmp
touch -f a b c
cat > exclude
tar cf - . | tar tf -
tar cfX - exclude . | tar tf -
cat /INSTALL/exclude
sync
df
umount /dev/hda3
umount /dev/hda3
df
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
vi /INSTALL/install
df
sync
cat /etc/issue.install
wc -l /etc/issue
wc -l /etc/issue.install
vi /etc/issue.install
wc -l /etc/issue*
mv /etc/issue /etc/issue-
cp /etc/issue.install /etc/issue
rm /etc/issue~
vi /etc/issue.install
cp /etc/issue.install /etc/issue
vi /etc/issue.install
cp /etc/issue.install /etc/issue
ls -gdl /etc/issue*
mv /etc/issue- /etc/issue
sync
df
umount /dev/hdb3
umount /dev/hda3
mkdir -p /usr/spool/install
ls -gdl /usr/spool
ls -gld /usr/spool/install/
jobs
sync
df
cd /mnt
ls
cd usr/src
ls
cd ..
ls
pwd
cd src
ls
ls linux
ls
ls -gdl /bin/ps
ls -gdl /dev/*mem
ls
ls usr.bin
ls
ps aux | egrep tar
kill 87 88
cd /mnt
mount -t /dev/hdb1 /mnt
mount -t ext /dev/hdb1 /mnt
df
ls -gdl /mnt
cd /
mount -t ext /dev/hdb1 /mnt
cd /mnt
ls
cd etc
cat fstab
egrep fstab /INSTALL/install
vi /INSTALL/install
pwd
cd /etc
cp fstab fstab.install
vi fstab.install
cat /mnt/etc/rc
more /mnt/etc/rc
more /mnt/etc/rc.local
vi /INSTALL/install
jobs
df
cd /
umount /dev/hdb1
mount -t ext /dev/hdb1 /mnt
cd /mnt
ls
cd etc
cd lilo
more install
pwd
cd ~adam/lilo/lilo/doc
ls
emacs doc.tex &
egrep blocks /INSTALL/install
blocks
numblocks
countblocks
blocks /dev/hda1
df
emacs /INSTALL/install
cat install
pwd
cd /mnt
cd etc/lilo/
cat install
lilo -c -i /mnt/etc/lilo/boot.b -b /dev/hda /mnt/vmlinux
sync
reboot
vi /INSTALL/install
ps aux | egrep tar
stop 45
kill -STOP 45
df
mount /dev/hda3
umount /dev/hda3
kill 45 46
umount /dev/hda3
vi /INSTALL/install
df
sync
df
umount /dev/hda3
umount /dev/hda3
df
egrep lilo /INSTALL/install
pwd
vi /INSTALL/install
ls
df
umount /dev/hda3
sync
df
umount /dev/hda3
sync

View File

@@ -0,0 +1,27 @@
# stty dec crt
#fi
HOSTNAME=`hostname`
#PS1='$HOSTNAME[!]$PWD> '
PS2='rest?> '
export HOSTNAME PS1 PS2
CDPATH=:$HOME
ENV=$HOME/.bashrc
FCEDIT=/usr/bin/vi
#export HISTFILE=$HOME/.bash_history
#export HISTSIZE=25
#export HZ=100
MAIL=/usr/spool/mail/$USER
MBOX=$HOME/mail/mbox
PATH=$HOME/bin:/bin:/usr/bin:/etc:/usr/etc
VISUAL=/usr/bin/vi
#export TERMCAP=$HOME/etc/termcap
umask 022
trap clear 0
export CDPATH ENV FCEDIT
export MBOX SHELL VISUAL
export TERM MAIL PATH
if [ -f ~/.bashrc ]; then source ~/.bashrc; fi

View File

@@ -0,0 +1,11 @@
#bash environment setup
#LESS=-MM
#alias more=less
ignoreeof=0
export TERM PS1 ignoreeof
alias which='type -path'
alias ls='ls -AF'
PS1=`hostname`'# '
PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/TeX/bin

View File

@@ -0,0 +1,58 @@
(setq text-mode-hook 'turn-on-auto-fill)
(setq make-backup-files nil)
(put 'eval-expression 'disabled nil)
(setq auto-mode-alist (mapcar 'purecopy
'(("\\.c$" . c-mode)
("\\.h$" . c-mode)
("\\.tex$" . TeX-mode)
("\\.txi$" . Texinfo-mode)
("\\.el$" . emacs-lisp-mode)
("\\.a$" . c-mode))))
(defvar cursor-map-2 (make-keymap)
"for ESC-[")
(fset 'Cursor-Map-2 cursor-map-2)
(define-key esc-map "[" 'Cursor-Map-2)
(define-key esc-map "[A" 'previous-line)
(define-key esc-map "[B" 'next-line)
(define-key esc-map "[C" 'forward-char)
(define-key esc-map "[D" 'backward-char)
(define-key esc-map "[H" 'beginning-of-line)
(define-key esc-map "[Y" 'end-of-line)
(define-key esc-map "[5^" 'scroll-down)
(define-key esc-map "[6^" 'scroll-up)
(define-key esc-map "[[A" 'help-for-help)
(define-key esc-map "[[B" 'byte-compile-file)
(define-key esc-map "[[C" 'isearch-forward)
(define-key esc-map "[[D" 'query-replace-regexp)
(define-key esc-map "[[E" 'eval-defun)
(define-key esc-map "[[F" 'eval-current-buffer)
(define-key esc-map "[[G" 'buffer-menu)
(define-key esc-map "[[H" 'global-set-key)
(define-key esc-map "[[I" 'save-buffer)
(define-key esc-map "[[J" 'save-buffers-kill-emacs)
(define-key esc-map "[2^" 'set-mark-command)
(define-key esc-map "[3^" 'delete-char)
(setq load-path (cons (expand-file-name "PATH_FOR_AUC-TEX") load-path))
(autoload 'tex-mode "auc-tex" "Automatic select TeX or LaTeX mode" t)
(autoload 'plain-tex-mode "auc-tex" "Mode for Plain TeX" t)
(autoload 'latex-mode "auc-tex" "Mode for LaTeX" t)
(autoload 'LaTeX-math-mode "tex-math" "Math mode for TeX." t)
(autoload 'outline-minor-mode "outline-m" "Minor Outline Mode." t)
(defun Ctl-C-prefix ()
Ctl-C-keymap)
(setq Ctl-C-keymap (make-keymap))
(global-set-key "\C-c" (Ctl-C-prefix))
(define-key Ctl-C-keymap "m" 'LaTeX-math-mode)
(define-key Ctl-C-keymap "o" 'outline-minor-mode)
(make-variable-buffer-local 'outline-prefix-char)
(setq-default outline-prefix-char "\C-l")
(make-variable-buffer-local 'outline-regexp)
(setq-default outline-regexp "[*\l]+")
(make-variable-buffer-local 'outline-level-function)
(setq-default outline-level-function 'outline-level-default)

View File

@@ -0,0 +1,5 @@
set line /dev/ttys2
set file type binary
set file name literal
set case off
conn

View File

@@ -0,0 +1,6 @@
TERM=con80x25
export TERM
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi

View File

@@ -0,0 +1,3 @@
XIO: fatal IO error 32 (Broken pipe) on X server ":0.0"
after 361 requests (359 known processed) with 0 events remaining.
The connection was probably broken by a server shutdown or KillClient.

View File

@@ -0,0 +1,16 @@
README - 0.97 Root Filesystem
Jim Winstead Jr. - 4 August 1992
This root disk is in many ways a bug fix to the 0.96 version - no
significant changes. Maybe I should charge $50 for it and call it a
major new release - it worked for Microsoft and Windows 3.1. :)
You should be careful to read all the documentation on the disk. To
do otherwise could result in an endless number of problems.
Unfortunately, this disk is not very well suited to updating an
existing Linux system. This will be addressed in future releases. If
you have suggestions on how this should be done, please send mail to
the address below.
jwinstea@jarthur.Claremont.EDU

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,479 @@
SUBJECT
This file documents fdisk 0.92 - the version on the root disk is
0.96, plus some other small modifications. The documentation
should be quite close, however.
fdisk 0.93 was written by A.V. LeBlanc (A.V.LeBlanc@mcc.ac.uk)
modifications for -l made by Jim Winstead Jr.
(jwinstea@jarthur.claremont.edu)
TABLE OF CONTENTS:
WARNINGS
Introduction
Disks and how they are described
Dividing up your disk
Running fdisk
Deleting and adding partitions
Active flags and system types
Extra commands for experts
Messages, errors, and warnings
WARNINGS:
In general, you should not use this 'fdisk' program to create
partitions for other operating systems, only for Linux.
Dr. DOS 5.0 and 6.0 has been reported to have problems cooperating
with Linux, and with this version of fdisk in particular. This fdisk
sets the system type to hexadecimal 81. Dr. DOS seems to confuse
this with hexadecimal 1, a DOS code. If you use Dr. DOS, use the
fdisk command 't' to change the system code of any Linux partitions
to some number less than hexadecimal 80; I suggest 41 and 42 for
the moment.
PARTITIONING a hard disk may DESTROY data which is on that disk
if you are not careful. Go slowly, write down a description of
what you started out with, and always verify before you write.
See the explanations below for more more information.
INTRODUCTION
In this document we look at the utility 'fdisk', and we try to cover
enough of its general background to help anyone use it. 'fdisk' is
Linux's partition table editor.
DISKS AND HOW THEY ARE DESCRIBED
A typical disk consists physically of one or more circular objects
called 'platters', which rotate about a central axis. Devices
called 'heads' move to specified places on the disk surface to
read or write information. There is typically one head on each side
of every platter, and all of these heads are attached to a comb-like
controller arm which moves all of them at the same time, either
closer to the centre of the disk, or closer to the outer edge.
Suppose the arm is in one position, putting an area of the disk
surface within reach of one or another of the heads. This total
area, everything that is accessible without moving the arm, is
called a 'cylinder'. A cylinder is a barrel-shaped cross section
of a disk, consisting of a circular strip from each side of each
platter. Each of these strips is the part of a cylinder that one
head can read or write without moving, and it is called a 'track'.
Each track is divided into a number of pie-shaped slices called
'sectors', which are the smallest parts of the disk which can
be read or written at a time. The sectors on one disk are usually
all the same size.
(If you want to be accurate, there are not always two heads to
every platter, there are some disks which do not have the same
amount of data in every cylinder, and there may be disks which
do not have the same amount of data in every sector. I hope you
are not dealing with such disks, for both our sakes.)
The numbers which describe the 'geometry' of a disk are
(a) the number of cylinders it contains,
(b) the number of tracks per cylinder, which is the number of heads,
(c) the number of sectors per track, and
(d) the size of each sector.
Some of these numbers will vary, but a typical PC disk might have
about 1000 cylinders, about half a dozen heads, and 15 or 20 sectors
per track, with each sector containing 512 bytes or characters;
such a disk contains 40 to 60 megabytes of data. A 'double density'
floppy disk contains 40 cylinders, with 2 heads (2 tracks per cylinder),
and with 9 sectors per track; such a disk contains 360 kilobytes, or
360 * 1024 characters. A 'high density' 3.5 inch floppy contains
80 cylinders, with 2 heads and 18 sectors per track, or 1.44 megabytes,
or 1440 * 1024 characters.
The exact size of a track or cylinder in bytes varies from one disk
to another. This fdisk for Linux, at least in its present form,
deals mainly with 'sectors', which are 512 bytes each. fdisk also
reports partition sizes in 'blocks' of 1024 bytes, or 2 sectors, since
you need the size in blocks in order to make a file system using mkfs.
A block is the smallest amount of space which can be set aside for
a file in the current file system.
An operating system, such as Linux or MS-DOS or OS/2, may use a disk
in any way that it wishes, but if two operating systems share the
same disk, they must agree on who owns what, or else one will
interfere with the other (that is, by damaging the other's files).
A 'partition' is a section of a hard disk which is handled as a unit
by all operating systems which can access the disk. The standard way
to define partitions (for the moment) is the 'partition table',
a list of information which is stored in parts of the disk that don't
belong to any of the systems using the disk. The beginning of the
partition table is stored in the disk's primary boot sector, and the
rest is stored in a chain of sectors scattered throughout the disk.
The first sector on the disk is called the 'primary boot block' or
'primary boot sector' because (1) it comes first, before other,
similar sectors; (2) it tells where the other, similar sectors are
found, so that it is logically 'prior' to them; and (3) it usually
contains code which is executed when the system boots up. This
sector contains a table describing at most four partitions. These
areas are called 'primary partitions'.
The partition table in the primary boot sector may also describe
at most one 'extended partition'. This is a large area of the disk,
usually containing all the space which is not in any primary partition.
Within this space we can set aside other areas which are called
'logical partitions', because they look almost exactly like
primary partitions. In fact, the main difference between them is
that we can boot from primary partitions, while we cannot boot from
logical partitions. This happens because the address of primary
partitions is in a fixed place, whereas the address of secondary
partitions is not, and so we require a more complicated process to
discover it, one which is too difficult for most primary boot programs.
DIVIDING UP YOUR DISK
It is a good idea to plan ahead before you start creating partitions
on your disk. If you set aside a partition for some purpose, it is
not easy to change its size: you've got to copy all the data off of
the partition, whether to floppies, to another partition, to another
hard disk, or somewhere else; then you must edit the table which
describes this partition, so changing its size; then you must reboot
and initialise the new partition, formatting it, for example,
under MS-DOS, or running 'mkfs' under Linux; finally you can copy
all of the data back. It is possible, if you have several partitions,
to copy data back and forth between them while you change their sizes,
but this is a bit risky and time consuming. It is better to plan well
what you will need, since it is hard to change it afterwards.
Many people with large disks and recent versions of MS-DOS have their
entire file system on one large partition. They always ask, 'Isn't
there any way I can reformat my disk without copying everything off?'
There is no way to do it using standard DOS utilities, and there is
no truly safe way to do it using commercial software, because if you
make a mistake, you will lose the entire contents of your disk.
So if you are going to back up your disk anyway, you might as well
copy the data back safely.
MS-DOS and Linux both allow you to access several partitions on a
single disk; on MS-DOS these are treated as if they were separate
disks or drives, and under Linux they are treated as different
'devices'. You can have up to 60 partitions on a single disk,
at least as far as Linux is concerned; in practice you will rarely
want so many. The maximum size of a Linux file system on a single
partition is presently 64 megabytes. You may, in other words,
have all of your Linux files in a single partition, or you may
have two, three, or more Linux file systems, and similarly with
MS-DOS. If you have several small partitions, you run much less
risk of losing all your files if your disk gets corrupted. On the
other hand, you may run out of space on a small partition more easily.
Under MS-DOS, you must refer to each partition by a separate drive
letter, but all partitions are automatically accessible. Under Linux
only the root partition is automatically accessible, but once we
'mount' another partition, it is indistinguishable from the rest of
the file system. Disks are usually mounted by a command in one of
the system startup files, /etc/rc, so that you need not worry about
having to do it yourself whenever you boot the system.
Linux requires at least one partition, which is the 'root' of the
file system. You may prefer to have a separate partition for /usr,
which contains most of the executable files, or for /home, which
contains most of your private files. You may also wish to set aside
a partition to use for swap space, depending on the amount of memory
your PC has. You will certainly need swap space if you have less
than 4 megabytes of RAM and wish to compile anything substantial.
You can reserve swap space in a file, but you need a partition big
enough to hold it, and this will probably be less efficient than
having a partition devoted to swap.
If you wish to play with Linux, without compiling C programs or using
any large packages (like Emacs, TeX, or the X window system), you need
4 to 5 megabytes of disk space, plus 2 megabytes of RAM. If you install
the C and C++ compilers, you will need 8 to 10 megabytes of disk space,
plus at least 4 megabytes of RAM: you can compile with 2 megabytes of
RAM plus some swap space, but performance will be poor. Also, remember
that /tmp, which many programs (compilers and editors) use for scratch
files: you'll need to have a couple of free megabytes on the partition
containing this directory. No matter how much space you have, it is
never enough.
Are you going to boot Linux up from the hard disk, or will you boot
from a floppy? If you boot Linux from a hard disk, then the root
of the file system must be one of the four primary partitions. If you
have an extended partition with logical partitions in it, you can have
only three primary partitions containing data.
RUNNING fdisk
Every operating system, whether MS-DOS, OS/2, or Linux, should provide
its own utility for editing hard disk partition tables. At least four
of these utilities have been called 'fdisk', for 'Fixed DISK setup
program', where 'fixed' means 'not removable'. I believe the first
program named fdisk came from Microsoft in about 1985; before that time
disks were too small to divide into separate sections.
Every operating system has its own peculiarities. Normally you should
set up a partition for the use of one operating system by using its
own fdisk program. Do not use the Linux fdisk to create partitions for
MS-DOS or for any system besides Linux. Otherwise you may have problems.
An fdisk program performs two functions: it reports how the disk is
configured, and it changes that configuration by adding or deleting
partitions. Most fdisks can also change other information in partition
tables.
This fdisk for Linux operates on one hard disk at a time. If you give
the command
fdisk
it reports on, and is able to change, /dev/hda, the first hard disk.
To look at or change the second hard disk, /dev/hdb, give the command
fdisk /dev/hdb
To look at or change the first SCSI disk, give the command
fdisk /dev/sda
efdisk responds by printing a list of partitions n the selected drive,
and asks for a command:
Command (m for help): _
Each fdisk command consists of a single letter, which must be followed
by <RETURN> before it is obeyed. Upper and lower case are not
distinguished. Anything you type after the first character is ignored.
Give the command 'm', and you should see this menu:
Command action
a toggle a bootable flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
p print the partition table
q quit without saving changes
t change a partition's system id
v verify the partition table
w write table to disk and exit
x extra functionality
The simplest commands are Print, Verify, and Quit. On a small disk, the
Print command might produce a display like this one:
Disk /dev/hda: 5 heads, 17 sectors, 977 cylinders
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 17 20059 10021+ 1 DOS 12-bit FAT
/dev/hda2 71060 71060 83044 5992+ 5 Extended
/dev/hda3 * 20060 20060 71059 25500 81 Linux/MINIX
/dev/hda5 71061 71061 79559 4249+ 82 Linux swap
/dev/hda6 80002 80018 83044 1734 1 DOS 12-bit FAT
There are 5 partitions reported; /dev/hda4 does not appear because it is
not allocated. Partitions 1 and 3 are flagged as bootable. Note that
the start of data in both DOS partitions is 16 sectors after the
beginning of the partition: this is one reason why you should use DOS's
own fdisk to create DOS partitions. The size of each partition is reported
in 1 kilobyte blocks; hence the primary Linux partition, partition 3, is
25 1/2 megabytes in size. The '+' after three of the sizes warns that
these partitions contain an odd number of sectors: Linux normally allocates
filespace in 1 kilobyte blocks, so the extra sector in partition 5 is
wasted. Id numbers are reported in hexadecimal and explained in English.
The Verify command is useful because
(1) It warns you if anything is wrong. ALWAYS give a Verify command
before writing any changes to disk. See the section on Messages,
Errors, and Warnings.
(2) It reports how many unallocated sectors there are on the disk.
The Quit command is also useful. fdisk does not actually change any
data on your disk unless you give a Write command. If you are unhappy
about any changes you may have made, give the Quit command, and your
disk will remain as it was before you ran fdisk. You can also interrupt
fdisk with CTRL-C.
DELETING AND ADDING PARTITIONS
Deleting a partition is simple. Give the Delete command. fdisk asks:
Partition number (1-6): _
Once you get this far, you must either delete a partition or interrupt
the program with CTRL-C (or whatever your current interrupt character is).
Note:
(1) You may delete a nonexistent partition. You will get a warning
message.
(2) You may delete an extended partition. This has the side effect
of deleting all partitions greater than or equal to 5.
(3) You may delete a logical partition. In that case, all partitions
above it are renumbered at once. For example, if you delete
partition 5, then partition 6 becomes known as partition 5, and
partition 7 as partition 6.
Adding a partition is just a bit more complicated. Give the New command.
fdisk allows you to
(1) create a primary partition, if there is a free slot in the
primary partition table;
(2) create an extended partition if there is a free slot in the
primary partition table, and if there is no extended partition;
(3) create a logical partition if an extended partition exists.
If more than one of these actions is possible, you will be asked to
select Primary, Extended, or Logical, depending on what is currently
permissible. Before you create a primary or an extended partition,
you are asked what slot it is to have in the table (1-4).
You may not add a primary or an extended partition if the selected slot
in the primary partition table is already occupied: in that case you
simply return to the main menu. You are not allowed to add a new
primary partition unless there are sectors available outside of the
extended partition. You are not allowed to add a new logical partition
unless there are sectors available inside the extended partition.
If space is available, you are prompted for the first sector:
First sector (20060-71059): _
The limits are the lowest and the highest free sectors available in
the appropriate part of the disk. Not all numbers in this range are
necessarily available: they may fall inside an existing partition.
If you select a sector which is already in use, you are told off
and prompted again for the first sector. After selecting the
first sector, you are prompted again:
Last sector (20060-71059): _
The limits are the sector you have chosen as the first sector, and the
highest available sector which is legitimate as the other boundary of
the partition. In other words, all numbers in the given range are
legitimate, unlike those in the first sector range.
Adding or deleting partitions has no effect unless you subsequently
give the Write command. Please remember to give the Verify command
first, just before giving the Write command: this is a safety
precaution. After giving the Write command, you will see this
message:
The partition table has been altered.
Please reboot before doing anything else.
Here are some important things to note:
(1) Before you reboot, you MAY run fdisk again, either to manage another
disk, or to make additional changes to the same disk, or just to
check that the changes have been made as you expected.
(2) NEVER run any of the programs mkfs, mkswap, mount, or swapon before
you reboot. It is dangerous to run any programs, but these in
particular may cause serious damage to any data on your disk,
including the partition tables themselves.
ACTIVE FLAGS AND SYSTEM TYPES
The active flag is a bit in the partition table entry which marks a
partition as bootable. This is important to some primary boot
sector programs, which will not boot from an unflagged partition.
Other such programs do not allow more than one partition to be flagged.
Some, like shoelace, ignore the flags completely. I prefer to flag
all bootable partitions as active so that they stand out on the
menu shoelace displays. fdisk prints a star after the name of a
partition's device file if its active flag is set.
The Active command changes, or toggles, a partitions active flag.
Give the Active command, and select a partition by number. If it
was marked inactive, it will be flagged as active; if it was
flagged as active, it will be marked inactive. You may not set
the active flag on an extended partition, but you may set it on
a logical partition, though the meaning of such a flag is
by no means clear.
The Type command changes the ID number which describes what type
a partition is. fdisk currently recognises 24 system ID's, in the
sense that it prints a string for each of them, but it allows you
to change any system ID to any other, with the following exceptions:
you may not change any partition to or from the type Extended, and
you may not change a partition whose type is Empty (0) to any other
type. You may, however, change the type of any data partition to
0, which is equivalent to deleting it.
The new system ID or type code is a hexadecimal number. There are
two ways of listing the numbers which fdisk recognises: use the
List command, which prints the list, or use the Type command, which,
when it prompts you for the code, says
Hex code (type L to list codes): _
where the upper case 'L' is used for clarity. The codes printed are
1 DOS 12-bit FAT 7 OS/2 HPFS 51 Novell? 81 Linux/MINIX
2 XENIX 8 AIX 52 CP/M? 82 Linux swap
3 Old XENIX 9 AIX bootable 63 386/IX 93 Amoeba
4 DOS 16-bit <32mb a OPUS? 64 Novell 94 Amoeba BBT
5 Extended 10 OPUS? 75 PCIX db CP/M
6 DOS 16-b >=32mb 40 Venix 80 Old MINIX ff BBT
Some of these numbers are a trifle uncertain. By default (for the
moment) fdisk uses a type of 81, the type used by the present
MINIX fdisk. When our new file system is introduced, I shall
change the default to a new value. The number 81 in any case gives
problems to Dr. DOS 5.0 and 6.0; if you use this software, change the
81 to any other value (except 0, 5, 80, or 85).
The value of 82 for Linux swap partitions is my own invention, and
is intended to give some recognisable distinctiveness to the
partitions when the values are displayed in hexadecimal, as they
are by shoelace.
New active flags and new system type codes are not written to the
disk until you exit from fdisk with the Write command, as described
above, in the section on deleting and adding partitions.
EXTRA COMMANDS FOR EXPERTS
The eXtra command 'x' puts fdisk into 'expert' mode, in which a
slightly different set of commands is available. The Active, Delete,
List, New, Type, Verify, and 'eXpert' commands are not available in
expert mode. The commands Write and Quit are available as in
ordinary mode, the Print command is available, but produces output
in a slightly different format, and of course the Menu command prints
the expert menu. There are several new commands.
(1) The Return command brings you back to the main menu.
(2) The Extended command prints the list of table entries which
point to other tables. Ordinary users do not need this
information. The data is shown as it is stored. The same
format is used for the expert Print command.
(3) The dangerous Begin command allows you to move the start of
data in a partition away from its beginning. I believe
shoelace has difficulties with partitions changed in this
way. But other systems create partitions with this format,
and it is sometimes useful to be able to reproduce it.
(4) The slightly dangerous Cylinders command allows you to change
the available number of cylinders. This will allow you to end
a partition at the end of a cylinder, if you wish.
(5) The extremely dangerous Heads and Sectors commands allow you
to change the number of heads and sectors. It should not be
necessary to use these commands, but I understand that there
are disks whose geometry generic Linux is unable to determine,
so I have provided the ability to cope with such cases.
WARNING: If you set either of these numbers to a false value,
you may lose all data on your disk.
Always, after giving any of the commands Begin, Cylinder, Heads, or
Sectors, you should Return to the main menu and give the Verify
command.

View File

@@ -0,0 +1,124 @@
INSTALL NOTES FOR LINUX v0.97
Jim Winstead Jr. - 4 August 1992
This file contains basic instructions for installing Linux v0.97.
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.97 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.97 root disk requires the 0.96b or later kernel, although
the 0.97 kernel is strongly recommended. A bootable image of this
kernel should be available where you got the image for the 0.97
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.97 boot disk with the Linux v0.97 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
has been released that supports 4 terabyte (!) partitions,
and extended filenames. The root disk does not contain
utilities to use this extended filesystem, however, because
the filesystem is still consider alpha code.
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 pax and compress.
(Simple instructions: Download the file to DOS, use rawrite to write
the tar file to diskette. Use 'dd if=/dev/fd[01] | uncompress | pax
-rv' to read the file from floppy, where /dev/fd0 is your first
floppy drive (A: under DOS), and /dev/fd1 is your second floppy drive
(B: under DOS).
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 CORRUPTED 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,2 @@
usr/src
mnt

View File

@@ -0,0 +1,479 @@
#! /bin/sh -
# Install v0.97 - getting better!
install=`basename $0`
partitioned=/usr/spool/install/partitioned
default_root=/dev/hda1
set_default_root=
function prtc {
echo
echo -n [ press return to continue ]
read
}
clear
echo "Welcome to the Linux v0.97 installation script."
# skip this junk if the hard drive has been partitioned
if [ ! -e $partitioned ]; then
cat <<!!
This script will guide you through installing Linux on your hard
disk. Doing so will require allocating a partition on your hard
disk, making a filesystem on that partition, and installing the
binaries from this disk on to that partition. You will also have the
option of making a swap partition, and a /var partition.
When you are prompted for a response to a question, the default will
appear within square brackets.
!!
echo -n "Do you wish to continue (y/n)? [y]: "
read ans
if [ .$ans = .n -o .$ans = .N ]; then
echo
echo Okay, goodbye.
exit 1
fi
cat <<!!
The first step in installing Linux involves creating partitions on your
hard drive(s). To do this, you need to edit your hard disk(s)
partition table using 'fdisk'.
!!
prtc
clear
cat <<!!
If you are not installing /usr/src, you will need at least 70 megabytes
for your root partition. If you are installing /usr/src, you will need
at least 176 megabytes. If you are not creating a separate /var partition,
then you should add approximately another 5 megabytes to these minimum
requirements so that you'll have space for /tmp.
If you want to be able to boot Linux from your hard disk, don't forget
to mark the root partition as active with the "a" command in fdisk.
Also note that you can ignore the warnings claiming that the partition
is too big for Linux to use (which is false, because we're using the
extended file system) or that you have an odd number of sectors (which
only means that you're wasting 512 bytes of your multimegabyte disk).
You must specify the hard drive to partition. For standard hard disk,
drive 1 is specified by /dev/hda, and drive 2 by /dev/hdb. SCSI disk
drives drives follow a similar nameing scheme: /dev/sda, /dev/sdb, and
so on. When you are done partitioning your hard disk, type 'done' at
the prompt. To skip the partitioning step (e.g., you are installing
over an old Linux installation, or have already done this step), type
'skip'. To abort this procedure completely, type 'abort' at the prompt.
!!
loop=true
while [ $loop = true ]; do
echo -n "Drive to partition (/dev/hda|/dev/hdb|done|skip|abort): "
read ans
if [ .$ans = .done -o .$ans = .skip ]; then
loop=false
elif [ .$ans = .abort ]; then
echo "Process aborted."
exit 1
elif [ $ans ]; then
fdisk $ans
else
echo Sorry, there is no default.
fi
done
if [ .$ans = .done ]; then
clear
cat <<!!
You must now reboot your computer so Linux can reread the partition
tables.
To continue the installation, login as 'install' again, and select
'skip' when you are again prompted to partition the disk.
!!
prtc
touch $partitioned
sync
reboot
fi
if [ .$ans = .skip ]; then
touch $partitioned
fi
fi #endif bit about partitioning
clear
cat <<!!
We now return to the installation process after having partitioned
the disk.
The next step in installing Linux is to make filesystems on the
partition(s) you created.
Linux knows about the following partitions:
!!
showdisk -q /dev/hd
showdisk -q /dev/sd
echo
prtc
cat <<!!
The following prompt accepts four commands:
mkefs -c /dev/hd* - make a filesystem of
or specified size on the
mkefs -c /dev/sd* specified partition.
list /dev/hd
or - list the partitions again.
list /dev/sd
done - done with this step
abort - abort out of this script
!!
loop=true
while [ $loop = true ]; do
echo
echo -n "Action (mkefs|list|done|abort): "
read ans
set $ans
if [ $1 ]; then
if [ .$1 = .list ]; then
echo
showdisk $2
elif [ .$1 = .done ]; then
loop=false
elif [ .$1 = .abort ]; then
echo
echo Process aborted.
exit 1
elif [ .$1 = .mkefs ]; then
echo
if ( $* ) && [ ! $set_default_root ] ; then
until [ $# = 1 ] ; do
shift
done
default_root=$1
set_default_root=1
fi
else
echo "unsupported action."
fi
else
echo
echo "Sorry, there is no default action."
fi
done
cat <<!!
Now we're ready to mount the new partition(s), and actually
start copying Linux to your system.
However, since I'm not very smart, I don't have the slightest idea
what partitions I'm supposed to use, so you'll have to tell me.
Please answer the following questions carefully:
(For a reminder of the partitions available, type 'list' at any of the
prompts. If you don't wish to specify a partition, select 'none'. )
!!
# root partition
loop=true
while [ $loop = true ]; do
echo
echo -n "Root partition [$default_root]: "
read ans
if [ $ans ]; then
if [ $ans = none ]; then
echo
echo "You must specify a root partition."
elif [ $ans = list ]; then
echo
showdisk -q /dev/hd
showdisk -q /dev/sd
prtc
elif [ $ans = abort ]; then
echo Process aborted.
exit 1
elif [ ! -b $ans ]; then
echo
echo $ans is not a block device.
else
root=$ans
loop=false
fi
else
root=$default_root
loop=false
fi
done
root_disk=${root%%[0-9]}
primary_disk=${root_disk%%[a-h]}
# /var partition
loop=true
while [ $loop = true ]; do
echo
echo -n "/var partition [none]: "
read ans
if [ $ans ]; then
if [ $ans = none ]; then
var=
loop=false
elif [ $ans = list ]; then
echo
showdisk -q /dev/hd
showdisk -q /dev/sd
prtc
elif [ $ans = $root ]; then
echo
echo "You have already selected $ans as your root partition."
elif [ $ans = abort ]; then
echo Process aborted.
exit 1
elif [ ! -b $ans ]; then
echo
echo $ans is not a block device.
else
var=$ans
loop=false
fi
else
var=
loop=false
fi
done
# swap partition
loop=true
while [ $loop = true ]; do
echo
echo -n "swap partition [none]: "
read ans
if [ $ans ]; then
if [ $ans = none ]; then
swap=
loop=false
elif [ $ans = list ]; then
echo
showdisk -q /dev/hd
showdisk -q /dev/sd
prtc
elif [ $ans = $root ]; then
echo
echo "You have already selected $ans as your root partition."
elif [ $ans = $var ]; then
echo
echo "You have already selected $ans as your /var partition."
elif [ $ans = abort ]; then
echo Process aborted.
exit 1
elif [ ! -b $ans ]; then
echo
echo $ans is not a block device.
else
swap=$ans
loop=false
fi
else
swap=
loop=false
fi
done
if [ $swap ] ; then
echo "Preparing swap partition..."
mkswap -c $swap `blocks $swap`
fi
echo "Mounting root partition..."
if [ ! -d /mnt ] ; then
mkdir /mnt
fi
if ! mount -t ext $root /mnt && ! mount $root /mnt ; then
echo
echo "Could not mount the root file system $root. Giving up."
echo
prtc
exit
fi
if [ $var ]; then
echo "Mounting /var partition..."
if [ ! -d /mnt/var ]; then
mkdir /mnt/var
fi
mount $var /mnt/var
fi
cat <<!!
Now we are ready to being installing the actual Linux binaries
(programs) on your hard disk. This will be done automatically, and
without regard to anything that may currently be on those partitions.
(This means if you are upgrading from a previous version of Linux, it
is possible that a number of old, incorrect binaries may be left
behind, and that any 'customized' binaries you have installed on top
of the standard binaries may be overwritten.)
!!
echo -n "[ press return to continue, and type abort to stop here ]"
read $ans
if [ .$ans = .abort ]; then
echo
echo "Aborting installation."
umount $root
umount $var
exit 1
fi
echo
echo "Installing files..."
( cd / ; tar cfX - /INSTALL/exclude . ) | ( cd /mnt ; umask 0 ; tar xpfv - )
mkdir -p /mnt/mnt /mnt/usr/src
( cd /mnt/etc; for new in *.install; do mv -fv $new `basename $new .install`; done )
echo
echo -n "Do you want to install /usr/src (106 megabytes) right now (y/n)? [n]: "
read ans
if [ .$ans = .y -o .$ans = .Y ]; then
echo -n "Installing /usr/src..."
( cd / ; tar cf - usr/src ) | ( cd /mnt ; umask 0 ; tar xfv - )
echo "installation of /usr/src complete."
fi
echo
echo -n "What would you like to name your system? [linux]: "
read arg
if [ ! $arg ]; then
name=linux
else
name=$arg
fi
echo
echo Generating /etc/rc.local...
cat >/mnt/etc/rc.local <<!!
hostname $name
setterm -blank 10
!!
echo
echo Generating /etc/fstab...
echo $root / ext defaults >> /mnt/etc/fstab
if [ $var ]; then
echo $var /var ext defaults >> /mnt/etc/fstab
fi
if [ $swap ]; then
echo $swap none swap sw >> /mnt/etc/fstab
fi
echo Configuring kernel...
cp /usr/src/linux/Image /mnt/vmlinux
setroot $root /mnt/vmlinux
lilo -c -i /mnt/etc/lilo/boot.b -b $root /mnt/vmlinux
echo '#!/bin/sh' > /mnt/etc/lilo/install
echo lilo -c -i /etc/lilo/boot.b -b $root \$\* /vmlinux >> /mnt/etc/lilo/install
chmod u+rwx,go+rx,go-w /mnt/etc/lilo/install
cat > /dev/null <<!!
The kernel image lives in the file "/vmlinux" on your root partition.
If you ever change /vmlinux, you MUST RUN THE SHELL SCRIPT
/etc/lilo/install before rebooting or halting your system. OTHERWISE,
YOUR SYSTEM MAY NOT BE ABLE TO REBOOT FROM DISK. You might want
to have a look at /etc/lilo/install to see the commands that are
being executed to make a kernel image boot from your hard disk.
The following question exists for the benefit of people who have
another operating system coexisting with Linux and want that other
operating system to control the boot process. Unless you fall into
that category, you want the Linux boot loader (LILO) to control the
hard disk boot process (i.e., install itself in the master boot
record), and you should should answer in the affirmative to the
following question.
!!
echo -n "Should the Linux boot loader control the boot process (y/n)? [y]: "
read ans
if [ .$ans != .n -o .$ans != .N ]; then
lilo -c -i /mnt/etc/lilo/boot.b -b ${primary_disk}a /mnt/vmlinux
echo lilo -c -i /etc/lilo/boot.b -b ${primary_disk}a \$\* /vmlinux >> /mnt/etc/lilo/install
fi
rm -f $partitioned
sync
umount $root
if [ $var ] ; then
umount $var
fi
echo
echo "You should now have a useable filesystem on your disk."
echo
prtc
clear
cat <<!!
You should probably write down the following information, in case have
trouble rebooting your hard disk. If you are unable to boot from your
hard disk, reboot from the CDROM and the system floppy, mount your
root partition (e.g., with the command "mount -t ext $root /mnt"), and
then try one or both of the following.
1. Make a boot floppy by doing the following
mount -t ext $root /mnt
umount /dev/fd0
<--- REPLACE THE YGGDRASIL SYSTEM DISKETTE
<--- IN THE FLOPPY DRIVE WITH A BLANK
<--- FORMATTED DISKETTE AT THIS POINT
dd if=/mnt/vmlinux of=/dev/fd0
You will then have a floppy disk that will boot to your root
partition (you can remove the floppy after booting, since it isn't
used as a mounted file system).
2. Take a look at the /etc/lilo/install shell script to see
if the Linux boot information is somehow screwed up.
!!
prtc
clear
cat <<!!
That completes the installation. If you want to try booting your
system from the hard disk, shut down the system (log in as root,
issue the "halt" command, and wait for the message that it's okay to
turn the power off), remove the floppy disk if there is one in the
drive and reset the computer.
Good luck!
!!
prtc
# clean up
exit 0

View File

@@ -0,0 +1,45 @@
#! /bin/sh -
# Intro v0.97 - system for viewing introductory-type files
intro=`basename $0`
cat <<!!
Welcome to Linux v0.97. This program will allow you to view the
various documentation files on this disk, which will help guide you
through the process of installing Linux on your computer.
To access the various files, just type the name at the prompt. To get
a listing of the files available, type '?'.
To get out of this system, type 'quit' at the prompt.
!!
echo Available files:
ls /INSTALL/docs
echo quit
while [ 1 ]; do
echo
echo -n "Choice (? for options): "
read ans
if [ $ans ]; then
if [ $ans = \? ]; then
echo
ls /INSTALL/docs
echo quit
elif [ $ans = quit ]; then
echo
exit 0
elif [ -e /INSTALL/docs/$ans ]; then
echo
more /INSTALL/docs/$ans
else
echo
echo "Sorry, invalid command."
fi
fi
done
exit 1

BIN
Linux-0.98/Yggdrasil-0.98.3/bin/[ Executable file

Binary file not shown.

View File

@@ -0,0 +1,74 @@
#! /bin/sh
#
# $ADM/adduser -- add a user, creating directories and stuff
#
# usage: adduser name [options]
# options are:
# -p password (not encrypted if it starts with '*')
# -u userid (numeric or '-')
# -g groupid (numeric or symbolic)
# -n real name (gecos field)
# -d home directory (checked iff it exists)
# -s login shell (must exist and be executable)
#
# Written by Steven Robbins
#
MAIL_DIR=/usr/spool/mail
# Set up the defaults
#
PW_USER=$1
PW_PASS=$PW_USER
PW_UID="-"
PW_GID="user"
PW_GCOS=$PW_USER
PW_DIR="/home/"$PW_USER
PW_SHELL="/bin/sh"
# Deal with overriding options
#
shift
badcase=0
while getopts "p:u:g:n:d:s:" OPT; do
case $OPT in
p) PW_PASS=$OPTARG;;
u) PW_UID=$OPTARG;;
g) PW_GID=$OPTARG;;
n) PW_GCOS=$OPTARG;;
d) PW_DIR=$OPTARG;;
s) PW_SHELL=$OPTARG;;
?) badcase=1
esac
done
if [ $badcase -eq 1 ]; then exit 1; fi
# Now, put the entry into /etc/passwd, and do all the other admin chores
#
PWENT="$PW_USER $PW_PASS $PW_UID $PW_GID \"$PW_GCOS\" $PW_DIR $PW_SHELL"
MAIL_FILE=$MAIL_DIR/$PW_USER
if eval mkpwent $PWENT; then
#
# Setup the home directory, and related things
#
mkdir $PW_DIR
mkdir $PW_DIR/bin
touch $MAIL_FILE
chmod 600 $MAIL_FILE
cp $ADM/dot/bashrc $PW_DIR/.bashrc
cp $ADM/dot/bash_logout $PW_DIR/.bash_logout
chown -R $PW_USER:$PW_GID $PW_DIR $MAIL_FILE
cat <<-!G!R!O!K! | mail $PW_USER
Welcome, $PW_GCOS!
You have been given a default password.
Please change it now using the command 'passwd' from the shell prompt.
The Management
!G!R!O!K!
fi

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.

Binary file not shown.

BIN
Linux-0.98/Yggdrasil-0.98.3/bin/d Executable 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.

View File

@@ -0,0 +1,2 @@
#!/bin/sh
echo $*

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,2 @@
#!/bin/sh
exit 1

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,29 @@
#!/bin/sh
# groups -- print the groups a user is in
# Copyright (C) 1991 Free Software Foundation, Inc.
# 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, 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.
# Written by David MacKenzie <djm@gnu.ai.mit.edu>.
PATH=/bin/bin:$PATH
if [ $# -eq 0 ]; then
id -Gn
else
for name in "$@"; do
echo $name : `id -Gn $name`
done
fi

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.

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.

Some files were not shown because too many files have changed in this diff Show More