From owner-freebsd-hackers@FreeBSD.ORG Thu Sep 4 15:56:02 2014 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 63E1C2D7 for ; Thu, 4 Sep 2014 15:56:02 +0000 (UTC) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3C2B31CEB for ; Thu, 4 Sep 2014 15:56:02 +0000 (UTC) Received: from ralph.baldwin.cx (pool-173-70-85-31.nwrknj.fios.verizon.net [173.70.85.31]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 2F80DB95E; Thu, 4 Sep 2014 11:56:01 -0400 (EDT) From: John Baldwin To: "Sinha, Prokash" Subject: Re: PXE boot Date: Thu, 04 Sep 2014 10:57:56 -0400 Message-ID: <8193889.CqHK0JhjBu@ralph.baldwin.cx> User-Agent: KMail/4.10.5 (FreeBSD/10.0-STABLE; KDE/4.10.5; amd64; ; ) In-Reply-To: References: <1641492.zXWdUoX4Sh@ralph.baldwin.cx> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Thu, 04 Sep 2014 11:56:01 -0400 (EDT) Cc: "freebsd-hackers@freebsd.org" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Sep 2014 15:56:02 -0000 On Wednesday, September 03, 2014 11:16:05 PM Sinha, Prokash wrote: > Thanks much, John ! >=20 > When it starts executing ? How ?. Who starts executing these. From th= e > Makefile it's org is 0x7c00. So I would assume that it would be loade= d 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 =C5= =A0 time. >=20 > We are using a net boot server, and I see mountd- authenticated =C5=A0= message > storm on the boot server side. >=20 > Wondering what could cause such a message storm, while pxe_open() -> = net > if_open( ) executes. The PXE BIOS uses TFTP to fetch the pxeboot binary (and it will do its = own=20 DHCP, etc. as part of doing that). It writes the binary it downloads s= tarting=20 at address 0x7c00. Once the download is complete, it jumps to 0x7c00 s= imilar=20 to how booting from a disk loads the first sector at address 0x7c00 and= then=20 jumps to it. The PXE calls in libi386 should not be invoked until the loader main() = routine=20 runs: /* * Special handling for PXE and CD booting. */ if (kargs->bootinfo =3D=3D 0) { =09/* =09 * We only want the PXE disk to try to init itself in the below =09 * walk through devsw if we actually booted off of PXE. =09 */ =09if (kargs->bootflags & KARGS_FLAGS_PXE) =09 pxe_enable(kargs->pxeinfo ? PTOV(kargs->pxeinfo) : NULL); =09else if (kargs->bootflags & KARGS_FLAGS_CD) =09 bc_add(initial_bootdev); } That enables the PXE devsw driver so that it will do something later wh= en=20 main() calls all the devsw init routines: /* * March through the device switch probing for things. */ for (i =3D 0; devsw[i] !=3D NULL; i++) =09if (devsw[i]->dv_init !=3D NULL) =09 (devsw[i]->dv_init)(); printf("BIOS %dkB/%dkB available memory\n", bios_basemem / 1024,=20= bios_extmem / 1024); --=20 John Baldwin