Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
soc:oldundiproposal [2006/06/14 22:33] ashieh |
soc:oldundiproposal [2006/06/14 22:33] ashieh |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | <pre> | ||
- | = Deliverables and expected timeline = | ||
- | |||
- | The initial target platform will be VMware, which provides e1000 and | ||
- | vlance emulated NICs, which support PXE. | ||
- | |||
- | The architecture for the UNDI driver will be divided into two | ||
- | portions: a userspace program for executing the UNDI code, which | ||
- | passes packets to and from an in-kernel component. | ||
- | |||
- | Based on my understanding of the Etherboot code and (non-functional) | ||
- | Grub UNDI driver, UNDI is typically implemented as real-mode code. The | ||
- | natural way to execute the real-mode code is within some kind of | ||
- | virtualization, with PIO or MMIO operations directed at the actual | ||
- | hardware. The UNDI execution environment will be based on Virtual 8086 | ||
- | (vm86() functionality in Linux) or QEMU. The decision on which to use | ||
- | will depend on performance, size, and cross-platform (e.g. suitability | ||
- | for *BSD, non-x86) considerations. | ||
- | |||
- | For maximum compatibility with unmodified kernels, the in-kernel | ||
- | component should be the standard TUN/TAP, with appropriate routing | ||
- | rules applied. If this is unworkable, a stub network driver module | ||
- | which communicates with the UNDI userspace code via control nodes in | ||
- | /proc should be easy to develop, and would not require any | ||
- | modifications to the kernel. | ||
- | |||
- | Week 1: | ||
- | Build familiarity with UNDI | ||
- | - Look at etherboot UNDI code | ||
- | - Look at (nonfunctional) grub UNDI driver | ||
- | -- Spend some time debugging it to get a feel for how to debug this stage of the | ||
- | boot process, potential pitfalls in providing an environment for UNDI drivers | ||
- | |||
- | Week 2: | ||
- | Evaluate vm86 vs QEMU tradeoffs | ||
- | Extract UNDI code, etherboot UNDI interface, and import to virtualization system | ||
- | |||
- | Week 3+4+5: | ||
- | Get VM environment working well enough to execute UNDI initialization code | ||
- | |||
- | Week 5+6+7: | ||
- | Send/receive UNDI packets | ||
- | - From within compat environment | ||
- | - Integrate with kernel send | ||
- | |||
- | Week 8: | ||
- | Test with full boot process: | ||
- | - local disk boot | ||
- | - nfs root | ||
- | - ltsp | ||
- | - etc | ||
- | |||
- | Week 9: | ||
- | Evaluate on different hardware, with different UNDI stacks | ||
- | </pre> |