[Coco] Where are the separate bootfiles?

Gene Heskett gene.heskett at verizon.net
Sat Dec 27 04:59:27 EST 2003


On Saturday 27 December 2003 03:18, Mark Marlette wrote:
>At 05:00 PM 12/26/2003 -0800, you wrote:
>
>Paul,
>
>If I understand this question......
>
>They are in the .dsk image file. The scripts build the kernel track.
>
>????????
>
>The distribution is very well structured.....?????
>
>Regards,
>
>Mark
>
>>Boisy (or whomever),
>>
>>I'm looking to fine the bootfiles (track-34)
>>on the www.nitros9.org site. How do
>>I find those separate files? (path?)
>>Specifically, I want "Kernel".
>>
>>Thanks,
>>Paul
>>
Paul;  If I understand you, and even though the pieces are there on 
disk2's image to make a new kernel track, I get the impression you 
want the kernel track from disk1, right?

I have published a utility called kernel2dir if I recall the name 
correctly.  Maybe krnl2dir?

It will build a directory entry that points to the kernel track, which 
in turn will allow that track to be copied to another disk, but as a 
normal file.  Or one can cd to an empty directory and use "vfy -sk 
path2file" to split it up into its 5 component parts, which are:

1: The 6 byte header required by rsdos when it loads and execs a 
binary file

2: rel, the util that copies the kernel track to its proper location 
in memory, and which once done, jumps (IIRC) to the boot module to 
load the os9boot file.  If my IIRC is wrong, and it jumps first to 
os9p1, then once os9p1 has set things up it returns to rel or jumps 
to boot.

3: the boot module, which interrogates LSN0 of the designated disk to 
get the location and length of the os9boot file and loads it.

4: os9p1, now kernelp1, which sets up a boatload of variables and 
jumps to os9p2(kernelp2 now) which completes the system init, 
including a search for os9p3, a seperate module that looks up any 
error numbers in the errno file on the disk.

5: a table of jump addresses that lives past the end of kernelp1, and 
which normally occupy the top few bytes of system memory.  These are 
the addresses the hardware jumps to when one of the hardware 
interrupts or SWI's is executed among other things.

vfy works that way as it looks for the 87cd header of a module, and 
gets the module size from that modules header.  If it hasn't 
triggered an 87cd as it reads the files first integer, then it puts 
that into a kernelhead file, ditto for the next 2 integers.  On the 
next read it finds rel's 87cd and starts to write that module out.  
This continues until it has reached the end of os9p1.  But it has not 
reached the end of the file at that point so it writes the remaining 
few bytes as a file called kerneltail.

To rebuild a kernel track for the new os9gen to use, all 5 of these 
files must be merged back into one 4608 byte long kernel track in the 
proper order.  Its the boot module that gets patched to control which 
device the booting is actually done from.  This is required because 
there is not, at that point in the bootup, knowledge of a valid 
filesystem, so its all by absolute addresses direct to the disk 
controller chip.

I found this krnl2dir to be a very handy tool many years ago when 
nitro9 was going through its genesis.

Does this explain it adequately?

-- 
Cheers, Gene
AMD K6-III at 500mhz 320M
Athlon1600XP at 1400mhz  512M
99.22% setiathome rank, not too shabby for a WV hillbilly
Yahoo.com attornies please note, additions to this message
by Gene Heskett are:
Copyright 2003 by Maurice Eugene Heskett, all rights reserved.




More information about the Coco mailing list