Date: Wed, 03 Sep 2014 17:03:44 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-hackers@freebsd.org Cc: "Sinha, Prokash" <psinha@panasas.com> Subject: Re: PXE boot Message-ID: <1641492.zXWdUoX4Sh@ralph.baldwin.cx> In-Reply-To: <D02C8BE1.179F%psinha@panasas.com> References: <D02C8BE1.179F%psinha@panasas.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, September 03, 2014 04:12:01 PM Sinha, Prokash wrote: > Hi All, >=20 > I'm trying to understand the invocation of the routines pxe_init(); > pxe_open() etc. in pxe.c >=20 > By the structure, it looks like a driver with devsw_pxedisk =3D { ent= ry points > =E2=80=A6} >=20 > Once this pxeldr is brought down from the net boot server, how does i= t get > invoked ( or rather who calls these routines ) ??? The loader ( strap= ped > with it don't seem to call). >=20 > I assume that the the boot code in the NVRAM ( or wherever ) of the N= IC that > supports calls these pxe_* () functions ??? pxeboot is pxeldr + /boot/loader. The firmware (BIOS or EFI) downloads= the=20 pxeboot binary to a known fixed address and starts executing it. When = it=20 starts executing, pxeldr finds the /boot/loader binary "behind" it and=20= arranges for it to run. It passes a flag telling it that it was booted= via=20 PXE. The loader then uses the routines in pxe.c to talk to firmware on= the=20 NIC. The firmware provides both TFTP and UDP interfaces. The loader u= ses=20 those to provide either a TFTP "filesystem" or to mount an NFS filesyst= em over=20 UDP. --=20 John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1641492.zXWdUoX4Sh>