IBM Cloud Docs
Network booting your own operating system with Bare Metal Servers on VPC

Network booting your own operating system with Bare Metal Servers on VPC

Beta

Network booting your operating system on a bare metal server is a beta feature that is available to select customers for evaluation and testing purposes. To request to be included in the evaluation of this beta feature, contact IBM Support.

When you create a bare metal server on IBM Cloud® Virtual Private Cloud (VPC), you can select to network boot an operating system over the network. The operating system image can be hosted on your own server or on a public server. You can install the booted operating system to a disk or you can run the operating system without a disk.

Before you use the network boot option, you must make sure that your server's security groups allow the server to access any remote iPXE script and either your target operating system's remote image or installation files.

Use security best practices to limit access to any files that you expose on the internet.

When you create a bare metal server on IBM Cloud VPC, the user data that you provide determines what operating system boots. The user data must contain either a single URL that points to a remotely hosted iPXE script or the text of an iPXE script (including a first line of #!ipxe.) For more information about creating iPXE scripts, see iPXE - open source boot firmware.

Network booting your own operating system with Bare Metal Servers on VPC by using the UI

To network boot a bare metal server from the UI, use the following steps.

  1. In the IBM Cloud console, go to Navigation Menu icon menu icon > VPC Infrastructure VPC icon > Compute > Bare metal servers.
  2. Click Create.
  3. In the Image and profile section, click the Network boot tab.
  4. Either copy and paste the IPXE script into the text box or you can import the IPXE script.
  5. Review the configuration Summary and click Create bare metal server.
  6. Verify that your server's Security Group allows egress to the server that is hosting your network boot artifacts.
  7. Verify that your subnet gateway is configured to allow network routing to the server that hosts your network boot artifacts.

For connecting to servers that use HTTPS, the iPXE image recognizes server certificates that are signed by common public certificate authorities. Verify the server that is hosting the network boot artifacts presents such a certificate. Otherwise, you might see a Permission denied error.

Network booting your own operating system with Bare Metal Servers on VPC by using the CLI

To network boot a bare metal server from the CLI, use the following information when you create your bare metal server.

For the image, you must specify the ID of a stock image that has the user_data_format property that is set to ipxe in the region where you want to create the server and provide the appropriate user data. For more information, see Creating Bare Metal Servers on VPC and User data.

Network booting your own operating system with Bare Metal Servers on VPC by using the API

To network boot a bare metal server from the API, use the following information when you create your bare metal server.

For the image, you must specify the ID of a stock image that has the user_data_format property that is set to ipxe in the region where you want to create the server and provide the appropriate user data. For more information, see Creating Bare Metal Servers on VPC and User data.

Example of using the Fedora installer to network boot a bare metal server

This example is just one example of how to network boot an operating system. In this example, a bare metal server is created which boots to the Fedora installer. You provide the script as the user data when you create the server.

#!ipxe

dhcp
ntp pool.ntp.org

# Set source URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/38

# Detect CPU architecture and calculate repository URI
cpuid --ext 29 && set arch x86_64 || set arch i386
set repo ${mirror}/Everything/${arch}/os

# Start installer
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img
boot