iPXE in Amazon EC2

You can use iPXE to boot Amazon (AWS) EC2 instances using a public iPXE AMI. You can use an iPXE script to direct the EC2 instance to boot via any means supported by iPXE. For example, you could boot a set of diskless EC2 instances using HTTPS or iSCSI from a single server hosted in the same AWS region.

Launching

The EC2 iPXE images are published outside of the AWS Marketplace and are shared directly from account 833372943033.

Launch the latest iPXE AMI for your AWS region and CPU architecture from the table below:

AWS region CPU architecture AMI ID
af-south-1 arm64 ami-00839b0aa40ccf487
af-south-1 x86_64 ami-0994147e77bce4fbd
ap-east-1 arm64 ami-0ab073cd1f08288e0
ap-east-1 x86_64 ami-0dc0d70631e0eee93
ap-east-2 arm64 ami-0dd93aff32cf9a552
ap-east-2 x86_64 ami-05d3d68baa8e7dd3d
ap-northeast-1 arm64 ami-0a5bfc38cb530dfa7
ap-northeast-1 x86_64 ami-07c4821b543b7d904
ap-northeast-2 arm64 ami-074858e4bd0407942
ap-northeast-2 x86_64 ami-0ddbd0f5f901d49aa
ap-northeast-3 arm64 ami-0c78856a68c00e504
ap-northeast-3 x86_64 ami-07e3b350d867d505b
ap-south-1 arm64 ami-091a14b7ecd40dd79
ap-south-1 x86_64 ami-0ce9c4ebc47d1d7f5
ap-south-2 arm64 ami-0d940bf9c2ffca4c7
ap-south-2 x86_64 ami-0bdcd4e529d97ee01
ap-southeast-1 arm64 ami-01b25b9a9352f82b9
ap-southeast-1 x86_64 ami-09d1a13ca5319a08f
ap-southeast-2 arm64 ami-03b7fc83aa07d3560
ap-southeast-2 x86_64 ami-0f6841dcc1556b10b
ap-southeast-3 arm64 ami-0ee2d0f15f77f4479
ap-southeast-3 x86_64 ami-02951182f99f07acd
ap-southeast-4 arm64 ami-017ec2daa5d56da32
ap-southeast-4 x86_64 ami-08e4185505c87f0bb
ap-southeast-5 arm64 ami-05998abca7ef63d15
ap-southeast-5 x86_64 ami-00e99ea82595e0163
ap-southeast-6 arm64 ami-04d99b4fa5e695052
ap-southeast-6 x86_64 ami-06d432276387f757b
ap-southeast-7 arm64 ami-0f9b820f59cfc7da3
ap-southeast-7 x86_64 ami-0daa634738cb98edd
ca-central-1 arm64 ami-0168516e2de2c2c04
ca-central-1 x86_64 ami-0d6cdfa032f9f05aa
ca-west-1 arm64 ami-0e5bf51c261501d04
ca-west-1 x86_64 ami-0468c4fe36129cd1a
eu-central-1 arm64 ami-09507125aa5677aa6
eu-central-1 x86_64 ami-0a7843c58085bd81b
eu-central-2 arm64 ami-0bbebdfad5ba014e0
eu-central-2 x86_64 ami-0a9281462966026b0
eu-north-1 arm64 ami-00dfb31cbd5d473a9
eu-north-1 x86_64 ami-0946a54dfc06e1a0f
eu-south-1 arm64 ami-078488791c72defa4
eu-south-1 x86_64 ami-0ab34200b523b57cd
eu-south-2 arm64 ami-08fbbcf6f8fdbc5a5
eu-south-2 x86_64 ami-0d36fb63741be8b48
eu-west-1 arm64 ami-094b5ed1f3723f3a8
eu-west-1 x86_64 ami-0313cbd11efa70cd3
eu-west-2 arm64 ami-037d8c40813db6f40
eu-west-2 x86_64 ami-0458590247cd82d8e
eu-west-3 arm64 ami-02c8eda466812ee4b
eu-west-3 x86_64 ami-0e0946deb990e16f2
il-central-1 arm64 ami-027d21f516be9722d
il-central-1 x86_64 ami-001f7a34dd4cdbfd2
mx-central-1 arm64 ami-0b51de54be1d8bbe2
mx-central-1 x86_64 ami-01d0c513b424bfaf2
sa-east-1 arm64 ami-0ff7759806773dc11
sa-east-1 x86_64 ami-0ce98c44304e296f1
us-east-1 arm64 ami-0e67258c28eb736a8
us-east-1 x86_64 ami-0b93a48944145df0e
us-east-2 arm64 ami-0b4e03b92aca99f36
us-east-2 x86_64 ami-0c559b0bdf6f6bf21
us-west-1 arm64 ami-00e0dc65a6c75e58f
us-west-1 x86_64 ami-0cec54861c5020f60
us-west-2 arm64 ami-012416fd3b9f55c4d
us-west-2 x86_64 ami-0086f0a9a0c1f64f7

