Skip site navigation (1)Skip section navigation (2)
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>