Subject: Re: Soekris 4801 craziness: pxeboot
To: David Laight <david@l8s.co.uk>
From: Steven M. Bellovin <smb@cs.columbia.edu>
List: tech-embed
Date: 10/15/2005 23:49:44
In message <20051015100016.GY12021@snowdrop.l8s.co.uk>, David Laight writes:
>On Sat, Oct 15, 2005 at 03:33:15AM -0500, David Young wrote:
>> On Fri, Oct 14, 2005 at 10:20:27PM -0400, Steven M. Bellovin wrote:
>> > I'm going slightly insane trying to get NetBSD working on a Soekris
>> > 4801. I'll post the different problems separately.
>> >
>> > First, I can't get PXEboot working. It downloads the first-stage
>> > bootstrap (pxeboot_ia32.bin), but it can't seem to load
>> > netbsd-INSTALL. tcpdump shows that it's being requested:
>>
>> PXE-booting NetBSD on Soekris boards has been broken since sometime after
>> NetBSD 1.6. I just got it to work the other day with the attached patch.
>
>OTOH it worked first time I tried it (modulo getting the console baud
>rate correct). However I did update the 4801's BIOS first.
I finally figured out the problem. pxeboot(8) says:
It is assumed that the TFTP server is the same as the DHCP server unless
a next-server directive is specified somewhere else in dhcpd.conf
Something -- I don't know if it's pxeboot or the Soekris BIOS -- did
not make that assumption. Putting a next-server clause in my
dhcpd.conf file did the trick:
host hellsgate {
hardware ethernet 00:00:24:c4:f4:40;
fixed-address 192.168.2.240;
option host-name "hellsgate";
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
filename "pxeboot_ia32_com0.bin";
next-server 192.168.2.79;
} else {
next-server 192.168.2.79;
filename = "tftp:hellsgate.kernel";
}
}
I could presumably move the next-server line out of the conditionals.
And for those who are wondering about the hostname -- I'm a railfan,
and all of my computers have railroad-themed names. See
http://www.nyc-architecture.com/BRI/BRI005-HellGate.htm and ponder
an obvious use of this machine....)
--Steven M. Bellovin, http://www.cs.columbia.edu/~smb