/joh'liks/ n.,adj. 386BSD
PORTING UNIX TO THE 386: A PRACTICAL APPROACH
William & Lynne Jolitz
Where do you get the root filesystem, when you need it to make itself? Answer - you make it on another system, in this case one quite different, and then you break the recursion.
Normally, we would use our ported system to create root filesystems, but we again run into a "chicken-and-egg" problem, because we need a finished system to create the archetypal root filesystem from which we make all others. So, in the typical "break the egg" and "cook the chicken" way we resolve all minor paradoxes, we make the first filesystem on our cross-host by special means. We either find a cross-host with identical key data structure characteristics (byte order, structure field alignment, and structure packing) or write a transformation program to turn our crosshost's filesystem format (via stretching, swapping, and shrinking) into a 386BSD-compatible form. The result is a file of bytes that contains an image of what the filesystem should contain on the PC's disk drive.|
If we were starting this project now, we might consider a novel alternative method using the BSD NFS (Network FileSystem) code. We would then run our 386BSD kernel in a "diskless" fashion, passing all file operations over the network to be satisfied by an NFS server host. We could use any NFS server to provide access to our initial root filesystem. Oddly enough, this would hide not only the cross-host's filesystem format, but the cross-hosts operating system as well. Conceivably, one could even use a non-UNIX cross-host. All of this is made possible by NFS's file abstraction mechanism, which converts filesystem data to a common external representation via its internal XDR (eXternal Data Representation) library.