There are now at least 2 known working ways to get forked versions of boot-132 running via PXE. This page describes the two approaches and provides scripts for you to try it out yourself. Note that right now this page ends where boot-132 is loaded; the rest can be read on DFE's blog. Booting PureDarwin with a PXE-enabled boot-132
Apparently DFE has written the missing Darwin/x86 first-stage network boot program (NBP), a first-stage loader for boot-132. Basically, booting PureDarwin over the network involves the following steps: - Client network card firmware asks DHCP server
- DHCP server asks dnsmasq on the server
- dnsmasq sends TFTP information
- Client network card firmware downloads boot1pxe.0 file specified by dnsmasq from dnsmasq
- boot1pxe.0 loads boot (boot-132) (known to work up to this point)
- boot-132 loads mach_kernel and Extensions.mkext from the server (still to be implemented)
- mach_kernel loads network kext and uses it to load the root volume from the network (still to be implemented)
- Root volume image detects that it is booted via the network and sets up ramdisks etc. as needed (like on Mac OS X network boot)
You can try this variant by: - Run Ubuntu 9.10 Live CD (we are using this as the server for now; later we could use PureDarwin as the server)
- wget
"http://sites.google.com/a/puredarwin.org/puredarwin/developers/booting/boot/pxe/boot-boot1pxe.bash?attredirects=0&d=1"
-O ./boot-boot1pxe.bash ; sudo bash
./boot-boot1pxe.bash
Booting PureDarwin via Chameleon via mboot.c32 via pxelinux via PXE
Another route is pxelinux which can boot multiboot kernels via PXE. Since mach_kernel itself is not a multiboot-compliant kernel, we need to use a multiboot-compliant fork of boot-132 (such as Chameleon), and load it with the mboot.c32 pxelinux plug-in. Basically, booting PureDarwin over the network involves the following steps: - Client network card firmware asks DHCP server
- DHCP server asks dnsmasq on the server
- dnsmasq sends TFTP information
- Client network card firmware downloads pxelinux.0 file specified by dnsmasq from dnsmasq
- pxelinux downloads its configuration
- pxelinux loads mboot.c32 which is a multiboot loader
- mboot.c32 loads boot which is a multiboot-compliant version of boot-132 such as Chameleon (known to work up to this point)
- boot-132 loads mach_kernel and Extensions.mkext from a supplied ramdisk (still to be implemented)
- mach_kernel loads network kext and uses it to load the root volume from the network (still to be implemented)
- Root volume image detects that it is booted via the network and sets up ramdisks etc. as needed (like on Mac OS X network boot)
You can try this variant by: - Run Ubuntu 9.10 Live CD (we are using this as the server; later we could use PureDarwin as the server)
- wget "http://sites.google.com/a/puredarwin.org/puredarwin/developers/booting/boot/pxe/boot-chameleon-over-pxelinux.bash?attredirects=0&d=1" -O ./boot-chameleon-over-pxelinux.bash ; sudo bash ./boot-chameleon-over-pxelinux.bash
|
Attachments (5)
-
boot - on Dec 30, 2009 12:25 PM by PD admin (version 1)
307k
Download
-
boot-boot1pxe.bash - on Dec 30, 2009 1:16 PM by PD admin (version 1)
1k
Download
-
boot-chameleon-over-pxelinux.bash - on Dec 30, 2009 12:30 PM by PD admin (version 6 / earlier versions)
1k
Download
-
boot1pxe - on Dec 30, 2009 1:16 PM by PD admin (version 1)
11k
Download
-
mboot.c32 - on Dec 30, 2009 12:26 PM by PD admin (version 1)
46k
Download
|