This refreshes the ipxe build makefile to build an image
that works in both legacy BIOS and UEFI environments.
This makes the following changes:
- Moves the ipxe submodule commit to current master
- Creates an EFI partition efi.img containing ipxe.efi
as the default binary
- Builds ipxe-boot.img as an MBR/GPT hybrid ISO which boots
and runs iPXE in both legacy BIOS and UEFI environments
- Stop creating ipxe-boot.qcow2 since the conversion from
ipxe-boot.img has an incorrect EFI partition, and there is
no real benefit over the raw image anyway
- Refresh the documentation for how to upload the images to
an OpenStack cloud, remove the redundancy from ipxe/README
Change-Id: I720ed5aaa0d55ded73e01aaba9db66602adc26cd
The current implementation will only try an iPXE
boot from eth0. This patch sets it to try all
interfaces up to 10 attempts, then reboots and
starts again.
Change-Id: I9259a275f5f1f248905755ec5955ace5b67fc2bd
Perl is not required, so it's removed from the list. Package
syslinux-nonlinux is added to the list because when it's missing, the
build suffers this non-fatal error:
genisoimage: Uh oh, I cant find the boot image 'isolinux.bin' !
Also, the list is now sorted alphabetically :).
Change-Id: Ib52365e5e962adc471bef0fd8a1a2d536ee8d835
IPXE boot frequently hangs during introspection on upshift downloading
agent.kernel and/or agent.ramdisk because our virtualised network has a
smaller MTU than the default of 1500, and the introspection dhcp server
doesn't provide it explicitly. This is a hack to work round this until a
proper fix lands for bug 1845487, and it's backported everywhere we need
it. We should eventually aim to revert it.
Related-Bug: 1845487
Change-Id: I5efeaba8f4184c4a51575a3fb29804fd744d13b9
Prior to embedding the iPXE script that does retries
the default would prompt the user to press Ctrl-B to
open the iPXE shell.
This change updates the embedded script to add the
Ctrl-B prompt.
Change-Id: Ic185cdceee50b38dea4f6815f1f2217b0586f365
IPXE's build process already creates bootable images, so we just use one of
those. This builds much faster, has far fewer dependencies, and produces
a much smaller image. The largest difference in output is that the
resulting image no longer uses grub, but as we weren't using any
features of grub this also means a faster boot time.
For reference, a full build takes 62 seconds on my laptop. The new
Makefile also handles dependencies much better so, for example, an
incremental rebuild after changing the embedded script takes under 3
seconds.
The ipxe repo changes to being a submodule, which continues to allow us
to pin it to a specific commit.
We no longer build the -41 image, as that was oddly specific to some
undescribed use-case. It's also trivial for whoever needed it to do
themselves if the use case is still relevant.
Change-Id: I5a6a990e6966d6eeaa2aa87cd89bfbac6738f6ee
Currently when the iPXE boot fails, the machine halts and requires
manual intervention to retry. In some environments when machine
boots, but the network is not yet ready to receive the DHCP request
on time. Sometimes when DHCP is ready, the filename option is not
present because the back-end service is not yet ready to provide it.
Then also sometimes the option is there, but it fails.
This patch implements a script which will do ten attempts to get
DHCP and the filename option before failing. When it fails, it will
then reboot the machine. The purpose of this is to maximise the chances
of succeeding the iPXE boot.
A small change to the element deps is also made to ensure that a boot
partition is created. This is necessary due to changes in
diskimage-builder.
Finally, the git SHA is updated in the make file to the current HEAD
to ensure that the image built is current.
Change-Id: Iccef8ff21b64f20f4a185c654c0308478eecfb4a
This image can be used as the base for baremetal instances with a
flavor that has a disk size of 0, which means the image's virtual
size will be used as the base disk size.
The original image is left unchanged so it can still be used for
instances where a disk size of less than 41 GB is desired.