Marty and I were talking about this, because I have been approached
by many people lately who are looking for a way to boot a diskless
client without using bootp or dhcp.
I know the benefits of using bootp/dhcp, and I always try to convince
them that they really should use one of those methods. But, they
insist that they can't, for whatever reason. They MUST enter a static
address into a workstation and use that.
Two recent groups that have talked about this are the Fermi lab in
Illinois
and Lawrence Livermore labs in California. Both are very large shops,
(over 1000 workstations between the two of them ), and
both can't/won't use dhcp because they don't have full control over
their networks. There are already dhcp servers and they can't get
access to them to add their own entries.
At this point, Fermi is looking at ThinkNics booting from a
CDROM. Each CDROM is customized to include the proper IP info.
So, i've been searching for a way to deal with this.
I've thought about hardcoding the IP info in each bootrom, but that
really sucks.
A couple of weeks ago, I was out at Comdex in Vegas and I ran into a
company
called Feiya, who makes tiny little flash ram ide devices that plug
right into the IDE header on a motherboard. I think the smallest they
make is 4mb and the biggest is something like 384mb.
Sort of like a DiskOnChip, but this appears exactly like an IDE disk
to the rest of the system, rather than a special chip that needs special
(proprietary) drivers like the DOC.
The ThinkNic includes a 4mb Feiya IDE chip, so I have one to play with.
The Iopener also has a flash IDE disk, but I think it's soldered to the
motherboard.
This got me thinking that we could put Freedos on the flash-ide and load
Etherboot from dos.
So now, i've been hacking my copy of Etherboot, trying to figure out
exactly
how to do it. I've written a little dos program that will place the
parameters
in memory at 0xFE00, which is where the tx buffer will reside once
Etherboot
initializes the card.
I'm purely in the discovery stages at this point, trying various things
to try
to get anything working.
I've got it to the point where I can place the paramters using a dos
program
and Etherboot will pick them up. It will then initialize the interface
with
those parameters and actually download the kernel. The kernel then
fails
because it doesn't know it's own IP address. I still have to get that
info
passed on to the kernel. I'm looking now at filling in a bootp reply
structure
within Etherboot so that it will think it got it's parameters from bootp
and pass the parameters through the first-linux.S code that is prepended
onto
the kernel from mknbi.
Talking with Marty, he mentioned that I should bring this conversation
over to
the Etherboot discussion list to solicit ideas from you-all.
There are many issues that need to be addressed in a proper way, such as
where
in memory the parameters should be placed. I chose 0xFE00 because it
seemed available
and after trying it, it worked. There's probably a better place for it
though.
Anyway, it's really just a hack right now and needs lots of cleanup
before
it is ready for real production use.
I know that Ken is not terribly fond of the idea of static IP info
stored
on the workstation, but I'm not going to fight with potential users on
this
when I clearly can't win.
The idea of making Etherboot only listen to certain servers might work
in
some situations, but what happens when you put a linux server in for
that
dhcp server, and all of a sudden all of the other clients on the network
start getting IP addresses (or rejections) from that new server. You've
just broken a network that was working.
Thanks,
Jim McQuillan
ja...@lt...
LTSP - Linux Terminal Server Project
|