# @(#)README 5.2 (Berkeley) 07/14/92 4.4BSD-alpha 80386/80486 Status June 20, 1992 Pace Willisson +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.