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-03882d658584451bf
af-south-1 x86_64 ami-04a6943385f3f3bd4
ap-east-1 arm64 ami-0fd7fc174f1224eff
ap-east-1 x86_64 ami-0ffba627a905df149
ap-east-2 arm64 ami-0ccca72cf89192a6b
ap-east-2 x86_64 ami-039a48d48a6269451
ap-northeast-1 arm64 ami-0db60de1c4bf90fd5
ap-northeast-1 x86_64 ami-03f3fcbf4cfb815bf
ap-northeast-2 arm64 ami-01139bac6ed31f1e3
ap-northeast-2 x86_64 ami-083c4ded1cf42a3a3
ap-northeast-3 arm64 ami-0e4b11cc8a44201bf
ap-northeast-3 x86_64 ami-0085e095da5c6a654
ap-south-1 arm64 ami-0611d28a306fcb222
ap-south-1 x86_64 ami-07e4e36468b9a3dfd
ap-south-2 arm64 ami-0d0ae6f07140d3515
ap-south-2 x86_64 ami-0ded7b8bcc2ddc7e9
ap-southeast-1 arm64 ami-0a1d5add91c19f532
ap-southeast-1 x86_64 ami-0e820924f970fd81d
ap-southeast-2 arm64 ami-0386b3811f1397060
ap-southeast-2 x86_64 ami-0ec693aefabe27690
ap-southeast-3 arm64 ami-0e9e078c7cd44f96f
ap-southeast-3 x86_64 ami-040a4a3acceefd0ea
ap-southeast-4 arm64 ami-081276a64e4becc88
ap-southeast-4 x86_64 ami-0a436657ca02fd232
ap-southeast-5 arm64 ami-0d0291b285e22b8dd
ap-southeast-5 x86_64 ami-07b5a6d8b5e6da04b
ap-southeast-6 arm64 ami-0cfbdd97ac1cbde58
ap-southeast-6 x86_64 ami-08304e4080eb068ae
ap-southeast-7 arm64 ami-072630275ebf982dc
ap-southeast-7 x86_64 ami-030470e774387bf14
ca-central-1 arm64 ami-024e8bf0a42ee760f
ca-central-1 x86_64 ami-0f2ba1f270f9e573d
ca-west-1 arm64 ami-014302a1c99f761d8
ca-west-1 x86_64 ami-0319a4c8b17f8fb50
eu-central-1 arm64 ami-0ad6f891e354c529a
eu-central-1 x86_64 ami-06effd45f743e97df
eu-central-2 arm64 ami-06ffd52df7a8de15d
eu-central-2 x86_64 ami-06a48e014370c05c9
eu-north-1 arm64 ami-0a58237de15704711
eu-north-1 x86_64 ami-03463d5a70906b1b3
eu-south-1 arm64 ami-0894c2afb6f1a90f6
eu-south-1 x86_64 ami-069eae930d3d3c212
eu-south-2 arm64 ami-0366f9196eb5a50ef
eu-south-2 x86_64 ami-0f552f37a9fd5f108
eu-west-1 arm64 ami-00858ea4a9d063ac8
eu-west-1 x86_64 ami-0faa0013d944f73b2
eu-west-2 arm64 ami-08e27d9c46a982ccf
eu-west-2 x86_64 ami-0abeab44ab59b6a42
eu-west-3 arm64 ami-0a466261ecac98dcc
eu-west-3 x86_64 ami-015dc028c4d716e16
il-central-1 arm64 ami-09e6b833cb307c849
il-central-1 x86_64 ami-0dd66e581c4ca1201
mx-central-1 arm64 ami-0b9f1d27612bc5622
mx-central-1 x86_64 ami-06096fe1768bead9d
sa-east-1 arm64 ami-0438ec888ab005405
sa-east-1 x86_64 ami-02b05a5c2a1cf030e
us-east-1 arm64 ami-0f5b4e9c8ab1de988
us-east-1 x86_64 ami-0d333801611f1402f
us-east-2 arm64 ami-0c2cfd78965afc0b4
us-east-2 x86_64 ami-0f653db9ef36d3a56
us-west-1 arm64 ami-0f2c3da161b54ad09
us-west-1 x86_64 ami-0132be8b2ced3c5bd
us-west-2 arm64 ami-06da6175bfd5185cd
us-west-2 x86_64 ami-0189e867a8651124a

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.