Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Sep 2014 16:33:46 +0000
From:      "Sinha, Prokash" <psinha@panasas.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: PXE boot
Message-ID:  <D02DE270.18AA%psinha@panasas.com>
In-Reply-To: <D02DE132.18A0%psinha@panasas.com>
References:  <D02C8BE1.179F%psinha@panasas.com> <1641492.zXWdUoX4Sh@ralph.baldwin.cx> <D02CE8DA.17D2%psinha@panasas.com> <8193889.CqHK0JhjBu@ralph.baldwin.cx> <D02DE132.18A0%psinha@panasas.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On 9/4/14 9:31 AM, "Sinha, Prokash" <psinha@panasas.com> wrote:

>Thanks once again...
>
>This is the part - that you spelled out is why I had a trace in the
>pxe_enable(...) routine. As well as at pxe_init( ...) routine, just to be
>sure
>the pxe.c routines are working like ( as you said ) devsw invocation. But
>did not see the trace messages, could be serial console is not acting (
>though I doubt it).
>
>Now gave me a base, off of what I could debug ...
>
>-prokash
>
>On 9/4/14 7:57 AM, "John Baldwin" <jhb@freebsd.org> wrote:
>
>>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 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 =A9
>>>time.
>>>=20
>>> We are using a net boot server, and I see mountd- authenticated =A9
>>>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
>>starting=20
>>at address 0x7c00.  Once the download is complete, it jumps to 0x7c00
>>similar=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) {
>>	/*
>>	 * We only want the PXE disk to try to init itself in the below
>>	 * walk through devsw if we actually booted off of PXE.
>>	 */
>>	if (kargs->bootflags & KARGS_FLAGS_PXE)
>>	    pxe_enable(kargs->pxeinfo ? PTOV(kargs->pxeinfo) : NULL);
>>	else if (kargs->bootflags & KARGS_FLAGS_CD)
>>	    bc_add(initial_bootdev);
>>    }
>>
>>That enables the PXE devsw driver so that it will do something later when
>>main() calls all the devsw init routines:
>>
>>    /*
>>     * March through the device switch probing for things.
>>     */
>>    for (i =3D 0; devsw[i] !=3D NULL; i++)
>>	if (devsw[i]->dv_init !=3D NULL)
>>	    (devsw[i]->dv_init)();
>>    printf("BIOS %dkB/%dkB available memory\n", bios_basemem / 1024,
>>bios_extmem / 1024);
>>
>>--=20
>>John Baldwin
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D02DE270.18AA%psinha>