Skip to content

Instantly share code, notes, and snippets.

@robinsmidsrod
Last active July 4, 2023 09:11
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save robinsmidsrod/21a15a562bc45d4ce25dcde507fb3100 to your computer and use it in GitHub Desktop.
Save robinsmidsrod/21a15a562bc45d4ce25dcde507fb3100 to your computer and use it in GitHub Desktop.
iPXE script entries for booting Ubuntu 18.04 in different ways
# boot-url points to an nfs URL
# sanboot-url points to an http URL
# ubuntu-version contains 18.04.3
# ubuntu-release contains bionic
:ubuntu
echo Booting Ubuntu from iSCSI for ${initiator-iqn}
set root-path ${base-iscsi}:${hostname}.boot.ubuntu
sanboot ${root-path} || goto failed
goto start
:ubuntu-install-iscsi
echo Starting Ubuntu ${ubuntu-version} ${archl} installer for ${initiator-iqn}
# iBFT table not required for Ubuntu
#sanhook ${base-iscsi}:${hostname}.boot.ubuntu || sleep 1
# The partman-iscsi/initiatorname kernel paramter is saved in
# /etc/iscsi/initiatorname.iscsi during the installation.
# Preseed help: https://help.ubuntu.com/lts/installation-guide/amd64/apbs04.html
set ubuntu-installer-base ubuntu-${ubuntu-version}-server-${archl}
set base-url ubuntu/${ubuntu-installer-base}/
kernel ${base-url}install/netboot/ubuntu-installer/${archl}/linux
initrd ${base-url}install/netboot/ubuntu-installer/${archl}/initrd.gz
imgargs linux auto=true fb=false \
netcfg/get_hostname=${hostname} \
partman-iscsi/initiatorname=${initiator-iqn} \
partman-iscsi/login/username=${username} \
partman-iscsi/login/password=${password} \
partman-iscsi/login/address=${iscsi-server} \
partman-iscsi/login/targets=${base-iqn}:${hostname}.boot.ubuntu \
DEBCONF_DEBUG=5 url=${sanboot-url}ubuntu/${ubuntu-installer-base}.preseed
boot || goto failed
goto start
:ubuntu-install-local
echo Starting Ubuntu ${ubuntu-version} ${archl} local installer for ${initiator-iqn}
set ubuntu-installer-base ubuntu-${ubuntu-version}-server-${archl}
set base-url ubuntu/${ubuntu-installer-base}/
kernel ${base-url}install/netboot/ubuntu-installer/${archl}/linux
initrd ${base-url}install/netboot/ubuntu-installer/${archl}/initrd.gz
imgargs linux auto=true fb=false url=${sanboot-url}ubuntu/${ubuntu-installer-base}.preseed
boot || goto failed
goto start
:ubuntu-install-remote
echo Starting Ubuntu ${ubuntu-version} ${archl} installer for ${initiator-iqn}
set base-url http://no.archive.ubuntu.com/ubuntu/dists/${ubuntu-release}/main/installer-${archl}/current/
kernel ${base-url}images/netboot/ubuntu-installer/${archl}/linux
initrd ${base-url}images/netboot/ubuntu-installer/${archl}/initrd.gz
boot || goto failed
goto start
:ubuntu-live
# See http://manpages.ubuntu.com/manpages/precise/man7/casper.7.html for casper cmdline details
echo Booting Ubuntu Live ${ubuntu-version} ${archl} for ${initiator-iqn}
set ubuntu-installer-base ubuntu-${ubuntu-version}-desktop-${archl}
set base-url ubuntu/${ubuntu-installer-base}
kernel ${base-url}/casper/vmlinuz
initrd ${base-url}/casper/initrd
imgargs vmlinuz boot=casper \
root=/dev/nfs netboot=nfs nfsroot=${nfs-server}:${nfs-root}${base-url} \
locale=en_US.UTF-8 \
keyboard-configuration/layoutcode=no \
mirror/country=NO
boot || goto failed
goto start
@robinsmidsrod
Copy link
Author

Thank you, @rikka0w0!

I'm sure this will come in hand for anyone else finding this snippet.

I haven't yet updated my network boot setup to support Ubuntu 20.04 yet, so I wasn't aware of what changes were needed, but I assumed some changes would be needed.

@cchalifo999
Copy link

Would it work with ubuntu 20.10 server

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment