Is there a way to install DragonFly via network (w/o CD) ?
Matthew Dillon
dillon at apollo.backplane.com
Wed Oct 13 23:24:58 PDT 2004
:10-4. Let me know how I should go from here, but I really think I can
:make it simple judging from the feedback we received for the installer
:on how to KISS it. It seems to be a priority any more to keep thing
:KISS which I really agree with ;)
:
:-Scott
Ok, I figured out a dhcpd configuration that ought to work. It looks like
it *IS* possible to have multiple dhcpd servers. When a machine is
PXE booting it asks for all sorts of identifiers that a normal dhcp
server (e.g. cable modem, dsl line, etc) cannot return. The Intel PXEBoot
code appears to ignore responses that have insufficient information, so
if there is a second dhcp server which does return more complete info
the PXE client will use it.
This means that we can run a second dhcp server on the network that
responds specifically to PXEBoot requests and it should not intefere
with the main dhcpd server for the network.
Isn't that cool?
So here's the idea... when you tell the installer to run a DHCP PXEBoot
server it should
* configure its IP address to something specific, e.g. in my example
10.1.0.1 netmask 255.255.255.0 (this can be an alias, separate from
a normal DHCP discovered IP).
* enable tftp and nfs
* install pxeboot in the tftp directory.
* mount the CD fresh on /cdrom or something like that and export it via
NFS. Or maybe just exporting '/' will work, I think NFS servers
ignore mount points.
* run dhcpd (I compiled up /usr/ports/net/isc-dhcp3-server) with a
configuration file that only responds to requests from PXE clients.
The DHCPD configuration file should look something like this:
# /usr/local/etc/dhcpd.conf
#
ddns-update-style none;
class "pxeboot-class" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
}
class "etherboot-class" {
match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";
}
subnet 10.1.0.0 netmask 255.255.0.0 {
pool {
allow members of "pxeboot-class";
allow members of "etherboot-class";
range 10.1.0.128 10.1.0.254;
option subnet-mask 255.255.255.0;
option broadcast-address 10.1.0.255;
filename "pxeboot";
option root-path "10.1.0.1:/cdrom";
next-server 10.1.0.1;
}
}
The above configuration file should only respond to requests matching
PXEClient or Etherboot sources, and so should ignore normal dhclient or
windows automatic IP DHCP requests.
I tested this on my LAN and it *almost* works. It is able to load pxeboot
and it is able to load the CD's exported /cdrom/kernel, but of course the
kernel is not a BOOTP kernel so we also have to:
* We need to include a BOOTP kernel on the CD (e.g. as /kernel.BOOTP)
* We need to compile up a version of pxeboot which loads /kernel.BOOTP
instead of /kernel by default.
I will do these two items now... that is, generate a BOOTP generic kernel
as part of the release building mechanism and also change the default
kernel name that pxeboot tries to load.
What you need to do is build the infrastructure that starts the tftp
server, the nfs server, configures the fixed IP addresses, includes the
isc-dhcp3-server package on the CD, creates the /usr/local/etc/dhcpd.conf
file, and starts dhcpd.
I think this is going to be *VERY* cool, guys!
-Matt
More information about the Users
mailing list