Nilo

The GNU Network Boot Loader

Rob Savoye

Free Software Foundation

Table of Contents
Abstract
1. Working With The Nilo Sources
Configuring Nilo
Building Nilo
Accessing the Nilo CVS Repository
2. The Boot Process
Startup
First Stage Boot Loader
Second Stage Boot Loader
Boot Configuration
3. Dynamic Host Configuration Protocol
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK
DHCP Data structures
Other RFCs
4. Address Resolution Protocol (ARP)
add_to_cache()
lookup_addr()
fill_arp_entry()
5. Trivial File Transfer Protocol
tftp_decode_packet()
fill_tftp_request()
Other RFCs
6. Multiboot Compliance
7. Tagged Boot Image Format
Making A Boot Image
Draft Net Boot Image Proposal 0.3
Preamble - the Why
The target
Net Boot Process Description.
Image Format with Initial Magic Number.
Boot prom entry points
Boot Image Example
Terms
References
8. PXE Compliance
Commonly Used Data Types
The PXE Boot Sequence
PXE Preboot Functions
pxenv_unload_stack()
pxenv_get_cached_info()
pxenv_restart_tftp()
pxenv_start_undi()
pxenv_stop_undi()
pxenv_start_base()
pxenv_stop_base()
TFTP Support Functions
pxenv_tftp_open()
pxenv_tftp_close()
pxenv_tftp_read()
pxenv_tftp_read_file()
pxenv_tftp_get_fsize()
UDP Support Functions
pxenv_udp_open()
pxenv_udp_close()
pxenv_udp_read()
pxenv_udp_write()
UNDI Support Functions
pxenv_undi_startup()
pxenv_undi_cleanup()
pxenv_undi_initialize()
pxenv_undi_reset_nic()
pxenv_undi_shutdown()
pxenv_undi_open()
pxenv_undi_close()
pxenv_undi_transmit()
pxenv_undi_set_mcast_addr()
pxenv_undi_set_station_addr()
pxenv_undi_set_packet_filter()
pxenv_undi_get_information()
pxenv_undi_get_statistics()
pxenv_undi_clear_statistics()
pxenv_undi_initiate_diags()
pxenv_undi_force_interrupt()
pxenv_undi_get_mcast_addr()
pxenv_undi_get_nic_type()
pxenv_undi_get_iface_info()
pxenv_undi_get_state()
pxenv_undi_isr()
9. OSKit
Device Driver Framework
C Library
Memory Allocation
Standard I/O Functions
Low Level Support
(X86) Processor Identification and Management
(X86) Base Environment
(X86) Base Environment: Segmentation Support
(X86) Base Environment: Trap Handling
(X86) Base Environment: Page Translation
(X86 PC) Base Environment: Physical Memory Management
(X86 PC) Base Environment: Interrupt Support
(X86 PC) Base Environment: Console Support
10. Old Nilo Doc
Nilo Objectives
NILO architecture
What is NILO ?
How will it be done ?
How will the project be run ?
Distribution
ChangeLog
TODO
Issues to think about
Why a new network booter? Aren't Etherboot and Netboot good enough?
NILO resources
New resources required
Existing resources available
NILO development timeline
11. The DocBook Tools