NILO development timeline

A total effort of 14 person-weeks over real time of 28 weeks (with a closing phase of 1 person-week effort over 6 months) is estimated. The project is stretched out over this length of time not only to allow the implementor(s) time to consider design issues with care but also to allow user and tester participation. If it is felt that user participation could benefit from further stretching, please raise the issue. The times below are in logical weeks. This is not the only possible ordering just a suggested one, the implementor(s) may propose some other that makes sense in the architecture and strategy document. Each deliverable is annotated with a suggestion of what needs to be done.

Week 1

Study problem and propose design. Deliverable: Architecture and strategy document. The document shall also indicate if there is a generic approach to utilities for constructing network bootable images for a range of operating systems. (Currently there is one mknbi for each operating system, perhaps a generic configurable one could replace that.) Release document to Web site.

Note: Writing a generic netboot image builder can save time when operating systems other than Linux or DOS are to be supported. I do not know how FreeBSD is loaded into memory, that needs to be researched.

Note: One suggested design for a universal image builder is a Perl program that reads a specification of segments from a specification file. This file specifies for each segment, the file it comes from, the byte offset and length of the segment, the destination address, and any segment comments. As a hypothetial example, a Linux netboot image specification might look like:


	segment1	0-		-	4096	0x92200
	segment2	0-		-	2048	0x93400
	vmlinuz		0-511		512	512	0x90000
	vmlinuz		512-5119	4608	40448	0x90200
	vmlinuz		5120-		-	-	0x10000

	

Note: Probably there needs to be more specified, maybe some dynamic parameters extracted from the files.

Week 2

Get user level BOOTP, DHCP and TFTP loader working under Un*x. Deliverable: A user level program that can issue a request and load a file via TFTP. Release snapshot to Web site.

Note: The NILO snapshot works and implements much of this functionality. It is event-driven as required by interrupt-driven code. Things missing include DHCP support and ARP.

Week 3 to 5

Write Linux network adapter driver harness. Deliverable: Demonstrate standalone programs each incorporating one of the chosen Linux network adapter drivers that can be loaded from floppy and goes through the BOOTP/DHCP and TFTP steps, loading to memory. Release snapshot to Web site.

Note: This is probably the most challenging part of the project. The Linux drivers need support routines for hooking to I/O addresses and interrupts, timer support (jiffies), memory allocation support, some kind of tasking (top half and bottom half stuff), some printing routines (trivial). As the range of drivers tested by users increases, the support routines will be exercised and will need refinement.

Checkpoint

At week 4 a funding review should take place to determine if resourcing is adequate.

Week 6 and 7

Get callbacks from secondary loaders and PXE to work. Deliverable: a NILO image that can execute bpbatch jobs. Release snapshot.

Note: This task involves implementing hooks for the PXE specification. These hooks involve particular register assignments. The PXE callbacks have to be translated into NILO callbacks. Understanding the specifications may take some time, it's not particularly easy to read.

Week 8 and 9

Write utility(ies) for creating and manipulating netbooting image for the specified operating systems. Deliverable: release snapshot.

Note: This is the universal netboot image builder and associated tools mentioned earlier. The trick is to get it to work for the OSes of interest. Personally I think a language like Perl and Python will allow these tools to be developed faster but this is up to the implementor.

Week 10 and 11

Get Linux, FreeBSD and Windows (95 and 98) to boot and run. Get PnP to work. Burn test EPROM image or load EEPROM image. Deliverable: working code. Release snapshot.

Note: The effort involved in testing should not be underestimated. Just going around and resetting machines take up some real time. And there's the slow booting Windows.

Week 12 and 13

Receive bug reports and fix problems. Document work. Deliverable: bug fixes, user documentation and internals documentation to LDP standard, HOWTO, Web page. Release snapshot.

Note: Hopefully documentation and bug fixing can be done in parallel.

Week 14

Additional utilities as noted as required in previous weeks, e.g. menu configurator, etc. General cleanup. Deliverables: code, final release to web site, various archives and distributions.

Note: This is a catchall for any bits noted as needed in the plan generated in the first week. Packaging (RPM, deb, pkg, etc) for general consumption is important. Distributors should be enlisted ahead of time.

Closing phase

One extra week, spread over next 6 months, to fix any bugs reported.