xref: /original-bsd/sys/i386/i386/README (revision 3705696b)
1#	@(#)README	8.1 (Berkeley) 06/11/93
2
34.4BSD-alpha 80386/80486 Status
4June 20, 1992
5Pace Willisson <pace@blitz.com> +1 508 533 6430
6
7I believe that the sources in the 4.4BSD-alpha release can be compiled
8into a fairly usable system on IBM-AT class machines, although it is
9still pretty hard to bootstrap from the sources.  In this file, I'll
10describe the kinds of testing I've done with this kernel, and I'll
11give some hints about how to compiled it.
12
13I've been testing on a no-name motherboard with a 33 MHz 80486DX, 16
14Megabytes of RAM, an 80 Megabyte ST-506 MFM disk, a 500 Megabyte SCSI
15Wren 5 and a Western Digital 8003 Ethernet controller.  I've also run
16a predecessor to this kernel on a very old 16 MHz 80386/80387.
17
18My main test is to run a loop of kernel compiles:
19
20	cd /sys/compile/PACE
21	while true
22	do
23		rm -f *.o
24		make
25	done
26
27This takes about 35 minutes per loop, and I haven't seen it fail with
28recent kernels.  The longest I've let it run is about 2 days.
29
30I don't do any real development on the machine (I keep the active
31kernel sources on another machine and usually cross compile it), but I
32haven't seen any problems with running a random collection of
33utilities including gnuemacs, gcc, gdb, ftp, rlogin, trn and xterm.
34
35If you want to try to compile and run this kernel, here are some hints:
36
37First, if you received the "lite" distribution, then you will need to
38fill in the missing files.  The changes needed are almost exactly the
39same as those needed to fill out the NET/2 distribution, so a
40reasonable start would be to use the 386BSD diffs.
41
42Next, you have to run a Berkeley version of gcc.  Although it
43identifies itself as "gcc version 1.39", it has some changes from the
44real 1.39 that are important.  The main thing is that bit fields may
45cross 32 bit boundaries.  Therefore, the first step in cross compiling
46the kernel must be to compile the gcc from this tape (or the one from
47the NET/2 tape).  The compiler supplied with either the Jolitz or BSDI
48distributions should also be acceptable.  If you want to double check,
49make a test file that includes i386/include/segments.h, and make sure
50that sizeof (struct segment_descriptor) == 8.
51
52If your host is not a very modern BSD system, you will also need to
53make cross versions of "make" and perhaps other binary utilities.
54You will certainly need a cross version of src/usr.sbin/config.
55
56Hopefully, you will be able to use your own system's include files
57while compiling the cross-compilation system, since many of the
58include files on the 4.4BSD tape are incompatible even with NET/2
59systems.  You may need to make a few changes to the programs in the
60compilation system, since they assume they will run under 4.4BSD, even
61if they don't explicitly take advantage of the new features.
62
63If you host is not a NET/2 based system, be sure to configure the
64cross compilation system to ignore the host's include files and
65libraries, and instead use the 4.4BSD versions.  Also, if your host
66is not little endian, then you have major work to do to most of the
67binary utilities.
68
69Now you need to configure the kernel - start with i386/conf/BLITZ.
70You can probably use it as it stands, but look it over to make sure.
71Then do:
72
73	$ cd i386/conf
74	$ config BLITZ
75	$ cd ../../compile/BLITZ
76	$ make
77
78You may need to compile genassym.c by hand, since it is executed on the
79host machine to create assym.s.
80
81Once you have a kernel, you need to get a disk ready to run it.  Since
82this is an experimental system, you should make sure you don't have
83any important files on the disk.  I have been successful in switching
84back and forth between a NET/2 kernel and a 4.4BSD kernel, but I never
85keep important files on that disk.  Also, 4.4BSD does not make any
86attempt to co-exist with MSDOS.
87
88Now you have to create a file system.  The easiest approach would be
89to load either the Jolitz or BSDI binaries, then install your new
90kernel.  If you do this, you should check the device numbers first,
91and perhaps adjust the drivers or conf.c file.  4.4BSD is supposed to
92be binary compatible with these systems, so you should be able to use
93the existing programs in bin, usr/bin, etc.  Binaries from 4.3BSD 386
94systems may be compatible as well.
95
96When you are ready to install the new libraries, you must install the
97new include files at the same time.  Programs compiled with the new
98libraries will not be compatible with the old kernel.
99
100If you don't have either the Jolitz or BSDI system, you can bootstrap
101using some other system that has a little endian the Berkeley file
102system.  If you do this, you can mount a floppy on your host and copy
103over the kernel, the boot programs, and cross compiled versions of
104critical utilities.  Then you can boot the floppy, make a hard disk
105file system, and copy the files over.  Now you can boot from the hard
106disk and load more files from floppy tar's or over the network.  (Note
107that although ESIX System 5.3.2 has a version of the Berkeley file
108system, it has a slightly different inode format, so it is not a good
109choice as a host.)
110
111If you compile the boot programs from this tape, you may need to
112change the RELOC value from 70000 to 90000.  Unfortunately, I cannot
113test this before the 4.4BSD-alpha sources are frozen, but if you think
114your kernel is clobbering the boot program, then change 7 to 9 in
115these places:
116
117	cd /sys/i386/stand/
118	grep -n 70 *
119	Makefile:13:RELOC=	70000
120	Makefile:14:RELOC2=	70200
121	fdbootblk.c:47:#define	start		0x70400
122	fdbootblk.c:128:	movl	$0x70200,%edi
123	wdbootblk.c:56:#define start		0x70400
124
125This distribution assumes that the main floppy is a 3.5 inch drive.
126If you have a 5.25, you will have to do something creative.  The easy
127hack I've chosen is to reverse the first two lines of the array
128fd_types in i386/stand/fd.c and i386/isa/fd.c.
129
130The Adaptech scsi driver will not be part of 4.4BSD-alpha (it has to
131wait until the grand scsi plan is implemented), but you should be able
132to add the driver that I posted to alt.sources without any trouble.
133
134Finally, I've done all of my testing of this kernel on my old NET/2
135file system.  This means that I have not checked out the configuration
136files (things like /etc/rc and /etc/ttys) that are on this tape.
137