-1

We administer a small data-center and so far we were using netboot to run our images. The problem is that the system lives in RAM, and at the moment we need that extra space for our software to use.

We looked at xCat, but our image is a newer Ubuntu, which lacks proper support. There's also Warewulf, which does not allow writing the image to disk. iPXE also lacks support for writing the downloaded image to disk.

All solutions that we found download an installer image, which requires a reboot, and would trap us in a loop.

We also found this question that is similar and could be adapted (we prefer a ready-to-use solution): using Linux as a bootloader?

Is there a solution for this? Any tiny bootloader that can be iPXE-loaded to flash-and-boot the final network image?

5
  • 1
    "iPXE also lacks support for writing the downloaded image to disk." That's not true at all. iPXE is just a boot loader; it loads something over the network and runs it. You could have it run a kernel and minimal initrd environment that would fetch an image via http and write it to disk.
    – larsks
    Commented Jul 11 at 0:28
  • Thanks @larsks, we came across this option, but we were first looking for a ready-to-use solution before investing time to put the pieces together (and maintain) ourselves.
    – Caian
    Commented Jul 11 at 9:12
  • Also, @larsks could elaborate a little further on your solution? As I understand, booting this minimal kernel would later require a reboot, which we stated we can't do.
    – Caian
    Commented Jul 11 at 9:25
  • You could use kexec to avoid a reboot, or possibly just boot from the initrd directly into the freshly provisioned image.
    – larsks
    Commented Jul 11 at 13:44
  • I'm not aware of a pre-existing solution that does exactly this. There are a variety of tools that solve the "pxe boot and provision a local disk by copying an image over the network" part of the problem, but most of those will probably reboot the host in order to boot the provisioned image.
    – larsks
    Commented Jul 11 at 13:56

1 Answer 1

0

iPXE is a boot loader which you can use to boot from network. It has powerful capabilities and you can script it to fit your requirement. Below is the example of booting a CentOS 8 installer configuration for iPXE.

#!ipxe

set protocol http
set server_ip 192.168.1.1
set httpboot http://${server_ip}
set tftpboot tftp://${server_ip}

:menu
menu iPXE boot menu
item centos81 Install CentOS 8.1 x64
choose os
goto ${os}

:centos81
echo Booting CentOS 8.1 Installer
set root-path ${httpboot}
kernel ${root-path}/c8/images/pxeboot/vmlinuz initrd=initrd.img ip=dhcp inst.repo=http://192.168.1.1/c8 devfs=nomount
initrd ${root-path}/c8/images/pxeboot/initrd.img initrd.img
boot || read void

References:

1
  • Where in this script the image is written to disk, as per requirement?
    – Caian
    Commented Jul 11 at 9:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .