When I run vortex-diag -e I get the message:

A BIOS ROM of size 0Kx8 is expected

This is after I ran vortex-diag -L 3c905c.lxrom



Brian

Micael Beronius wrote:

> Hello Marty,
>
> I have exactly the same problems as Brian (as posted on
> etherboot-users), also with the 3c905 (tested 3c905 and 3c90b). In
> short I have tested all kinds of solutions for burning the rom/flash;
> bromutils vortex-diag and a regular EPROM programmer, so I'm pretty
> sure that the ROM are fine. (verified by reading back to file and
> comparing lzrom image among others. I have some errors coming out
> vortex-diag (saying there's no ROM installed, and that vortex format
> checksum is incorrect), but apart from that I begin to suspect that
> there is a incompatibility of the motherboard (Abit KX333, KT333
> chipset, award BIOS). Used 3com util to make sure the ROM is enabled.
>
> Booting with ROM gives me nothing, it does not detect the etherboot
> code. If I enable LAN boot in BIOS, the computer restarts every 10-15
> seconds without any messages. I guess "LAN" is when there's a built in
> ethernet?
>
> Yes, I have double checked the PCI ID's. ;-)
>
> I post the output of the vortex-diag below again..
>
> If you guys have any hint on what's not happening here ..
>
>   thanks,
>    Micael
>
> ./vortex-diag -e
> vortex-diag.c:v2.14 12/28/2002 Donald Becker ([EMAIL PROTECTED])
>  http://www.scyld.com/diag/index.html
> Index #1: Found a 3c905B Cyclone 100baseTx adapter at 0xd000.
>  Station address 00:10:5a:4c:c9:55.
>   Receive mode is 0x07: Normal unicast and all multicast.
> Saved EEPROM settings of a 3Com Vortex/Boomerang:
>  3Com Node Address 00:10:5A:4C:C9:55 (used as a unique ID only).
>  OEM Station address 00:10:5A:4C:C9:55 (used as the ethernet address).
>   Device ID 9055,  Manufacturer ID 6d50.
>   Manufacture date (MM/DD/YYYY) 9/22/1998, division 6, product QR.
>   No BIOS ROM is present.
>  Transceiver selection: Autonegotiate.
>    Options: force full duplex, link beat required.
>  PCI Subsystem IDs: Vendor 10b7 Device 9055.
>  100baseTx 10baseT.
>   Vortex format checksum is incorrect (c0 vs. 10b7).
>   Cyclone format checksum is correct (0xa8 vs. 0xa8).
>   Hurricane format checksum is correct (0xa8 vs. 0xa8).
>
> Tuesday, July 22, 2003, 4:25:49 PM, you wrote:
>
> MC> On Tuesday, July 22, 2003, at 07:29  AM, Brian Delaney wrote:
> >> ok, I am a newbie with this stuff.
> >> I am using thinstation to connect to a citrix server using the ica
> >> protocol.
> >> This works great with a rom-o-matic floppy disk. I have setup the tftp
> >> and dhcp server and the thinstation.nbi image works fine.
> >> I would like some simple plain english help on how to convert from the
> >> floppy disk to using the rom on the 3c905c NIC.
> >> I have tried several things and get errors from "file to image to
> >> large"
> >> to incorrect file format to nothing happpening once i hit the tftp
> >> server.....
> >> any help will be appreciated....thanks
>
> MC> Brian,
>
> MC> I have collected several methods that may allow you to reach your goal.
> MC> I think you may not understand the difference between Etherboot and
> MC> PXE, and may not realize that the code burned into the flash of your
> MC> NIC is not Etherboot, but some 3Com code that implements various
> MC> booting methods, such as RPL, TCP/IP and PXE. They call their code MBA
> MC> (for Managed Boot Agent), and it _implements_ various booting
> MC> protocols, none of which is Etherboot.
>
> MC> You can either replace their code with Etherboot using a flashing
> MC> utility, use their code directly directly (that is use one of the
> MC> protocols they support, like PXE), or use their PXE support to load
> MC> Etherboot, and let Etherboot load your kernel.  Any of the three can
> MC> very probably be made to work. But it will require some understanding
> MC> in any of the three cases. How much understanding, I cannot say.
>
> MC> I will describe several options, and I will put them all in this one
> MC> message, since this might be of more general usefulness. Someday I'll
> MC> get around to writing a docbook document that is more accessible, but
> MC> hopefully this message will help people succeed (and it _can_ be done!)
> MC>   I'll help as I am able, but the strength of Free Software is the
> MC> strength of the community, of which I am but a single member. So
> MC> someone(s) will help you, you can be sure.
>
> MC> -- Marty
>
> MC> P.S. If you're going to reflash your 3Com card, you have to know what
> MC> the PCI IDs for the card are. If you're using rom-o-matic.net you can
> MC> go to the menu and (in your case) you probably want a 3c905c-TPO with
> MC> IDs 0x10b7 and 0x9200. The IDs *must* match the card you want to boot
> MC> from, or the ROM code will not be run by the BIOS. The Etherboot
> MC> documentation describes how to find the IDs using the 'lspci' utility
> MC> (available in a linux distribution near you), or doing 'cat
> MC> /proc/bus/pci/devices' and looking for the correct 2nd column entry.
> MC> Booting from floppy is less picky because the BIOS loads whatever is on
> MC> the floppy, and the 3Com driver can support many cards. The BIOS does
> MC> some extra checking when loading from ROM space.
>
> MC> OK. Here we go. Good luck, and let us know how you eventually get it to
> MC> work.
>
> MC> ========= Door Number 1 ==========
>
> MC>    - You can reprogram the Flash EEPROM on the 3C905C using cromutil
>
> MC> (modified) README file for cromutil, available in the contrib
> MC> subdirectory of etherboot distributions:
>
> MC> This utility was apparently writen by John Finlay and came to me
> MC> via Richard Schroeder who got it from Greg Beeley. John, if you want
> MC> to be credited with your full address or whatever in the Etherboot
> MC> documentation, please contact me (Etherboot maintainer).
>
> MC> 1/18/2000 Marty Connor ([EMAIL PROTECTED]) added code for the 3C905C
> MC> with AT49BV512 Flash memory, and created cromutil and bromutil to
> MC> differentiate the versions.  cromutil is for 3C905C and bromutil is
> MC> for 3C905B.
>
> MC> Be careful. You can easily erase your Flash memory using these
> MC> utilities.  Make *sure* to back them up first using the "read"
> MC> command. You must "erase" before using "prog" to program the chip with
> MC> Etherboot code.  This code comes with NO WARRANTY, and you take sole
> MC> responsibility and liability for whatever it does.  Read the
> MC> "romutil.txt" file for more information on commands.
>
> MC> That being said, if you are programming a 3C905C-TXM (for example)
> MC> you would do something like this:
>
> MC> First, goto rom-o-matic.net and get a .lzrom file for the 3C905C-TPO
> MC> and put it somewhere convenient.
> MC> you might want to name it something easy like:
>
> MC>      $ mv eb-5.0.10-3c905c-tpo.lzrom 3c905.lzrom
>
> MC> or not.
>
> MC> Then go untar etherboot and go the contrib directory
>
> MC>      $ cd etherboot-x.x.x/contrib
> MC>      $ make
>
> MC> The key point is that the IO address needs to be entered - Grab it
> MC> from the dmesg output:
>
> MC> 01:0b.0: 3Com PCI 3c905C Tornado at 0xcc00. Vers LK1.1.18-ac
> MC>   00:01:02:59:03:73, IRQ 10
>
> MC> or "cat /proc/pci" to find the "I/O at XXXXXX" for your 3Com Card.
>
> MC>      # replace 0xcc00 with whatever the IO Addr for your card is!!!!
> MC>      $ ./cromutil 0xcc00 read > 905cbackup.bin
> MC>      $ ./cromutil 0xcc00 erase
> MC>      $ ./cromutil 0xcc00 prog < 3c90x.lzrom
>
> MC> You should now have an Etherboot-enabled 3c905C-TXM.
>
> MC> =============== end of Door Number 1 ==================
>
> MC> ================ Door Number 1A ===============
>
> MC>    - You can also reprogram the Flash EEPROM on the 3C905C using Don
> MC> Becker's ether-diag tools. Here is part of a message Ken forwarded to
> MC> the list a little while ago (it's for the 3C905B, and it's a bit more
> MC> advanced, since you have to download ether-diag code and link
> MC> libraries, but it is a really nice tool):
>
> MC> [Reposted from comp.os.linux.networking. Replies to original author
> MC> whose URL is at the bottom of the page, not me.]
>
> MC> (I'm posting this for people to find later with google, since I
> MC> found precious little on this when I searched)
>
> MC> Finally, after dreading building that EPROM burner for months,
> MC> I succeeded in using Linux and a network card to program a EEPROM.
>
> MC> I tried about a year ago to find a cheap source of
> MC> NIC-programmable EEPROMs, and despite having ATMEL in town,
> MC> didn't find one. Then, about a week ago, I remembered I had some
> MC> just laying around: the BIOS chips in my stack of old motherboards!
> MC> A few minutes of scrounging, and then I had two 32-pin AMI BIOS
> MC> chips: an ATMEL AT29C010A and an SST 29EE010 (32 pin chips, won't
> MC> fit in most of my NICs, anybody got a cheap source of 28-pin EEPROMs?)
>
> MC> I downloaded and compiled the diag-ether tool from:
>
> MC> ftp://www.scyld.com/pub/diag/diag-ether-2.3.tgz
>
> MC> After trying to program these EEPROMs via a Linksys LNE100TX and
> MC> failing, I tried them in my workstation's NIC, a 3Com 3c905B,
> MC> which has a 32 pin socket. Happily, the EEPROMs were recognized
> MC> by this card and the vortex-diag utility.
>
> MC> One of the first things I learned while using this tool to
> MC> program the EEPROM, was to first shut down the interface:
>
> MC> ifconfig eth0 down
>
> MC> before programming the EEPROM (i.e. before using -B, -L or -S)
>
> MC> I viewed the EEPROM contents with "vortex-diag -B|less",
> MC> then saved the original EERPOM contents (in case I needed
> MC> to use the old motherboard again) with
>
> MC> vortex-diag -S filename.bin
>
> MC> Next, I went to www.rom-o-matic.com and downloaded a 5.0.8
> MC> Etherboot ROM image for my Linksys LNE100TX card (which has
> MC> a 32 pin socket also). I then wrote the image to the EEPROM:
>
> MC> vortex-diag -L eb-5.0.8-centaur-p.lzrom
>
> MC> I shut down my box, and moved the programmed EEPROM into the
> MC> Linksys socket, put that card in a test PC, and booted it.
> MC> Came right up into booting off the network! I had previously
> MC> installed LTSP, and have been using floppies to boot my X
> MC> terminals for awhile.
>
> MC> I tried and failed to get bootable EEPROMs with a couple of
> MC> 3c595-TX cards I had laying around. They may have been too
> MC> old to be able to read the EEPROMs, or maybe I was using the
> MC> wrong boot image (although I tried all 3 that were available
> MC> on romomatic).
>
> MC> I did the programming while running the 2.4.20 kernel, on a
> MC> Mandrake 8.2 PC (haven't got around to upgrading to gentoo
> MC> yet). This is the NIC I used for programming:
>
> MC> Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev
> MC> 30)
> MC> Subsystem: 3Com Corporation 3C905B Fast Etherlink XL 10/100
> MC> Flags: bus master, medium devsel, latency 32, IRQ 11
> MC> I/O ports at ec00 [size=128]
> MC> Memory at d9000000 (32-bit, non-prefetchable) [size=128]
> MC> Expansion ROM at <unassigned> [disabled] [size=128K]
> MC> Capabilities: [dc] Power Management version 1
> MC> Class 0200: 10b7:9055 (rev 30)
>
> MC> So far, I've only been able to test this with the 128K EEPROMs
> MC> in the 29XXXXX series, which is a waste since the Etherboot
> MC> image is only 16K. I really need some 28-pin EEPROMs that
> MC> are flash-programming compatible with my 3c905b, but I'm
> MC> not certain if the smaller sizes are compatible, although
> MC> I assume they are:
>
> MC> AT29C256 (32K, 28 pin)
> MC> AT29C512 (64K, 32 pin)
>
> MC> Of course, even if I can find the AT29C256 chips in a DIP
> MC> form factor, I still don't know if they will work in my
> MC> generic, cheap RTL8139 NICs...?
>
> MC> --
> MC> http://www.pcisys.net/~brihall
> MC> Linux Consultant
>
> MC> =============== end of Door Number 1A ==================
>
> MC> ================ Door Number 2 ===============
>
> MC>   - Or, you could use PXELINUX instead of Etherboot to load a kernel
> MC> with the PXE code that is already on your card. Here is a piece of a
> MC> message that I wrote recently to help someone to do that: (you can
> MC> ignore all the USB mouse and keyboard stuff unless you really feel you
> MC> need it, and obviously the most interesting part is the server part for
> MC> you):
>
> MC> CONFIGURING THE XXXXXX BIOS
>
> MC> Go into the BIOS of the XXXXXX by hitting F10 upon power up.
>
> MC> On the "Advanced BIOS Features" screen, Enter "Network" for the "First
> MC> Boot Device" and "Disabled" for the other two.
>
> MC> On the "Integrated Peripherals" screen, Enable the Network Controller,
> MC> USB Controller, USB Keyboard and USB Mouse support.
>
> MC> Exit, saving the BIOS settings changes.
>
> MC> CONFIGURING THE LTSP SERVER
>
> MC> I am assuming your client already has configured an LTSP setup, and
> MC> only needs to add PXELINUX support for one or more thin clients, so I
> MC> will refer to directories normally created and existing during LTSP
> MC> operation.
>
> MC> First download the pxestuff package at:
>
>
> MC> http://prdownloads.sourceforge.net/ltsp/pxestuff-3.0.5-i386.tgz?download
>
> MC> unpack it into a convenient directory with:
>
> MC>      tar -zxvf pxestuff-3.0.5-i386.tgz
>
> MC> This will create a pxestuff directory.
>
> MC> Become root, then move some files around:
>
> MC>      su
>
> MC>      cd pxestuff
> MC>      cp bzImage-2.4.19-ltsp-1 initrd-2.4.19-ltsp-1.gz /tftpboot/lts
> MC>      cp pxelinux.0 /tftpboot/lts
> MC>      mkdir /tftpboot/lts/pxelinux.cfg
> MC>      cp pxelinux.cfg/default /tftpboot/lts/pxelinux.cfg/
>
> MC> Edit your /etc/dhcp.conf file to add your XXXXX host (modify this host
> MC> section for your own particular situation):
>
> MC>      # XXXXXXXX using PXELINUX
> MC>      host ws136 {
> MC>          hardware ethernet     00:0B:CD:6D:80:67;
> MC>          fixed-address         192.168.2.136;
> MC>          filename              "/lts/pxelinux.0";
> MC>      }
>
> MC> Restart your dhcpd daemon with something like:
>
> MC>      /etc/init.d/dhcpd restart
>
> MC> Make sure there is a line in your /etc/hosts file with the IP address
> MC> for ws136:
>
> MC>      192.168.2.136   ws136.in.myveryown.net      ws136
>
> MC> You will need to edit your /opt/ltsp/i386/etc/lts.conf file to add some
> MC> modules for the XXXXX client(s).
> MC> This is because the XXXXX requires a USB keyboard and mouse, and so the
> MC> kernel modules for USB must be loaded in order for these devices to be
> MC> recognized. Here is an example entry for the XXXXX client ws136
> MC> mentioned above:
>
> MC> [ws136]
> MC>       MODULE_01 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/usb/usbcore.o
> MC>       MODULE_02 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/usb/uhci.o
> MC>       MODULE_03 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/input/input.o
> MC>       MODULE_04 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/input/mousedev.o
> MC>       MODULE_05 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/usb/usbmouse.o
> MC>       MODULE_06 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/input/keybdev.o
> MC>       MODULE_07 =
> MC> /opt/ltsp/i386/lib/modules/2.4.19-ltsp-1/kernel/drivers/usb/usbkbd.o
>
> MC>       X_MOUSE_PROTOCOL = "IMPS/2"
> MC>       X_MOUSE_DEVICE   = "/dev/input/mice"
>
> MC> Restart your thin client, and you should be up and running!
>
> MC> ================ End  of Door Number 2 ==================
>
> MC> Or you could use the PXE->Etherboot chaining method, which uses
> MC> /etc/dhcpd.conf entries and Etherboot's .lzpxe format to allow a two
> MC> stage boot. First PXE loads Etherboot, then Etherboot loads the kernel
> MC> (using whatever Etherboot options you may wish to specify).
>
> MC> Here's a message I sent a couple years ago on the subject:
>
> MC> ================= Door Number 3 ===================
>
> MC> From: Marty Connor <[EMAIL PROTECTED]>
> MC> Date: Sun Jul 8, 2001  5:54:00  PM US/Eastern
> MC> To: "Etherboot Users" <[EMAIL PROTECTED]>
> MC> Cc: "Etherboot Developers"
> MC> <[EMAIL PROTECTED]>, "LTSP Discussion List"
> MC> <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>
> MC> Subject: Adventures with Etherboot, DHCP, PXE, and LTSP
>
> MC> Write a driver or play with the PXE stuff... Write a driver or play with
> MC> the PXE stuff...
>
> MC> I was deciding what to do this weekend when in came a message about
> MC> someone trying to use the Etherboot/PXE feature, so I decided I'd look
> MC> at
> MC> that.
>
> MC> What follows is a description of that process.
>
> MC> Executive Summary:
>
> MC> I got it to work.  Two PXE cards (a 3COM and an Intel) with PXE built in
> MC> were able to boot by loading Etherboot and the letting Etherboot do the
> MC> kernel load. Sweet.
>
> MC> If you want to hear the tale, read on.  You're probably used to my
> MC> messages by now ;-)
>
> MC> Background:
>
> MC> Etherboot and PXE are two pieces of software that allow one to boot a
> MC> workstation over a network.  Some other ways exist like Netboot and RPL.
> MC> I mostly understand Etherboot because I like to work with Free Software.
>
> MC> I've got two pristine, fancy, expensive ethernet cards that I use for
> MC> testing:
>
> MC>    - 3COM 3C905C-TXM
> MC>    - Intel EEPRO100+
>
> MC> These cards have flash memory on them, with code that will boot the
> MC> workstation connected to them.  They both have PXE as a boot method.
>
> MC> Now, a while back, we in the Etherboot project had developed the
> MC> technology to reprogram the flash memory on the cards with Etherboot.
>
> MC> For the 3COM card, see:
>
> MC>     http://www.rom-o-matic.net/5.0.2/contrib/3c90xutil/
>
> MC> and for the Intel EEPRO100 see:
>
> MC>     http://www.rom-o-matic.net/5.0.2/contrib/eepro100notes/
>
> MC> There are also motherboards that have PXE flashed in them, like the
> MC> ThinkNIC computer.  Perhaps someday they will have Etherboot as well.
>
> MC> Reflashing cards and BIOSes is not possible sometimes, either for
> MC> technical reasons, or because people want to be able to the original PXE
> MC> code.  It also requires some work inside the case of the computer, and
> MC> we
> MC> don't have tools to reflash all BIOSes.
>
> MC> So, to create a way to use PXE cards and BIOSes without reprogramming
> MC> them, Peter Lister and Vasil Vasilev recently asked the question "Why
> MC> can't PXE code load Etherboot and let Etherboot take over?".  They then
> MC> wrote the code to make it happen, and so now you can build a ".lzpxe"
> MC> image and when your PXE ROM or BIOS loads the file, it will actually be
> MC> starting Etherboot, and you can use your Etherboot environment.
>
> MC> Peter and Vasil rock.
>
> MC> The Goal:
>
> MC> I wanted to boot both cards (3C905C-TXM and EEPRO100) using PXE to load
> MC> Etherboot, and have Etherboot load the kernel and start it.  From there,
> MC> it is up to LTSP or whatever software is handling the session.  Once the
> MC> kernel loads and starts, Etherboot has done its job.
>
> MC> "DHCP for people of reasonable intelligence...
> MC>                 who can't read the documentation" ;-) :
>
> MC> When PXE and Etherboot start running, they are both looking for the same
> MC> thing: A DHCP server.  They need some information, like their IP
> MC> address,
> MC> a name server, the server where they should load a boot file, and the
> MC> path to that file, and various other things.
>
> MC> The thing is, that the DHCP server needs to be able to know if it is PXE
> MC> asking for information, or if it is Etherboot asking.
>
> MC> If it is PXE calling, we should hand it a file name to a ".lzpxe" file,
> MC> which is an Etherboot image wrapped in a form PXE can load.  If however
> MC> it is Etherboot calling, we want to hand it a ".nbi" or network bootable
> MC> image, a linux kernel that has been wrapped using mknbi-linux, or a DOS
> MC> image made with mknbi-dos.  mknbi is available for download on the
> MC> Etherboot download page at:
>
> MC>     http://etherboot.sourceforge.net/distribution.html
>
> MC> Alright, so let's look at the parts we need:
>
> MC>     - DHCP Server
> MC>     - TFTP Server
> MC>     - PXE Ethernet cards
> MC>     - mknbi package
> MC>     - Tagged kernel (prepared with mknbi-linux)
> MC>     - .lzpxe image (from rom-o-matic.net or made with Etherboot v5.0.2 +
> MC> Patches)
>
> MC> The DHCP Server needs to be able to differentiate between PXE Clients
> MC> and
> MC> Etherboot Clients.  I want to keep things simple.  I want to be able to
> MC> say:
>
> MC>    host ws137 {
> MC>        hardware ethernet     00:02:B3:25:45:56;
> MC>        fixed-address         192.168.2.137;
> MC>        if        substring (option vendor-class-identifier, 0, 9) =
> MC> "PXEClient" {
> MC>              filename "/tftpboot/eepro100.lzpxe";
> MC>        } else if substring (option vendor-class-identifier, 0, 9) =
> MC> "Etherboot" {
> MC>            filename "/tftpboot/lts/vmlinuz-test.nbi";
> MC>            option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
> MC>        }
> MC>    }
>
> MC> It turns out that ISC DHCPD version 3
> MC> (http://www.isc.org/products/DHCP/dhcp-v3.html) can do this. Version 2,
> MC> which is what I had on my Progeny Debian machine cannot (at least not
> MC> this way.  If someone knows how to do something like this in v2.x,
> MC> please
> MC> let us know).
>
> MC> So I had to upgrade my DHCPD to v3.0.  I downloaded the package from:
>
> MC>     ftp://ftp.isc.org/isc/dhcp/dhcp-latest.tar.gz
>
> MC> I then enabled root privs and moved the file to /usr/src/local and did:
>
> MC>     mv dhcp-latest.tar.gz dhcp-3.0rc10.tar.gz
>
> MC> I then did:
>
> MC>     tar -zxvf dhcp-3.0rc10.tar.gz
>
> MC> to unpack it.  This gave me a directory called dhcp-3.0rc10 so I did:
>
> MC>     cd dhcp-3.0rc10
> MC>     more README
> MC>     ./configure
> MC>     make
> MC>     make install
>
> MC> This gave me new version of /usr/sbin/dhcpd . I then did
>
> MC>     touch /var/state/dhcp/dhcpd.leases
>
> MC> and
>
> MC>     /etc/init.d/dhcp restart
>
> MC> to start up my new DHCP daemon.  I checked
>
> MC>     /var/log/daemon.log
>
> MC> to make sure everything was alright with the DHCP startup:
>
> MC> Jul  8 15:05:42 ll dhcpd: Internet Software Consortium DHCP Server
> MC> V3.0rc10
> MC> Jul  8 15:05:42 ll dhcpd: Copyright 1995-2001 Internet Software
> MC> Consortium.
> MC> Jul  8 15:05:42 ll dhcpd: All rights reserved.
> MC> Jul  8 15:05:42 ll dhcpd: For info, please visit
> MC> http://www.isc.org/products/DHCP
> MC> Jul  8 15:05:42 ll dhcpd: Wrote 0 deleted host decls to leases file.
> MC> Jul  8 15:05:42 ll dhcpd: Wrote 0 new dynamic host decls to leases file.
> MC> Jul  8 15:05:42 ll dhcpd: Wrote 0 leases to leases file.
> MC> Jul  8 15:05:42 ll dhcpd: Listening on
> MC> LPF/eth0/00:50:ba:77:1d:9f/testingnet
> MC> Jul  8 15:05:42 ll dhcpd: Sending on
> MC> LPF/eth0/00:50:ba:77:1d:9f/testingnet
> MC> Jul  8 15:05:42 ll dhcpd: Sending on   Socket/fallback/fallback-net
>
> MC> Now I needed a new /etc/dhcpd.conf file.  I wanted to make the simplest
> MC> file I could, and not use all the whizzy new features of v3.0.  If I
> MC> could have used v2.x I would have, but I couldn't figure out how to
> MC> cleanly do the conditional (the "if" statement) that I wanted to use.
> MC> So
> MC> I made a very simple /etc/dhcpd.conf file.  Heck, I don't even claim to
> MC> know very much about DHCP.  (why are you reading this? :-)
>
> MC> Here is what my /etc/dhcpd.conf file looks like:
>
> MC> # Configuration file for ISC dhcpd v3.0
>
> MC> not authoritative;
> MC> ddns-update-style             none;             # required for ISC v3.0
>
> MC> shared-network testingnet {
> MC>      subnet 192.168.2.0 netmask 255.255.255.0 {
> MC>      }
> MC> }
>
> MC> group   {
>
> MC>      default-lease-time            21600;
> MC>      max-lease-time                21600;
> MC>      use-host-decl-names           on;
>
> MC>      option domain-name            "thinguin.net";
> MC>      option subnet-mask            255.255.255.0;
> MC>      option broadcast-address      192.168.2.255;
> MC>      option routers                192.168.2.1;
> MC>      option domain-name-servers    192.168.2.56;
> MC>      option log-servers            192.168.2.56;
> MC>      option root-path              "/tftpboot/lts/ltsroot";
>
> MC>      host ws121 {
> MC>          hardware ethernet     00:80:C6:F8:AB:2A;
> MC>          fixed-address         192.168.2.121;
> MC>          filename              "/tftpboot/lts/vmlinuz.all";
> MC>      }
> MC>      host ws136 {
> MC>          hardware ethernet     00:01:02:c1:79:c7;
> MC>          fixed-address         192.168.2.136;
> MC>          if        substring (option vendor-class-identifier, 0, 9) =
> MC> "PXEClient" {
> MC>              filename
> MC> "/tftpboot/eb-5.0.2-mc1-3c905c-tpo.lzpxe";
> MC>          } else if substring (option vendor-class-identifier, 0, 9) =
> MC> "Etherboot" {
> MC>              filename              "/tftpboot/lts/vmlinuz-test.nbi";
> MC>              option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
> MC>          }
> MC>      }
> MC>      host ws137 {
> MC>          hardware ethernet     00:02:B3:25:45:56;
> MC>          fixed-address         192.168.2.137;
> MC>          if        substring (option vendor-class-identifier, 0, 9) =
> MC> "PXEClient" {
> MC>              filename "/tftpboot/eepro100.lzpxe";
> MC>          } else if substring (option vendor-class-identifier, 0, 9) =
> MC> "Etherboot" {
> MC>              filename "/tftpboot/lts/vmlinuz-test.nbi";
> MC>              option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
> MC>          }
> MC>      }
>
> MC> } # group
>
> MC> Let's walk through this, a piece at a time.  This is all explained in
> MC> the
> MC> DHCP documentation, but I'll try to break it down even more for people
> MC> who can't hack that.
>
> MC>    # Configuration file for ISC dhcpd v3.0
> MC>    not authoritative;
>
> MC> The "not authoritative;" line is there because I don't want my DHCP
> MC> server to be giving out information to hosts on my network that it
> MC> doesn't have information for.  Some DHCP clients get confused when a
> MC> DHCP
> MC> server NAKs (say NO!).  If you're setting up a server to serve Etherboot
> MC> clients, and you don't want to interfere with another DHCP server, you
> MC> need to say "not authoritative;"  (even with version 2.x of ISC DHCPD).
> MC> You'll be glad you did.
>
> MC>    ddns-update-style             none;             # required for ISC
> MC> v3.0
>
> MC> This is required for ISC DHCPD v3.0.  It has to do with dynamic DNS
> MC> updates.  If you really care, you can read the documentation.  ddns lets
> MC> you tell your DNS server what a host's address is or what host is at an
> MC> address.  Since my hosts have fixed addresses, I don't worry about this.
> MC> You have to say something, however.
>
> MC>    shared-network testingnet {
> MC>        subnet 192.168.2.0 netmask 255.255.255.0 {
> MC>        }
> MC>    }
>
> MC> This defines the subnet that I'm interested in serving information
> MC> about.
>
> MC>    group   {
>
> MC> The "group" tag just says that I'm going to be talking about some hosts
> MC> who are related in some way.
>
> MC>      default-lease-time            21600;
> MC>      max-lease-time                21600;
>
> MC> These two lines set some parameters for DHCP leases.
>
> MC>      use-host-decl-names           on;
>
> MC> This says to send to the client the name defined by the "host" statement
> MC> as the host's name.  If I didn't include it, I'd have to explicitly put
> MC> a
> MC> statement naming each host in its "host" entry.
>
> MC>      option domain-name            "thinguin.net";
> MC>      option subnet-mask            255.255.255.0;
> MC>      option broadcast-address      192.168.2.255;
> MC>      option routers                192.168.2.1;
> MC>      option domain-name-servers    192.168.2.56;
> MC>      option log-servers            192.168.2.56;
> MC>      option root-path              "/tftpboot/lts/ltsroot";
>
> MC> These are pretty self-explanatory, or you can check the DHCPD doc.
>
> MC> Now the good stuff:
>
> MC>      host ws135 {
> MC>          hardware ethernet     00:a0:cc:a0:e6:5b;
> MC>          fixed-address         192.168.2.135;
> MC>          filename              "/tftpboot/lts/vmlinuz.all";
> MC>      }
>
> MC> This is for a normal ethernet card.  It's a Netgear FA312.  It has no
> MC> PXE, and Etherboot is the only thing that would be asking the DHCP
> MC> server
> MC> about it. Since everything else it needs to know has been defined above
> MC> just under the "group" tag, we just add the three things it needs and
> MC> away it goes.
>
> MC>      host ws136 {
> MC>          hardware ethernet     00:01:02:c1:79:c7;
> MC>          fixed-address         192.168.2.136;
> MC>          if        substring (option vendor-class-identifier, 0, 9) =
> MC> "PXEClient" {
> MC>              filename
> MC> "/tftpboot/eb-5.0.2-mc1-3c905c-tpo.lzpxe";
> MC>          } else if substring (option vendor-class-identifier, 0, 9) =
> MC> "Etherboot" {
> MC>              filename              "/tftpboot/lts/vmlinuz-test.nbi";
> MC>              option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
> MC>          }
> MC>      }
>
> MC> OK, this is what you've been waiting for.  This is for the 3C905C-TXM
> MC> card. It's like the card above, except that it starts up with PXE.  So,
> MC> what we do is to check to see who is calling from this hardware address
> MC> (00:01:02:c1:79:c7).  You see, when PXE starts up, it sends "PXEClient"
> MC> in its DHCP message.  So if we see that, we send back a file name of
> MC> "/tftpboot/eb-5.0.2-mc1-3c905c-tpo.lzpxe", which is an Etherboot image
> MC> that PXE can load.  PXE loads it, and it promptly unloads PXE and gives
> MC> control to Etherboot. (so much of life is bootstrapping, after all :-).
>
> MC> Now, Etherboot starts up, and the first thing it does is to send a DHCP
> MC> request.  In this case, the "else if" part of the conditional gets run,
> MC> and we hand back (among other things):
>
> MC>         filename              "/tftpboot/lts/vmlinuz-test.nbi";
> MC>         option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
>
> MC> The "filename" part is obvious.  That's a Linux kernel.  The next part:
>
> MC>        option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
>
> MC> is not so obvious.
>
> MC> Here's the problem.  What if you have two DHCP servers on the network,
> MC> and you want to make sure that your server is the one that your
> MC> Etherboot
> MC> clients choose.  How do you guarantee that it will reject replies from
> MC> the other DHCP server?
>
> MC> Well, you first set the option: REQUIRE_VCI_ETHERBOOT when you make your
> MC> ".lzpxe" image (or Configure it at rom-o-matic.net).  This tells
> MC> Etherboot to ignore any reply that doesn't contain the VCI (vendor class
> MC> identifier) "Etherboot".  Then you add the line:
>
> MC>        option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
>
> MC> to your "host" entry.  This says "send the VCI 'Etherboot' back to the
> MC> requesting client".  So now you can be pretty sure your client will be
> MC> talking to the right DHCP server.
>
> MC> Put it all together and you get:
>
> MC>      host ws136 {
> MC>          hardware ethernet     00:01:02:c1:79:c7;
> MC>          fixed-address         192.168.2.136;
> MC>          if        substring (option vendor-class-identifier, 0, 9) =
> MC> "PXEClient" {
> MC>              filename
> MC> "/tftpboot/eb-5.0.2-mc1-3c905c-tpo.lzpxe";
> MC>          } else if substring (option vendor-class-identifier, 0, 9) =
> MC> "Etherboot" {
> MC>              filename              "/tftpboot/lts/vmlinuz-test.nbi";
> MC>              option vendor-encapsulated-options
> MC> 3c:09:45:74:68:65:72:62:6f:6f:74:ff;
> MC>          }
> MC>      }
>
> MC> Smoke test:
>
> MC> I put in the 3COM card, set it to do PXE.  Did "/etc/init.d/dhcp
> MC> restart"
> MC> to restart my DHCPD.  and rebooted my workstation.
>
> MC> Here's what I get  [fake screen shot, yes i typed it all in by hand]:
>
> MC> Managed PC Boot Agent (MBA) v4.00
> MC> (C) Copyright 1999 Lanworks Technologies Co. a subsidiary of 3Com
> MC> Corporation
> MC> All rights reserved.
>
> MC> Pre-boot eXecution Environment (PXE) v2.00
> MC> (C) Copyright 1999 Intel Corporation.
> MC> (C) Copyright 1999 Lanworks Technologies Co. a subsidiary of 3Com
> MC> Corporation
> MC> All rights reserved.
>
> MC> DHCP MAC ADDR: 00 01 02 C1 79 C7
> MC> DHCP....
> MC> CLIENT IP: 192.168.2.136  MASK: 255.255.255.0  DHCP IP: 192.168.2.56
> MC> GATEWAY IP: 192.168.2.1
> MC> PXE loader for etherboot(with ZLOADER)
> MC> PXENV+ unloaded
> MC> ROM segment 0x07C0 length 0x3000 reloc 0x9400
> MC> Etherboot 5.0.2 (GPL) Tagged ELF for [3C90X]
> MC> Boot from (N)etwork or from (L)ocal? N
> MC> Found 3Com905C-TXM at 0xDC00, ROM address 0xE300
> MC> Probing...[3C90X]
>
> MC> 3C90X Driver 2.00 Copyright 1999 LightSys Technology Services, Inc.
> MC> Portions Copyright 1999 Steve Smith
> MC> Provided with ABSOLUTELY NO WARRANTY.
> MC> ------------------------------------------------------------------------
> MC> ---
> MC> -------
> MC> MAC Address - 00:01:02:C1:79:C7
> MC> Connectors present: 10Base-T / 100Base-TX.
> MC> Searching for server (DHCP)...
> MC> Me: 192.168.2.136, Server: 192.168.2.56, Gateway 192.168.2.1
> MC> Loading 192.168.2.56:/tftpboot/lts/vmlinuz-test.nbi (NBI)... done
>
> MC> Linux Net Boot Image Loader Version 0.8.1 (netboot)
> MC> Copyright (C) 1996,1997 G. Kuhlmann and M. Gutschke
> MC> Copyright (C) 1995-1998 G. Kuhlmann
>
> MC> Not enough memory
> MC> <abort>
>
> MC> Hmmmmmm, now what could be going on here.  We were doing so well.  PXE
> MC> had started, loaded Etherboot.  Etherboot had taken over.  Etherboot had
> MC> loaded the kernel.  And failed to execute.
>
> MC> Whoa.  It looks like we've got a tagged-image that was tagged with an
> MC> old
> MC> version of mknbi-linux.  It's a tagged-kernel I got from the LTSP site.
> MC> Under normal circumstances Etherboot doesn't seem to care, but
> MC> apparently
> MC> after PXE has been in memory life is more complicated...
>
> MC> What would happen if I took a kernel and tagged it with mknbi-1.2?
> MC> This:
>
> MC> Searching for server (DHCP)...
> MC> Me: 192.168.2.136, Server: 192.168.2.56, Gateway 192.168.2.1
> MC> Loading 192.168.2.56:/tftpboot/lts/vmlinuz-test.nbi (NBI)... done
> MC> mknbi-1.2-2/first32.c (GPL)
> MC> 129792k total memory
> MC> Uncompressing Linux... Ok, booting the kernel
> MC> Linux version 2.2.19 ([EMAIL PROTECTED]) (gcc version 2.95.2 20000220
> MC> (Debian GNU/Linux)) #1 Thu Apr 5 15:18:02 EST 2001
> MC> BIOS-provided physical RAM map:
> MC>   BIOS-e820: 00090000 @ 00000000 (usable)
> MC>   BIOS-e820: 07dc0000 @ 00100000 (usable)
> MC> Detected 564845 kHz processor.
> MC> Console: colour VGA+ 80x25
> MC> Calibrating delay loop... 1127.21 BogoMIPS
> MC> Memory: 126600k/129792k available (1124 kernel code, 472k reserved,
> MC> 1524k
> MC> data, 72k init)
> MC> ........
>
> MC> Sweet.  The Intel EEPRO100+ card worked similarly, which means their PXE
> MC> implementation of PXE seems compatible.  I hope some other people will
> MC> try this and let us know how it works for them.  The DHCP server and the
> MC> mknbi-1.2 requirement seem to be the only tricky parts.  Maybe someone
> MC> will come up with a clever way to do this in v2 of the DHCP server.
>
> MC> So there's one way to use PXE to load Etherboot.  I hope this helps some
> MC> people who want to try this.  Maybe we should put this message in the
> MC> contrib directory for people who need some help getting started with
> MC> this, or maybe we can work it into the documentation for Etherboot.
>
> MC> Marty
>
> MC> =================== End of Door Number 3 ===================
>
> MC> So there you go. Hopefully, this will help you get going. It may also
> MC> help others help you.
> MC> Someday I'll get around to writing it down more coherently, but for
> MC> now, this is what I can do.
>
> MC> Marty
>
> --
> Best regards,
>  Micael                            mailto:[EMAIL PROTECTED]


*
*
*
This message, including any attachments, is intended solely for the use of the named 
recipient(s) and may contain confidential and/or priveleged information.  Any 
unauthorized review, use, disclosure or distribution of this communication(s) is 
expressly prohibited.  If you are not the intended recipient, please contact the 
sender by reply e-mail and destroy any and all copies of the original message.


-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_____________________________________________________________________
Ltsp-discuss mailing list.   To un-subscribe, or change prefs, goto:
      https://lists.sourceforge.net/lists/listinfo/ltsp-discuss
For additional LTSP help,   try #ltsp channel on irc.freenode.net

Reply via email to