add directory Minix
This commit is contained in:
610
Minix/tutor.asc
Normal file
610
Minix/tutor.asc
Normal file
@@ -0,0 +1,610 @@
|
||||
TUTORIAL FOR INSTALLING MINIX-386
|
||||
|
||||
Modified 12/3/90: jwn
|
||||
|
||||
This is meant to be a step-by-step tutorial on moving from
|
||||
standard Minix 1.5.10 to Bruce Evans's modification which allows the
|
||||
full use of the Intel 386 CPU. I'm going to refer to the modified
|
||||
system from here on out as "Minix-386", but it should be clearly
|
||||
understood that we are merely talking about standard Minix, with the
|
||||
modifications written by Bruce.
|
||||
|
||||
I'm also going to make certain assumptions regarding the
|
||||
audience for such a tutorial. These assumptions are as follows:
|
||||
|
||||
1. Access to the Internet, and capability of transferring
|
||||
files via ftp.
|
||||
|
||||
2. A 386 system, with a hard-disk and at least a 1.2 meg
|
||||
floppy drive. Minix 1.5.10 should be already installed
|
||||
on the hard-disk.
|
||||
|
||||
3. Some means of transferring binary files from Internet
|
||||
to the Minix system. In my case, I use PC-NFS, and can
|
||||
ftp from DOS and then use DOSREAD from Minix. But just
|
||||
whatever works for you should be ok. Just remember that
|
||||
these files are BINARY, so when using things such as ftp,
|
||||
dosread and kermit, be sure and set the binary option.
|
||||
|
||||
4. Familiarity with such standard programs as ftp, patch, make,
|
||||
dosread, crc, etc. I'll try and make comments from time to
|
||||
time which may be helpful, but I am not going to really get
|
||||
down to basics. You most likely want to hold off on going to
|
||||
an experimental system such as Minix-386 if you are not at
|
||||
least at that level. (On the other hand, there's nothing like
|
||||
jumping in the water to learn to swim, and if someone gives
|
||||
it the old college try anyway, don't hesitate to send me some
|
||||
e-mail if you have a problem, even if it is really basic). I
|
||||
strongly recommend the excellent tutorial which Glen Overby
|
||||
wrote, and which is available from plains.nodak.edu. I do not
|
||||
remember the exact name, but it is something like Glen0.tute.tar.
|
||||
|
||||
Before starting this, I recommend that you back up your Minix system
|
||||
if you have not already done so. Although nothing that I am going to tell
|
||||
you *should* mess up your hard disk....always remember Murphy's law!
|
||||
|
||||
Get a good 1.2 meg floppy disk, format it, and then make a file
|
||||
system on it. (mkfs /dev/at0 1200).
|
||||
|
||||
|
||||
------------------------------------------------------------------
|
||||
|
||||
Step 1. ftp to an archive. I recommend plains.nodak.edu [134.129.111.64]
|
||||
if you're in the US, but there are probably other good ones as
|
||||
well. The following is going to assume plains.nodak.edu.
|
||||
|
||||
Step 2. Change to directory pub/Minix/oz.
|
||||
|
||||
Step 3. Set mode to binary and ftp the following files:
|
||||
|
||||
mx386_1.1.t.Z
|
||||
mx386_1.1.01.Z
|
||||
bcc.tar.Z
|
||||
bccbin16.tar.Z
|
||||
bccbin32.tar.Z
|
||||
bcclib.tar.Z
|
||||
shoelace-1.0a.tar.Z
|
||||
|
||||
Note: There are other interesting files in pub/Minix/oz, but
|
||||
I recommend you stick with these. (NOTE: At the time this tutorial
|
||||
was originally written, there was a problem with cppmake at Minix
|
||||
1.5.10. Since that time, cppmake has been re-released to the net
|
||||
at the 1.5.10 level. Unfortunately, I have not yet had a chance to
|
||||
check it out, so I'm not going to change the tutorial yet. But I
|
||||
probably will on the next iteration).
|
||||
|
||||
mx386_1.1.t.Z is a compressed, tar file of all of the
|
||||
material necessary to get Minix-386 running.
|
||||
|
||||
mx386_1.1.01.Z is a compressed ASCII file (not a tar
|
||||
file) which contains a bug fix necessary for mx386_1.1.t.Z.
|
||||
|
||||
bcc.tar.Z is a compressed tar file of the source
|
||||
file for bcc (which we won't use, but I recommend getting it anyway,
|
||||
just in case). This file also contains bcc.doc and bcc.bugs. These
|
||||
are not needed immediately, but should be read before doing anything
|
||||
with the source (bcc.c).
|
||||
|
||||
bccbin16.tar.Z is a compressed tar file containing binaries
|
||||
for the version of the compiler that runs under standard Minix 1.5.10.
|
||||
|
||||
bccbin32.tar.Z is a compressed tar file containing binaries
|
||||
for the version of the compiler that runs under Minix-386.
|
||||
|
||||
bcclib.tar.Z are all the library source files necessary
|
||||
to support the compiler.
|
||||
|
||||
shoelace-1.0a.tar.Z is a collection of files necessary to
|
||||
utilize what has been called "a preliminary boot program". It has
|
||||
very good documentation, and is probably a good thing to use. In
|
||||
this document, however, I am just going to use it to make a floppy
|
||||
that will boot up your 32-bit system because I cannot for the life
|
||||
of me make a boot disk the regular way that works. If you can, I
|
||||
urge you to post the necessary information :-) To make matters
|
||||
even worse, the first time I compiled the system, I DID make a good
|
||||
boot disk...but I can't duplicate it. Shoelace is better, anyway.
|
||||
|
||||
NOTE: It may seem a little confusing that there are two
|
||||
compilers, which seem to be alike, but there is a good explanation.
|
||||
Either of the compilers will produce either 16-bit or 32-bit object
|
||||
files (depending on whether they get a -0 argument or a -3 argument).
|
||||
However, the present Minix system only runs in the 16 bit mode. So
|
||||
therefore, you have to have a compiler which also runs in the 16 bit
|
||||
mode. Use it to produce 32-bit object files, and then after you have
|
||||
a 32-bit version of Minix, you can use the 32-bit compiler.
|
||||
|
||||
Now set up a Minix directory called /usr/oz, and move all of
|
||||
the ftp'd files to Minix, using DOSREAD or whatever other mechanism you
|
||||
might have. (If you have a Unix machine, such as a Sun or whatever,
|
||||
you might want to uncompress and untar there, and just move the files
|
||||
over to Minix. If you do that, you have to make the appropriate
|
||||
adjustments to the following steps).
|
||||
|
||||
Step 4. Uncompress all files:
|
||||
|
||||
compress -d mx386_1.1.t.Z # produce a tar file
|
||||
compress -d mx386_1.1.01.Z # produce an ASCII message
|
||||
...etc.
|
||||
|
||||
NOTE: Most of the tar files, when untarred, will make their
|
||||
own subdirectory. However, Shoelace does not do this, so you have
|
||||
to manually make a shoelace directory (/usr/oz/shoelace), move the
|
||||
.tar file to it, and untar it there.
|
||||
|
||||
Step 5. Untar mx386_1.1.t (tar xf mx386_1.1.t). This will make
|
||||
a subdirectory called mx386_1.1, which contains the following:
|
||||
|
||||
README1.1 # read this!!
|
||||
bin0 # a directory - 16 bit compiler
|
||||
bin3 # another directory - 32 bit compiler
|
||||
fs # another directory - fs material
|
||||
kernel # another directory - kernel stuff
|
||||
mm # another directory - mm stuff
|
||||
tools # another directory - tools stuff
|
||||
mx386_1.1.crc # crc listing of mx386 package
|
||||
runtime.crc # crc listing of things needed
|
||||
|
||||
Lets rename the subdirectory ("mv mx386_1.1 mx386"), since
|
||||
it is easier to work with that short name :-)
|
||||
|
||||
Also, at this point, stop, get a beer (or a cup of coffee)
|
||||
and carefully read the README1.1 file. It tells you just about
|
||||
everything that is in this tutorial. So use it as a reference
|
||||
guide.
|
||||
|
||||
Step 6. Untar mx386_1.1.01, and use a text editor, such as elle,
|
||||
to remove the top material, so that you can run it through the
|
||||
shell (i.e., remove everything up to the line that says "/bin/sh").
|
||||
Then run it through the shell ("/bin/sh mx386_1.1.01").
|
||||
|
||||
Step 7. This will give you a .crc and a .cdif file. Move both of
|
||||
them to the /usr/oz/mx386/kernel directory and run patch against klib386.x
|
||||
with the .cdif file (that is: "patch klib386.x klib386.x.cdif") to
|
||||
produce an updated klib386.x file. Check the new crc against the
|
||||
one given in the .crc file.
|
||||
|
||||
Step 8. Mount your 1.2 meg floppy - let us say on user. (That
|
||||
is, do a /etc/mount /dev/at0 /user, assuming that you have
|
||||
your 1.2 meg drive as drive 0)
|
||||
|
||||
AT THIS POINT, I AM GOING TO ASSUME THAT YOU HAVE A
|
||||
DIRECTORY CALLED /USR/OZ/MX386, AND THAT THE MATERIAL WHICH CAME
|
||||
FROM THE FILE MX386 FILES IS IN IT. I AM GOING TO ALSO ASSUME THAT
|
||||
YOU HAVE A DIRECTORY CALLED /USR/OZ/BCC, AND THAT THE MATERIAL WHICH
|
||||
CAME FROM THE BCC FILES IS IN IT. THE /USR/OZ/BCC DIRECTORY LOOKS
|
||||
LIKE THIS:
|
||||
|
||||
bcc - a directory, which came from bcc.tar.Z
|
||||
bccbin16 - a directory, which came from bccbin16.tar.Z
|
||||
bccbin32 - a directory, which came from bccbin32.tar.Z
|
||||
bcclib - a directory, which came from bcclib.tar.Z
|
||||
|
||||
|
||||
Step 9. Here we will make the directory structure on /user which will be
|
||||
needed as the root when you boot up your 32-bit system.
|
||||
|
||||
|
||||
cd /user # (mounted above, on at0)
|
||||
mkdir usr # /usr for Minix-386
|
||||
|
||||
cd / # copy root stuff to new partition
|
||||
cpdir -s dev /user/dev
|
||||
cpdir -ms etc /user/etc
|
||||
cd /user/etc
|
||||
rm mount umount update # ruthlessly root out 16-bit binaries
|
||||
|
||||
Note: Edit /user/etc/rc so that it does not try and mount stuff.
|
||||
Just comment out the part that mounts /usr. Your /usr directory will be
|
||||
on the floppy when you boot it up later. In fact, I recommend going
|
||||
through /user/etc/rc and commenting out everything which is not absolutely
|
||||
essential.
|
||||
|
||||
Now, set up root for compiling stuff. You don't want to have your
|
||||
root in RAM for this. I presume you are mounting a disk partition as
|
||||
root. If not, you will have to change all the paths "/local/..." in
|
||||
bcc.c to something else, perhaps "/usr/local/...", and recompile bcc.
|
||||
|
||||
cd /
|
||||
mkdir local
|
||||
|
||||
cd /usr/oz/bcc
|
||||
cpdir -ms bccbin16 /local/bin # Move 16-bit compiler
|
||||
cpdir -ms bccbin32 /local/bin3 # and the 32-bit compiler
|
||||
|
||||
|
||||
Step 10. Now you need to go through and apply Bruce's changes to the
|
||||
standard 1.5.10 material. ("cpdir -ms" is recommended by Bruce).
|
||||
|
||||
cd /usr/oz/mx386
|
||||
cpdir -ms bin0 /local/bin # 16-bit compiler stuff
|
||||
cpdir -ms bin3 /local/bin3 # 32-bit compiler stuff
|
||||
cpdir -ms fs /usr/src/fs # mods for fs
|
||||
cpdir -ms kernel /usr/src/kernel # mods for kernel
|
||||
cpdir -ms mm /usr/src/mm # mods for mm
|
||||
cpdir -ms tools /usr/src/tools # mods for tools
|
||||
|
||||
Step 11. Now apply Bruce's changes to /usr include and
|
||||
to the standard library routines.
|
||||
|
||||
cd /usr/oz/bcc/lib/fix1.5.10 # move Bruce's changes
|
||||
cp include.cdif /usr/include # to include
|
||||
|
||||
cp ansi.cdif /usr/src/lib/ansi # to ansi
|
||||
cp other.cdif /usr/src/lib/other # to other
|
||||
cp posix.cdif /usr/src/lib/posix # and to posix
|
||||
|
||||
cd /usr/include # now apply the changes
|
||||
patch < include.cdif
|
||||
|
||||
cd /usr/src/lib/ansi
|
||||
patch < ansi.cdif
|
||||
|
||||
cd /usr/src/lib/other
|
||||
patch < other.cdif
|
||||
|
||||
cd /usr/src/lib/posix
|
||||
patch < posix.cdif
|
||||
|
||||
Also apply the necessary changes to tools
|
||||
|
||||
cd /usr/src/tools
|
||||
patch < tools.cdif
|
||||
|
||||
Step 12. Copy the additional bcc library stuff.
|
||||
|
||||
cd /usr/oz/bcc/lib
|
||||
cpdir -ms bcc /usr/src/lib/bcc
|
||||
|
||||
Step 13. At this point, you should use /usr/oz/mx386/runtime.crc and
|
||||
check the crc's against your files.
|
||||
|
||||
NOTE: What Bruce refers to as "/local/bin0" will be your "/local/bin",
|
||||
and what he refers to as "/local/bin" will be your "/local/bin3". That
|
||||
is, he is using the bin3 directory for bin, and you want to use the bin0
|
||||
directory as bin.
|
||||
|
||||
You will notice that he does not give a crc for EVERYTHING which
|
||||
is on your file system, but only for the things that he has either
|
||||
added or put there. So, for example, in crc checking /usr/include,
|
||||
he gives under "/usr/include" the routines which were patched, such as
|
||||
fcntl.h, lib.h, etc. The stuff shown as "/usr/include/dist" is merely
|
||||
for comparison with standard 1.5.10, and should not necessarily be on
|
||||
your partition. However, if you want to really be safe, you could set
|
||||
up such a subdirectory to save the things prior to changing them, so
|
||||
that you can always go back to where you where. (But since I advised
|
||||
you to backup before you started, it should not be necessary.....)
|
||||
|
||||
The material which he does NOT show - for example the remainder of
|
||||
/usr/include - is expected to match Minix 1.5.10 crc's. If you did not
|
||||
have a clean 1.5.10 system (i.e., matched crc's) to begin with, there may
|
||||
be problems. Do not be fooled (like I did) into thinking that just because
|
||||
it is not shown in runtime.crc that it should not be there!
|
||||
|
||||
However, in the real world we live in, very few of us actually do
|
||||
have exact crc matches on EVERYTHING....so do the best you can with it.
|
||||
Use caution, however. If every little library routine and makefile does
|
||||
not match to the nth degree, you may, with luck, get by. But if there
|
||||
are big discrepancies, or the discrepancy is in the operating system
|
||||
itself, you might save time by getting if fixed before proceeding.
|
||||
|
||||
In /usr/src/kernel, note that the crc for klib386.x shown in the
|
||||
runtime.crc file is not correct, since you should have previously patched
|
||||
that with the material from the mx386_1.1.01 file. The correct crc should
|
||||
be:
|
||||
|
||||
54263 20437 klib386.x
|
||||
|
||||
My makefile.cpp for /usr/src/kernel also does not match the
|
||||
runtime.crc file (I show 03660 4085 makefile.cpp).
|
||||
|
||||
Note that for /usr/src/lib/ansi, posix, and other, Bruce again
|
||||
shows on runtime.crc only the files which he changed. There will, of course,
|
||||
be ALL of the files from Minix 1.5.10 in /usr/src/lib. The ones which
|
||||
he does not show should match Minix 1.5.10 crc's.
|
||||
|
||||
|
||||
Step 14. Recompile "make" so that it will recognize .o files (instead of
|
||||
using .s files). To do this, just change to your /usr/src/commands/make
|
||||
directory, and edit the Makefile to remove -DPCMINIX from the CFLAGS line,
|
||||
so that it just reads "CFLAGS = -Dunix". Then do a make, produce a new
|
||||
object file of make, and move it to /usr/bin (I would recommend that you
|
||||
save the old make first. For example:
|
||||
|
||||
cd /usr/bin
|
||||
mv make make_s
|
||||
cd /usr/src/commands/bin
|
||||
mv make /usr/bin
|
||||
|
||||
Step 15. Now, we are ready to compile the libraries. First of all,
|
||||
change your path, so that you will have access to the compiler. At
|
||||
the same time, change cc to something else, and link the name "cc" to
|
||||
the bcc compiler. (The reason for changing cc to some other name is
|
||||
to be sure that if you re-boot and forget to change your path, you
|
||||
will not start compiling with the wrong compiler!)
|
||||
|
||||
|
||||
PATH=/local/bin:$PATH
|
||||
export PATH
|
||||
cd /usr/bin # assuming that cc is here
|
||||
mv cc cc_old
|
||||
cd /local/bin
|
||||
ln bcc cc # since some makefiles use cc
|
||||
|
||||
Step 16. Now, lets compile the libraries...but before doing so, be SURE that
|
||||
there aren't any refuge .s files hanging around. They cause problems!
|
||||
|
||||
cd /usr/src/lib/ansi
|
||||
rm *.s
|
||||
cd ../posix
|
||||
rm *.s
|
||||
cd ../ibm
|
||||
rm *.s
|
||||
cd ../other
|
||||
rm *.s
|
||||
cd ../string
|
||||
rm *.s
|
||||
|
||||
cd /usr/src/lib/bcc
|
||||
sh makelib 86 | tee makelib.out 2>&1
|
||||
|
||||
Several things can go wrong here. If something is not working, check
|
||||
to be sure you set the PATH right. Check to be sure that you have the proper
|
||||
files in /local/bin. Check to be sure that cpp is in /lib (because it is
|
||||
needed to convert .x files). Check to be sure that you don't have some kind
|
||||
of garbage in with the source files. If you get compile errors, check to be
|
||||
sure that your crc's check with Bruce's. There should not be any compile
|
||||
errors. Check the file makelib.out carefully, and see if it contains any
|
||||
error messages. There should not be any. If there are, fix them, clean
|
||||
up stuff by doing:
|
||||
|
||||
sh makelib 86 clean
|
||||
|
||||
and then start over with:
|
||||
|
||||
sh makelib 86 | tee makelib.out 2>&1
|
||||
|
||||
But assuming everything is eventually ok, you should now have a
|
||||
16-bit library which will be in /usr/src/lib/bcc/i86. Move this to
|
||||
/usr/local/lib/i86, as shown in the following:
|
||||
|
||||
cd /usr
|
||||
mkdir local
|
||||
cd local
|
||||
mkdir lib
|
||||
cd lib
|
||||
mkdir i86
|
||||
cd /usr/src/lib/bcc/i86
|
||||
cp * /usr/local/lib/i86
|
||||
|
||||
There is a little library which we need for /usr/src/kernel, so
|
||||
let's go ahead and make it now.
|
||||
|
||||
cd /usr/src/lib/bcc/86
|
||||
ar r /usr/src/kernel/longlib.a laddl.o lcmpl.o ldecl.o lorl.o \
|
||||
lsll.o lsrul.o
|
||||
cd /usr/src/kernel
|
||||
ar t longlib.a # check to be sure they are there...
|
||||
|
||||
Now, clean up the 16 bit stuff, so the 32-bit library can be compiled.
|
||||
There are things in it the 16-bit library which later on are going to
|
||||
be needed to make the 32-bit system. Later on, if you get cramped for
|
||||
space, you can remove the 16-bit libraries if you run completely under
|
||||
Minix-386.
|
||||
|
||||
cd /usr/src/lib/bcc
|
||||
sh makelib 86 clean
|
||||
|
||||
sh makelib 386 | tee makelib.out 2>&1
|
||||
|
||||
Same warnings hold, of course, as above. But if the 16-bit library
|
||||
compiled ok, most likely the 32-bit one will also :-)
|
||||
|
||||
cd /usr/src/lib/bcc/i386
|
||||
cp * /usr/local/lib/i386 # copy to permanent home
|
||||
|
||||
sh makelib 386 clean # if you are tight for space
|
||||
|
||||
Step 17. OK, now lets make the operating system itself. The time has
|
||||
now come to discuss the makefile problem. Bruce has assumed that we are
|
||||
using cppmake. But, as previously stated, cppmake was not working under
|
||||
Minix 1.5.10 when I put this tutorial together, so I recommend we go without
|
||||
it for now (coward's way out - I SHOULD check out the new cppmake and change
|
||||
the tutorial accordingly!)
|
||||
|
||||
The first thing to do is to make the directory where kernel, fs, and mm
|
||||
are going to be put (that is, the object files).
|
||||
|
||||
cd /etc
|
||||
mkdir system
|
||||
|
||||
Doing the makefiles for mm and fs are both easy. Just use elle and
|
||||
delete some blanks which are at the beginning of some of the "#" commands.
|
||||
Then use cpp to generate a makefile.
|
||||
|
||||
cd /usr/src/mm
|
||||
rm *.s *.o # can't be too careful...
|
||||
elle makefile.cpp # be sure all "#" commands start in column 1
|
||||
/usr/lib/cpp -P -DINTEL_32BITS makefile.cpp > makefile
|
||||
make # generate /etc/system/mm
|
||||
|
||||
cd /usr/src/fs
|
||||
rm *.s *.o
|
||||
elle makefile.cpp # again, be sure all "#" commands start in col 1
|
||||
/usr/lib/cpp -P -DINTEL_32BITS makefile.cpp > makefile
|
||||
make # generate /etc/system/fs
|
||||
|
||||
NOTE: You will get a warning message from ld that _exit has been
|
||||
redefined. This is normal.
|
||||
|
||||
/usr/src/kernel gives more of a problem, because cpp does not like the
|
||||
comments (which begin with "#") in makefile.cpp. The easiest thing seems to
|
||||
just make a copy of makefile.cpp, use elle to remove all of the comments, and
|
||||
then run cpp on it. Be careful though that when you remove something that it
|
||||
IS a comment, rather than a cpp command! So read before deleting.
|
||||
|
||||
cd /usr/src/kernel
|
||||
cp makefile.cpp xx
|
||||
elle xx # remove all of the comment lines
|
||||
rm *.s *.o # be sure...
|
||||
config 386 # set up proper files.
|
||||
/usr/lib/cpp -P -DINTEL_32BITS xx > makefile
|
||||
make # generate /etc/system/kernel
|
||||
|
||||
NOTE: ld complains that _unlock and _lock are redefined. Again,
|
||||
this is normal.
|
||||
|
||||
PROBLEM AT THIS POINT! I have not had much luck with making a
|
||||
boot disk using /usr/src/tools, so I am going to recommend using the
|
||||
Shoelace method instead. Therefore, I am going to just make init, move
|
||||
it over to /etc/system, and stop there, so that I can get this $%@#&
|
||||
tutorial posted! (But I'll keep working on it :-))
|
||||
|
||||
By the way, a comment was made on the net that the stacksize
|
||||
in init.c needs to be made greater. I have not personally had a problem
|
||||
with it, but you might want to consider changing the constant within
|
||||
init.c to make it greater, if you have a problem with loading init.
|
||||
|
||||
cd /usr/src/tools
|
||||
cc -3 -c -D_POSIX_SOURCE -D_MINIX init.c
|
||||
ld -3 -o /etc/system/init /usr/local/lib/i386/head.o \
|
||||
init.o /usr/local/lib/i386/libc.a
|
||||
|
||||
NOTE: ld complains that _sbrk and _exit are redefined. Again,
|
||||
this is normal.
|
||||
|
||||
Step 18. Now, go back to /usr/src/oz and uncompress and untar the file
|
||||
containing Shoelace (shoelace-1.0a.tar.Z). You need to switch back to
|
||||
the regular old ACK compiler, and use the old version of make.
|
||||
|
||||
cd /usr/bin
|
||||
mv cc_old cc
|
||||
mv make make_o
|
||||
mv make_s make
|
||||
PATH=/usr/bin:/bin
|
||||
export PATH
|
||||
cd /usr/src/oz/shoelace
|
||||
make -f makefile.min # make shoelace stuff
|
||||
|
||||
Read the file "readme" carefully. It will tell you in detail
|
||||
how to make a floppy disk. Just use the 1.2 meg disk that you already
|
||||
have mounted for this! That is, do the "./laceup /dev/at0 5.25dshd".
|
||||
(The readme file says to use /dev/fd0 5.2h dsdd, but since you have a 1.2 meg
|
||||
disk, you need to use /dev/at0 5.25dshd). Next, copy shoelace to it, as
|
||||
per the readme file. THEN, copy the kernel, mm, fs and init files. Copy
|
||||
config to /user/etc/config.
|
||||
|
||||
cd /etc/system
|
||||
cp * /user # copy kernel, fs, mm, init
|
||||
|
||||
(Do NOT, however, follow the readme directions to "copy a /bin/sh, login,
|
||||
etc. onto the floppy" because you want to put 32-bit versions of these on there.
|
||||
This will be done a little bit later.)
|
||||
|
||||
Also, you need to edit the /user/config file a little bit, so that
|
||||
it fits your configuration. Use elle and comment out the line which says:
|
||||
|
||||
run /etc/system/db
|
||||
|
||||
Step 19. If all of this worked ok, then you should now have a 32-bit boot
|
||||
disk. Now, you want to Make a few more 32-bit files...which means that you
|
||||
need to compile a few commands. First, switch back to bcc:
|
||||
|
||||
cd /usr/bin
|
||||
mv cc cc_old
|
||||
mv make make_s
|
||||
mv make_o make
|
||||
PATH=/local/bin:$PATH
|
||||
export path
|
||||
|
||||
Now make the files you are going to need:
|
||||
|
||||
|
||||
cd /user
|
||||
mkdir bin
|
||||
cd /usr/src/commands/sh
|
||||
|
||||
We will dispense with using makefiles for right now...you can play
|
||||
with these and adjust them to your satisfaction later.
|
||||
|
||||
rm *.s *.o
|
||||
cc -3 -D_POSIX_SOURCE -o /user/bin/sh *.c
|
||||
cd /usr/src/commands
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/bin/login login.c
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/etc/update update.c
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/etc/mount mount.c
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/etc/umount umount.c
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/bin/cat cat.c
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/bin/ls ls.c
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/bin/cp cp.c
|
||||
|
||||
cd /usr/src/commands/ibm
|
||||
cc -3 -D_POSIX_SOURCE -D_MINIX -o /user/bin/readclock readclock.c
|
||||
|
||||
NOW, finally, and at last. You have a 1.2 meg floppy which has
|
||||
a Minix-386 system on it (a skelton system, to be sure), and which you
|
||||
can boot up. What you want to do now is boot it up, see if everything
|
||||
works, and if it does, you should be able to now think in terms of making
|
||||
a Minix-386 hard disk partition, compiling all commands, etc.
|
||||
|
||||
The biggest problem that you are going to have is mixing the
|
||||
16-bit and 32-bit binaries. If you try and run a 16-bit program while
|
||||
in 32-bit mode, you get an error. And vice-versa. Here is a little
|
||||
program you can run to check:
|
||||
|
||||
main()
|
||||
{
|
||||
char buf[10];
|
||||
if (read(0,buf,4) != 4) {
|
||||
printf("Length error reading file.\n");
|
||||
exit(1);
|
||||
}
|
||||
if (buf[3] == 0x04)
|
||||
printf(" is 8086\n");
|
||||
else if (buf[3] == 0x10)
|
||||
printf(" is 80386\n");
|
||||
else
|
||||
printf(" is unknown\n");
|
||||
}
|
||||
|
||||
Just compile it and run it against /bin, /usr/bin, /etc.
|
||||
For example, say you call the program "check_cpu":
|
||||
|
||||
cd /usr
|
||||
for i in *
|
||||
do
|
||||
echo $i - `(check_cpu < $i)`
|
||||
done
|
||||
|
||||
|
||||
Good luck, congratulations, and welcome to Minix-386!!!
|
||||
|
||||
Another problem which pops up is that /etc/rc will have a
|
||||
call to something which does not exist. This makes the system hang.
|
||||
For example, if you do not have a program called /usr/bin/readclock,
|
||||
but yet /etc/rc has a command to execute that program, you hang!
|
||||
|
||||
(p.s. If you have problems, suggestions, criticisms or comments about
|
||||
this tutorial, please feel free to send them to me. Better still, make
|
||||
notes as you go, and use your own experience with it to post a better one!)
|
||||
|
||||
John Nall
|
||||
nall@sun8.scri.fsu.edu
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<EFBFBD>
|
||||
nall@sun8.scri.fsu.edu
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD>/hn Nal8Kj<4B>l4j<>ll@sun8.s
|
||||
Reference in New Issue
Block a user