PXE boot

Sinha, Prokash psinha at panasas.com
Thu Sep 4 09:03:25 UTC 2014


Thanks much, John !

When it starts executing ? How ?. Who starts executing these. From the
Makefile it's org is 0x7c00. So I would assume that it would be loaded at
that absolute real-mode address !. I don't understand this part. But, if I
put traces, I see pxe_open, and pxe_close are being called, but after all
these pxe_calls are done, the loader's main is invoked at Rebooting Š time.

We are using a net boot server, and I see mountd- authenticated Š message
storm on the boot server side.

Wondering what could cause such a message storm, while pxe_open() -> net
if_open( ) executes.

-prokash 

On 9/3/14 2:03 PM, "John Baldwin" <jhb at freebsd.org> wrote:

>On Wednesday, September 03, 2014 04:12:01 PM Sinha, Prokash wrote:
>> Hi All,
>> 
>> I'm trying to understand the invocation of the routines pxe_init();
>> pxe_open()   etc.  in pxe.c
>> 
>> By the structure, it looks like a driver with devsw_pxedisk = { entry
>>points
>> Š}
>> 
>> Once this pxeldr is brought down from the net boot server, how does it
>>get
>> invoked ( or rather who calls these routines ) ??? The loader ( strapped
>> with it don't seem to call).
>> 
>> I assume that the the boot code in the NVRAM ( or wherever ) of the NIC
>>that
>> supports calls these pxe_* () functions ???
>
>pxeboot is pxeldr + /boot/loader.  The firmware (BIOS or EFI) downloads
>the 
>pxeboot binary to a known fixed address and starts executing it.  When it
>starts executing, pxeldr finds the /boot/loader binary "behind" it and
>arranges for it to run.  It passes a flag telling it that it was booted
>via 
>PXE.  The loader then uses the routines in pxe.c to talk to firmware on
>the 
>NIC.  The firmware provides both TFTP and UDP interfaces.  The loader
>uses 
>those to provide either a TFTP "filesystem" or to mount an NFS filesystem
>over 
>UDP.
>
>-- 
>John Baldwin



More information about the freebsd-hackers mailing list