4.4BSD/usr/src/sys/i386/i386/README

#	@(#)README	8.1 (Berkeley) 6/11/93

4.4BSD-alpha 80386/80486 Status
June 20, 1992
Pace Willisson <pace@blitz.com> +1 508 533 6430

I believe that the sources in the 4.4BSD-alpha release can be compiled
into a fairly usable system on IBM-AT class machines, although it is
still pretty hard to bootstrap from the sources.  In this file, I'll
describe the kinds of testing I've done with this kernel, and I'll
give some hints about how to compiled it.

I've been testing on a no-name motherboard with a 33 MHz 80486DX, 16
Megabytes of RAM, an 80 Megabyte ST-506 MFM disk, a 500 Megabyte SCSI
Wren 5 and a Western Digital 8003 Ethernet controller.  I've also run
a predecessor to this kernel on a very old 16 MHz 80386/80387.

My main test is to run a loop of kernel compiles:

	cd /sys/compile/PACE
	while true
	do
		rm -f *.o
		make
	done

This takes about 35 minutes per loop, and I haven't seen it fail with
recent kernels.  The longest I've let it run is about 2 days.

I don't do any real development on the machine (I keep the active
kernel sources on another machine and usually cross compile it), but I
haven't seen any problems with running a random collection of
utilities including gnuemacs, gcc, gdb, ftp, rlogin, trn and xterm.

If you want to try to compile and run this kernel, here are some hints:

First, if you received the "lite" distribution, then you will need to
fill in the missing files.  The changes needed are almost exactly the
same as those needed to fill out the NET/2 distribution, so a
reasonable start would be to use the 386BSD diffs.

Next, you have to run a Berkeley version of gcc.  Although it
identifies itself as "gcc version 1.39", it has some changes from the
real 1.39 that are important.  The main thing is that bit fields may
cross 32 bit boundaries.  Therefore, the first step in cross compiling
the kernel must be to compile the gcc from this tape (or the one from
the NET/2 tape).  The compiler supplied with either the Jolitz or BSDI
distributions should also be acceptable.  If you want to double check,
make a test file that includes i386/include/segments.h, and make sure
that sizeof (struct segment_descriptor) == 8.

If your host is not a very modern BSD system, you will also need to
make cross versions of "make" and perhaps other binary utilities.
You will certainly need a cross version of src/usr.sbin/config.

Hopefully, you will be able to use your own system's include files
while compiling the cross-compilation system, since many of the
include files on the 4.4BSD tape are incompatible even with NET/2
systems.  You may need to make a few changes to the programs in the
compilation system, since they assume they will run under 4.4BSD, even
if they don't explicitly take advantage of the new features.

If you host is not a NET/2 based system, be sure to configure the
cross compilation system to ignore the host's include files and
libraries, and instead use the 4.4BSD versions.  Also, if your host
is not little endian, then you have major work to do to most of the
binary utilities.

Now you need to configure the kernel - start with i386/conf/BLITZ.
You can probably use it as it stands, but look it over to make sure.
Then do:

	$ cd i386/conf
	$ config BLITZ
	$ cd ../../compile/BLITZ
	$ make

You may need to compile genassym.c by hand, since it is executed on the
host machine to create assym.s.

Once you have a kernel, you need to get a disk ready to run it.  Since
this is an experimental system, you should make sure you don't have
any important files on the disk.  I have been successful in switching
back and forth between a NET/2 kernel and a 4.4BSD kernel, but I never
keep important files on that disk.  Also, 4.4BSD does not make any
attempt to co-exist with MSDOS.

Now you have to create a file system.  The easiest approach would be
to load either the Jolitz or BSDI binaries, then install your new
kernel.  If you do this, you should check the device numbers first,
and perhaps adjust the drivers or conf.c file.  4.4BSD is supposed to
be binary compatible with these systems, so you should be able to use
the existing programs in bin, usr/bin, etc.  Binaries from 4.3BSD 386
systems may be compatible as well.

When you are ready to install the new libraries, you must install the
new include files at the same time.  Programs compiled with the new
libraries will not be compatible with the old kernel.

If you don't have either the Jolitz or BSDI system, you can bootstrap
using some other system that has a little endian the Berkeley file
system.  If you do this, you can mount a floppy on your host and copy
over the kernel, the boot programs, and cross compiled versions of
critical utilities.  Then you can boot the floppy, make a hard disk
file system, and copy the files over.  Now you can boot from the hard
disk and load more files from floppy tar's or over the network.  (Note
that although ESIX System 5.3.2 has a version of the Berkeley file
system, it has a slightly different inode format, so it is not a good
choice as a host.)

If you compile the boot programs from this tape, you may need to
change the RELOC value from 70000 to 90000.  Unfortunately, I cannot
test this before the 4.4BSD-alpha sources are frozen, but if you think
your kernel is clobbering the boot program, then change 7 to 9 in
these places:

	cd /sys/i386/stand/
	grep -n 70 *
	Makefile:13:RELOC=	70000
	Makefile:14:RELOC2=	70200
	fdbootblk.c:47:#define	start		0x70400
	fdbootblk.c:128:	movl	$0x70200,%edi
	wdbootblk.c:56:#define start		0x70400

This distribution assumes that the main floppy is a 3.5 inch drive.
If you have a 5.25, you will have to do something creative.  The easy
hack I've chosen is to reverse the first two lines of the array
fd_types in i386/stand/fd.c and i386/isa/fd.c.

The Adaptech scsi driver will not be part of 4.4BSD-alpha (it has to
wait until the grand scsi plan is implemented), but you should be able
to add the driver that I posted to alt.sources without any trouble.

Finally, I've done all of my testing of this kernel on my old NET/2
file system.  This means that I have not checked out the configuration
files (things like /etc/rc and /etc/ttys) that are on this tape.