http://www.cs.utah.edu/flux/mach4-i386/html/UK02p21-release.htmlMach4 UK02p21 Release NotesNovember 3, 1995ContentsOverviewUK02p21 is a public release of the so-called ``Mach4'' kernel for the Intel x86 processor family. Mach4 is one component of the Flux project at the University of Utah Computer Science Department. The focus of the x86 branch has been to make Mach more usable on PCs, with particular emphasis on ease of building, compatibility with a number of OS environments and additional hardware support. This release reflects the latest development in those areas.New in UK02p21, since p13:
Tested ConfigurationsAll configurations were built using i386-mach cross-build tools, which can be found at: ftp://flux.cs.utah.edu/flux/binaries/i386. The kernel was tested with Lites-1.1.u2 running on the following base systems:
Ftp InformationMach4 and Mach4-i386
DetailsLinux Device Drivers:Shantanu Goel (g...@cs.columbia.edu) has modified Mach to accept mostly unchanged Linux network device drivers. He has work in progress to support SCSI host adapters and all block devices, which should be available "soon." All this work is described in the paper ``Linux Device Driver Emulation in Mach'' by Shantanu Goel and Dan Duchamp of the Columbia Mobile Computing Laboratory. The paper will be presented at 1996 USENIX Annual Technical Conference. The paper will be available by November 16, 1995, at which time we'll add a link to it here.To enable the Linux device driver support, use ``--enable-linuxdev'' when configuring Mach4. You cannot mix native network drivers with the Linux network drivers. Be aware that since the drivers are from Linux, they are all covered by the GPL. Testing status
No PCI boards work yet, since there is currently no support for PCI in Mach. (That will also be provided "soon" via more linuxdev work.)
Booting:BSD and MachBooting from Mach, NetBSD and FreeBSD bootblocks should now work as you'd expect. The kernel uses the bootdev and boothowto fields that are passed from the bootblocks, so now you can boot from an alternate root/partition without hardcoding it in setroot.c. Any command line arguments are likewise passed along to the kernel and server. The old Mach bootblocks don't support loading NMAGIC kernels, which is a problem since that's usually what the Mach boot image is. So, if you're going to be booting from the original Mach bootblocks, you can either build ZMAGIC or OMAGIC kernels, or you'll can make a small change to the Mach bootblocks to recognize NMAGIC binaries: *** boot.c Wed Sep 1 17:14:33 1993 --- newboot.c Fri Nov 3 03:34:52 1995 *************** *** 137,143 **** read(&head, sizeof(head)); ! if (head.a_magic == 0407) poff = 32; else if (head.a_magic == 0413 ) { poff = 0; head.a_text += sizeof(struct exec); } else { --- 137,143 ---- read(&head, sizeof(head)); ! if (head.a_magic == 0407 || head.a_magic == 410) poff = 32; else if (head.a_magic == 0413) { poff = 0; head.a_text += sizeof(struct exec); } else { Kernel Debugger:The kernel debugger is once again useful, supporting symbols and backtraces. The problem was that the symbol table for the kernel wasn't getting loaded, which broke a number of things (now at least the kernel and server symbol tables are being loaded, but the bootstrap and emulator's aren't). However, symbols are only loaded if the kernel is a.out. If you feel you have to build your kernel as ELF, then you don't get symbols.Remote console support:Remote console support is working again. This is NOT the same as a serial console; basically it just spews out kernel messages to your favorite serial port. This can be very useful for logging the output of the system and using the kernel debugger over the serial line. To enable the remote console support, you must change a #define in mach4-i386/kernel/bogus/rc.h. RCLINE is the number of the serial device that you want to use, and RCBAUD is the speed. The options for RCLINE are shown below, as taken from autoconf.c, for the ``com'' device. options for RCLINE: RCLINE info ------ --------------------------- 0 (port 0x3f8/irq 4 DOS COM1) 1 (port 0x2f8/irq 3 DOS COM2) 2 (port 0x3e8/irq 5 DOS COM3) 3 (port 0x2e8/irq 9 DOS COM4) NE2000 device driver:This is a device driver for the ne2000 series of ethernet cards. It was ported from 386BSD by Shang-te Hsu of the Computer System Lab, Dep. of Computer & Information Science National Chiao Tung University in Hsinchu, Taiwan. The driver was sent to us by Terrence Mitchem (mitc...@sctc.com). We've only tested the driver with an ne2000 clone card, but the original README said that it supported the ``NE1000, NE2000, DE-100, DE-200, DE-220'' cards.The driver is configured to look for cards set up as: (ne0) port 0x280, memory addr 0xd0000, irq 5 If you need to change this, go into mach4-i386/kernel/i386at/autoconf.c and you'll find a section that looks like this: #if NNE > 0 {&nedriver, "ne", 0, neintr, 0x280,0x4000,0xd0000, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 5}, {&nedriver, "ne", 1, neintr, 0x300,0x4000,0xd0000, '?', 0, -1, -1, 0, 0, 0, SPL_SIX, 10}, #endif NNE > 0 Change the 4th, 6th and/or the last (port, mem, irq) to match your card and recompile the kernel. If you want to disable the driver or want to add more than one card, look in mach4-i386/kernel/bogus/ne.h and change the #define to either be 0, or greater than one. The number after the ``ne'' is the number that it will be configured for if found. So, a card at port 0x280 irq 5 will be configured as ne0. Other Changes, in no particular order:
Stephen Clawson <sclaw...@cs.utah.edu> November 3, 1995 |