[ipxe-devel] building for use virtualbox

Warren Turkal wt at ooyala.com
Mon Jan 28 18:46:40 UTC 2013


I've added the following to config/local/general.h:
#undef PRODUCT_NAME
#define PRODUCT_NAME "WT"       /* So that I'll know it's loading */
#undef  DOWNLOAD_PROTO_TFTP     /* Trivial File Transfer Protocol */
#undef  PXE_MENU                /* PXE menu booting */
#undef  CRYPTO_80211_WEP        /* WEP encryption (deprecated and
insecure!) */
#undef  CRYPTO_80211_WPA        /* WPA Personal, authenticating with
passphrase */
#undef  CRYPTO_80211_WPA2       /* Add support for stronger WPA
cryptography */
#undef  IWMGMT_CMD              /* Wireless interface management commands */
#undef  FCMGMT_CMD              /* Fibre Channel management commands */
#undef  SANBOOT_CMD             /* SAN boot commands */

The ISCSI stuff appears to be disabled by default in config/general.h.
Here's the sized of the virtio-net.rom and the 8086100e.rom files:
$ du -b bin/8086100e.rom bin/virtio-net.rom
62464 bin/8086100e.rom
61952 bin/virtio-net.rom

These still aren't small enough (57344 bytes according to Klaus). I guess
it just isn't possible to get them small enough while retaining HTTP
support.

And here's even a build undefing DOWNLOAD_PROTO_TFTP on top of the above
config:
$ du -b bin/8086100e.rom bin/virtio-net.rom
59904 bin/8086100e.rom
58880 bin/virtio-net.rom

So it looks like something else big might be hiding in there somewhere.

Also, they build to the same sizes if I undef NET_PROTO_IPV4 on top of the
no-HTTP config above, so it looks like that config option might not make
any difference. Is that expected?

BTW, I am doing "make clean && make bin/8086100e.rom bin/virtio-net.rom"
for each of these builds.

wt


On Mon, Jan 28, 2013 at 10:12 AM, Steve Cross
<hairlesshobo at stevecross.org>wrote:

