<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Sean,<div class=""><br class=""></div><div class="">Yes, iPXE could be one-to-rule-them-all replacement, because of HTTP, IPv6 and UEFI support.</div><div class=""><br class=""></div><div class="">lpxelinux is good, but for one-line enhancements.</div><div class=""><br class=""><div class="">
<div class="">-- <br class="">With best regards,<br class="">Vladimir Eremin,<br class="">Fuel Deployment Engineer,<br class="">Mirantis, Inc.</div><br class=""><br class="Apple-interchange-newline">

</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Nov 13, 2015, at 6:17 PM, Sean Collins <<a href="mailto:scollins@mirantis.com" class="">scollins@mirantis.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Excellent info, thanks.<br class=""><br class=""></div>Do you think long term iPXE is the way to go? IPv6 support would be a big motivation - but it sounds like it would take some work to accomplish.<br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Nov 13, 2015 at 10:02 AM, Vladimir Eremin <span dir="ltr" class=""><<a href="mailto:veremin@mirantis.com" target="_blank" class="">veremin@mirantis.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Forgot about tags, sorry.<br class="">
<span class="im HOEnZb"><br class="">
--<br class="">
With best regards,<br class="">
Vladimir Eremin,<br class="">
Fuel Deployment Engineer,<br class="">
Mirantis, Inc.<br class="">
<br class="">
<br class="">
<br class="">
</span><div class="HOEnZb"><div class="h5">> On Nov 13, 2015, at 5:13 PM, Vladimir Eremin <<a href="mailto:veremin@mirantis.com" class="">veremin@mirantis.com</a>> wrote:<br class="">
><br class="">
> Hi folks,<br class="">
><br class="">
> As you know, to speed up provisioning stage we could use HTTP for downloading kernel and initramfs. There are 3 options to do this: lpxelinux, iPXE (which is successor/fork of gPXE) and GRUB 2, which we were assessed during my work in Yandex and I’d like to share some experience.<br class="">
><br class="">
> In this note I leave UEFI/iPXE embedding for IPv6 out of scope. Yandex has chosen with iPXE embedding mostly because it’s well-known already and there was less problem to embed iPXE to custom-build hardware than mess with UEFI.<br class="">
><br class="">
> lpxelinux is a HTTP/FTP enabled variant of usual pxelinux (since syslinux 5.10), so it’s required no chainloading (so no mess with DHCP-server) and no boot config re-design. To provide HTTP URI instead of TFTP, two variants may be used:<br class="">
><br class="">
> * replace entries in boot config like LINUX from relative path like boot/mykernel to absolute URL like <a href="http://boot-server/boot/mykernel" rel="noreferrer" target="_blank" class="">http://boot-server/boot/mykernel</a><br class="">
> * provide pxelinux.pathprefix DHCP option [1] contains URL prefix like <a href="http://boot-server/" rel="noreferrer" target="_blank" class="">http://boot-server/</a><br class="">
><br class="">
> This is most convenient variant to speed up pxelinux setup. Unfortunately, lpxelinux hasn't built for Ubuntu Trusty, so it should be rebuilt from Debian Sid.<br class="">
><br class="">
><br class="">
> iPXE is advanced boot loader with many features like IPv6, HTTP and scripting language. Actually, it allows to pass hardware-related information to provisioning server.<br class="">
><br class="">
> Boot script should be compiled into iPXE, or you will need to set up your DHCP-server [2] to serve different options for different loaders. This option will require to re-write provisioning logic.<br class="">
> It also support UEFI, so it could be used for IPv6 provisioning.<br class="">
><br class="">
> I recommend this variant for advanced IPv6 + HTTP provisioning.<br class="">
><br class="">
><br class="">
> GRUB2 is most advanced option. Unfortunately, it’s still has a bug with IPv6 [3], so there is no point to overcomplicate the setup.<br class="">
><br class="">
><br class="">
> Note that UNDI API is provided correctly by most of modern NIC’s. However, some cards like Mellanox ConnectX and weird Intels is not working correctly. To fix it, iPXE could be built with vendor-specific driver [4]. There is no workaround for lpxelinux.<br class="">
><br class="">
> [1] <a href="http://www.syslinux.org/wiki/index.php/PXELINUX#DHCP_options" rel="noreferrer" target="_blank" class="">http://www.syslinux.org/wiki/index.php/PXELINUX#DHCP_options</a><br class="">
> [2] <a href="http://ipxe.org/howto/chainloading" rel="noreferrer" target="_blank" class="">http://ipxe.org/howto/chainloading</a><br class="">
> [3] <a href="https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1229458" rel="noreferrer" target="_blank" class="">https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1229458</a><br class="">
> [4] <a href="http://ipxe.org/appnote/hardware_drivers" rel="noreferrer" target="_blank" class="">http://ipxe.org/appnote/hardware_drivers</a><br class="">
><br class="">
> --<br class="">
> With best regards,<br class="">
> Vladimir Eremin,<br class="">
> Fuel Deployment Engineer,<br class="">
> Mirantis, Inc.<br class="">
><br class="">
><br class="">
><br class="">
<br class="">
</div></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>