Reyk Floeter wrote:
hi!

On Mon, Jun 25, 2007 at 11:50:03AM +0200, Heinrich Rebehn wrote:
I have successfully set up a client for diskless(8) booting.
However, this works only when booting from the first (onboard) nic.
When i use another nic, the kernel still tries to do revarp from the first nic, which fails.

sys/nfs/nfs_boot.c offers a possibility to override the default search:

/*
* Find a network interface.
*/
if (nfsbootdevname)
    ifp = ifunit(nfsbootdevname);
else <search loop>
...

but where/how can i set nfsbootdevname?

The boot.conf(8) manpage talks about passing options to the kernel via "set howto". Could i use that?


you cannot set the nfsbootdevname as a kernel option. it is filled in
by autoconf. for example, pxeboot passes the mac address of its boot
interface and autoconf looks up the matching network interface in

sys/arch/i386/i386/autoconf.c

---snip---
#if defined(NFSCLIENT)
        if (bios_bootmac) {
                extern char *nfsbootdevname;
                struct ifnet *ifp;
mountroot = nfs_mountroot;

                printf("PXE boot MAC address %s, ",
                    ether_sprintf(bios_bootmac->mac));

                for (ifp = TAILQ_FIRST(&ifnet); ifp != NULL;
                    ifp = TAILQ_NEXT(ifp, if_list)) {
                        if ((ifp->if_type == IFT_ETHER ||
                            ifp->if_type == IFT_FDDI) &&
                            bcmp(bios_bootmac->mac,
                            ((struct arpcom *)ifp)->ac_enaddr,
                            ETHER_ADDR_LEN) == 0)
                                break;
                }
                if (ifp) {
                        nfsbootdevname = ifp->if_xname;
                        printf("interface %s\n", nfsbootdevname);
                } else
                        printf("no interface selected\n");
                return;
        }
#endif
---snap---

reyk

Hmm, at least in my case this does not seem to work.
I have not much C experience, but should nfsbootdevname not be declared "extern" in sys/nfs/nfs_boot.c as well?

--Heinrich

Reply via email to