> From what I've read online, the easiest way to shrink the size of the
> final binary is to remote iSCSI support - assuming that you don't need it.
> If iSCSI/SAN is not something that you are planning to use inside of
> VirtualBox, then you could remove support for that and it should make it
> small enough to load into VirtualBox.
>
> -Steve
>
>
> On Mon, Jan 28, 2013 at 1:08 PM, Warren Turkal <wt at ooyala.com> wrote:
>
>> I'm not really sure at this point. Robin's comment sent me on a hunt. I
>> found the following in the logs:
>> DevPcBios: Failed to open LAN boot ROM file '/Users/wt/VirtualBox
>> VMs/8086100e.rom', rc=VERR_TOO_MUCH_DATA!
>>
>> So, I guess it isn't loading my ipxe rom. I'll see if I can figure out
>> how to cut it down to the needed size (apparently needs to be <58K). Does
>> anyone have any suggestions for how to trim the size without removing http
>> support?
>>
>> Thanks,
>> wt
>>
>>
>> On Sat, Jan 26, 2013 at 4:29 AM, Thomas Miletich <
>> thomas.miletich at gmail.com> wrote:
>>
>>> On Fri, Jan 25, 2013 at 7:33 PM, Warren Turkal <wt at ooyala.com> wrote:
>>> >
>>> > I am definitely getting the iPXE as it has splash screen like the one
>>> Andrew linked. Also, I can hit ctrl-b and exec ipxe commands, which is not
>>> possible with the built-in PXE. What isn't working is the HTTP protocol
>>> support.
>>> >
>>> > Also, my config/local/general.h is empty, so I don't think it's
>>> overriding anything.
>>> >
>>> > Here's another datapoint:
>>> > $ grep http 8086100e.rom.tmp.map  | head -n2
>>> > bin/blib.a(http.o)            bin/blib.a(config.o) (obj_http)
>>> > bin/blib.a(httpcore.o)        bin/blib.a(http.o) (http_open_filter)
>>> >
>>> > The 8086100e.rom.tmp also has evidence of http. So, it looks like some
>>> http code has made it that far...I just can't use it. I don't know if it's
>>> just being stripped from the final rom binary, but there is no instace of
>>> http outside of a couple web addresses in 8086100e.rom. See the following:
>>> > $ strings 8086100e.rom | grep -i http
>>> > http://ipxe.org
>>> > iPXE (http://ipxe.org)
>>> > $ strings 8086100e.rom.tmp | grep -i http
>>> > http://ipxe.org
>>> > iPXE (http://ipxe.org)
>>> > [36mhttp://ipxe.org
>>> > See http://ipxe.org/cmd/%s for further information
>>> > http
>>> > %s (http://ipxe.org/%08x)
>>> > Error %#08x (http://ipxe.org/%08x)
>>> > http://ipxe.org/cfg/%s
>>> >
>>> > Why does the 8086100e.rom not have as many "http"-containing strings?
>>>
>>> The .rom image is compressed, the .rom.tmp isn't. So you won't be able
>>> to identify strings in the .rom image. If you can find them in the
>>> corresponding .rom.tmp image it should be fine.
>>>
>>> Are you really sure you're loading the correct image?
>>>
>>> > Thanks,
>>> > wt
>>> >
>>> >
>>> > On Thu, Jan 24, 2013 at 9:09 AM, Andrew Bobulsky <rulerof at gmail.com>
>>> wrote:
>>> >>
>>> >> On Wed, Jan 23, 2013 at 4:16 PM, Warren Turkal <wt at ooyala.com> wrote:
>>> >>>
>>> >>> iPXE devs,
>>> >>>
>>> >>> I have successfully built ipxe and used it in virtualbox much like
>>> the instructions here. However, when I do the "make bin/8086100e.rom", the
>>> rom image does not appear to contain the HTTP support code as I cannot use
>>> http urls in the ipxe shell after boot and hitting ctrl-b. Commands like
>>> with "imgfetch http://192.0.0.1/blah.img" fail with the following error:
>>> >>>
>>> >>> Could not start download: Operation not supported (
>>> http://ipxe.org/3c092003)
>>> >>>
>>> >>> The HTTP code does appear to be built by default since I see
>>> "#define DOWNLOAD_PROTO_HTTP" in the general.h. I also see the following:
>>> >>>
>>> >>> $ grep -i http bin/8086100e.rom
>>> >>> Binary file bin/8086100e.rom matches
>>> >>>
>>> >>> However, I do see "TFTP" and do not see "HTTP" in the "Features:"
>>> line of iPXE that shows before the prompt.
>>> >>>
>>> >>> I am using the tip of master for this test. The commit id is
>>> "3fcb8cf8dceb45f8b01e1d69d43cfd99df43b78a".
>>> >>>
>>> >>> Is there anything else that I should be doing to enable HTTP support
>>> in the iPXE rom that I am building.
>>> >>>
>>> >>> Thanks,
>>> >>> wt
>>> >>> --
>>> >>> Warren Turkal
>>> >>> Site Reliability Engineer |
>>> >>> wt at ooyala.com | 650-961-3400
>>> >>> www.ooyala.com | blog | @ooyala
>>> >>>
>>> >>> _______________________________________________
>>> >>> ipxe-devel mailing list
>>> >>> ipxe-devel at lists.ipxe.org
>>> >>> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
>>> >>
>>> >>
>>> >> Hello Warren,
>>> >>
>>> >> If you are indeed having build-related problems, I wouldn't be able
>>> to help you much, but I wanted to write as I've experienced this before.
>>>  Virtualbox includes a version of iPXE that has very limited protocol
>>> support, and it is the default PXE ROM in every vbox VM I have used.  If,
>>> for some reason, your attempt to inject the ROM into your Virtualbox VM's
>>> configuration didn't work, it would load the built-in version instead, and
>>> while you'd be loading iPXE (which would look like a successful
>>> implementation, but of course is just the old, built-in ROM loading).  That
>>> built-in iPXE splash screen looks like this:
>>> http://i.imgur.com/gfVjURG.png
>>> >>
>>> >> If you like, the only test I could suggest that might shed some light
>>> on whether or not your features are being included in the build, you can
>>> instead...
>>> >>
>>> >> $ make bin/8086100e.pxe
>>> >>
>>> >> ...and then chainload *that* file from a TFTP server using the iPXE
>>> inside of your VM, and check to see if your features work.  If they do,
>>> it's quite likely you just need some updated guide on how to replace your
>>> VirtualBox NIC's ROM.
>>> >>
>>> >> Cheers,
>>> >> Andrew Bobulsky
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > Warren Turkal
>>> > Site Reliability Engineer |
>>> > wt at ooyala.com | 650-961-3400
>>> > www.ooyala.com | blog | @ooyala
>>> >
>>> > _______________________________________________
>>> > ipxe-devel mailing list
>>> > ipxe-devel at lists.ipxe.org
>>> > https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
>>> >
>>>
>>
>>
>>
>> --
>> *Warren Turkal*
>> Site Reliability Engineer |
>> wt at ooyala.com | 650-961-3400
>> www.ooyala.com | blog <http://www.ooyala.com/blog> | @ooyala<http://www.twitter.com/ooyala>
>>
>> _______________________________________________
>> ipxe-devel mailing list
>> ipxe-devel at lists.ipxe.org
>> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
>>
>>
>


-- 
*Warren Turkal*
Site Reliability Engineer |
wt at ooyala.com | 650-961-3400
www.ooyala.com | blog <http://www.ooyala.com/blog> |
@ooyala<http://www.twitter.com/ooyala>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20130128/6c4c83db/attachment.htm>


More information about the ipxe-devel mailing list