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
Running Nilo
From a Floppy
Linux Hosted
Accessing the Nilo CVS Repository
2. Setting up NILO
Host Server Software
Setting up tftp
Setting up your DHCP server
OSkit
3. The Boot Process
Startup
First Stage Boot Loader
Second Stage Boot Loader
Boot Configuration
4. Dynamic Host Configuration Protocol
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK
DHCP Data structures
Other RFCs
DHCP Support Functions
dhcp_decode_packet()
fill_dhcp_header()
fill_dhcp_discover()
fill_dhcp_request()
add_dhcp_nicif_opt()
add_dhcp_msg_type_opt()
add_dhcp_platformid_opt()
add_dhcp_class_id_opt()
add_dhcp_client_id_opt()
add_dhcp_max_msg_len_opt()
add_dhcp_sysarch_opt()
add_dhcp_param_list_opt()
add_dhcp_nic_type_opt()
add_dhcp_request_ip_addr_opt()
add_dhcp_hostname_opt()
add_dhcp_ipaddr_lease_time_opt()
add_dhcp_subnet_mask_opt()
add_dhcp_broadcast_addr_opt()
add_dhcp_routers_on_subnet_opt()
add_dhcp_domainname_opt()
add_dhcp_dns_opt()
add_dhcp_server_id_opt()
5. Address Resolution Protocol (ARP)
add_to_cache()
lookup_addr()
fill_arp_entry()
6. Trivial File Transfer Protocol
tftp_decode_packet()
fill_tftp_request()
Other RFCs
7. Multiboot Compliance
8. 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
9. 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()
10. OSKit
Device Driver Framework
C Library
Memory Allocation
Low Level Support
11. 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
12. The DocBook Tools