You can use any compatible EC2 instance type (including instance types with Enhanced or SR-IOV networking).

Configuring

iPXE EC2 instances are controlled via an iPXE script stored as the instance user-data. The iPXE AMI includes an embedded script that will automatically obtain an IP address via DHCP, print out some useful diagnostic information, and then download and execute http://169.254.169.254/latest/user-data.

You can use this user-data iPXE script to direct the remainder of the network boot process. For example, to download and boot Tiny Core Linux, you could set your instance's user data to contain:

  #!ipxe
  set base http://tinycorelinux.net/12.x/x86/release/distribution_files/
  kernel ${base}/vmlinuz64
  initrd ${base}/rootfs.gz
  initrd ${base}/modules64.gz
  boot

EC2 iPXE boot

Congratulations on successfully booting an EC2 instance using iPXE!

Success

Using cloud-init

If you are using cloud-init to configure your EC2 instance, then you may want to use the user-data to store the cloud-init configuration as well as your iPXE boot script.

You can use the cloud-init tool to create a MIME multi-part archive that contains both your cloud-init configuration and your iPXE boot script. You can attach your iPXE boot script using any filename and the MIME type text/x-ipxe. For example:

  cloud-init devel make-mime --force \
    --attach config.yml:cloud-config \
    --attach boot.ipxe:x-ipxe \
    > user-data

iSCSI

You can use your user-data script to direct iPXE to boot from an iSCSI target. For example: to boot from an iSCSI target hosted on another EC2 instance 172.16.0.1 within the same VPC, you could set your instance's user data to contain:

  #!ipxe
  sanboot iscsi:172.16.0.1::::iqn.1995-08.org.example.iscsitarget:disk1

Note that the operating system on the iSCSI target disk will need to include the appropriate software and configuration to allow it to identify its own iSCSI root disk. You can install software such as sanbootable to help set up the required configuration.

IPv6

The iPXE AMI will include support for both IPv4 and IPv6. You should enable IPv6 in your VPC to speed up the boot, since otherwise iPXE will spend several seconds attempting to obtain an IPv6 address.

Troubleshooting

You can view the iPXE output via the EC2 system log or instance screenshot. For example:

  aws ec2 get-console-output --query Output --output text \
          --instance-id i-04549ed5e420eae6e

You should see output similar to:

  iPXE 1.21.1+ (gfa012) -- Open Source Network Boot Firmware -- http://ipxe.org
  Features: DNS HTTP HTTPS iSCSI TFTP SRP AoE ELF MBOOT PXE bzImage Menu PXEXT
  Amazon EC2 - iPXE boot via user-data
  CPU: GenuineIntel Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
  net0: 06:ee:8d:98:cc:67 using netfront on vif/0 (Ethernet) [closed]
    [Link:up TX:0 TXE:0 RX:0 RXE:0]
  Configuring (net0 06:ee:8d:98:cc:67)...... ok
  net0: 172.31.41.104/255.255.240.0 gw 172.31.32.1
  net0: fe80::4ee:8dff:fe98:cc67/64
  http://169.254.169.254/latest/user-data... ok

Warning

Note that there is often a time delay of several minutes in obtaining system logs or instance screenshots from EC2 - this is a longstanding problem with EC2 itself and is not related to iPXE. You may need to retry the command several times (or possibly stop the instance) in order to obtain any output.

Building from source

You can build your own version of the public iPXE AMIs using:

  make CONFIG=cloud EMBED=config/cloud/aws.ipxe \
       bin-x86_64-pcbios/ipxe.usb bin-arm64-efi/ipxe.usb

and import them using the aws-import tool (found in the contrib directory in the iPXE source tree).

howto/ec2.txt ยท Last modified: 2026/07/13 12:40 by mcb30
Recent changes RSS feed CC Attribution-Share Alike 4.0 International Driven by DokuWiki
All uses of this content must include an attribution to the iPXE project and the URL https://ipxe.org
References to "iPXE" may not be altered or removed.