diff options
author | Carlo Landmeter <clandmeter@alpinelinux.org> | 2018-04-07 23:21:17 +0000 |
---|---|---|
committer | Carlo Landmeter <clandmeter@alpinelinux.org> | 2018-04-07 23:21:17 +0000 |
commit | f4bf0065229c50b3dd3c8f60f21158ca51d145f7 (patch) | |
tree | 8a38022a19418f2961f1f6b51afb077f98157d54 | |
parent | 955730fbe508ce0e23ea44807cf51da34d851d46 (diff) | |
download | alpine-netboot-f4bf0065229c50b3dd3c8f60f21158ca51d145f7.tar.bz2 alpine-netboot-f4bf0065229c50b3dd3c8f60f21158ca51d145f7.tar.xz |
ipxe: improve default boot script
- support x86(_64) and arm64
- support for packet.net
- add shell and reboot to menu
- allow setting of console
- allow adding custom cmdline options
-rw-r--r-- | boot.ipxe | 94 |
1 files changed, 86 insertions, 8 deletions
@@ -1,27 +1,105 @@ #!ipxe set os Alpine Linux -cpuid --ext 29 && set arch x86_64 || set arch x86 +iseq ${ipxe_cloud_config} packet && set provider (Packet.net) || +iseq ${alpine_loader} true && set img_verify true || set img_verify false +set console tty0 || +set cmdline_extra none || +set release latest-stable || +iseq ${buildarch} arm64 && goto arm64 || +cpuid --ext 29 && goto x86_64 || goto x86 -imgtrust --permanent +:arm64 +set arch aarch64 || +set acpi acpi=force || +set console ttyAMA0 || +iseq ${ipxe_cloud_config} packet && set console ttyAMA0,115200 || +goto menu +:x86_64 +set arch x86_64 || +iseq ${ipxe_cloud_config} packet && set console ttyS1,115200n8 || +goto menu + +:x86 +set arch x86 || +goto menu + +:menu +set space:hex 20:20 +set space ${space:string} +menu ${os} ${provider} [ ${arch} ] +item --gap Boot options +item release ${space} Choose release [ ${release} ] +item console ${space} Set console [ ${console} ] +iseq ${alpine_loader} true && item img_verify ${space} Image verification [ ${img_verify} ] || +item cmdline_extra ${space} Additional cmdline [ ${cmdline_extra} ] +item boot ${space} Boot with above settings +item --gap Utilities +item shell ${space} iPXE Shell +item reboot ${space} Reboot system +choose item +goto ${item} + +:release menu ${os} [ ${arch} ] item latest-stable Latest stable item edge Edge (development) -choose version || goto alpine_exit -goto boot +choose release || goto alpine_exit +goto menu + +:console +menu ${os} [ ${arch} ] +item tty0 Console on tty0 +item ttyS0 Console on ttyS0 +item ttyS1 Console on ttyS1 +item ttyAMA0 Console on ttyAMA0 (aarch64) +item custom Enter custom console +choose console || goto menu +iseq ${console} custom && goto custom_console || +goto menu + +:custom_console +clear console +echo -n Enter console: && read console +goto menu + +:shell +echo Type "exit" to return to menu. +shell +goto menu + +:img_verify +iseq ${img_verify} true && set img_verify false || set img_verify true +goto menu + +:cmdline_extra +clear cmdline_extra +echo -n Enter extra cmdline options: && read cmdline_extra +goto menu :boot -set img-url http://boot.alpinelinux.org/images/${version}/${arch} -set repo-url http://dl-cdn.alpinelinux.org/alpine/${version}/main +iseq ${cmdline_extra} none && clear cmdline_extra || +isset ${console} && set console console=${console} || +set img-url https://boot.alpinelinux.org/images/${release}/${arch} +set repo-url http://dl-cdn.alpinelinux.org/alpine/${release}/main imgfree -kernel ${img-url}/vmlinuz-vanilla alpine_repo=${repo-url} modules=loop,squashfs modloop=${img-url}/modloop-vanilla quiet nomodeset -imgverify vmlinuz-vanilla ${img-url}/vmlinuz-vanilla.sig +kernel ${img-url}/vmlinuz-vanilla initrd=initramfs-vanilla pkgs=libressl alpine_repo=${repo-url} modules=loop,squashfs modloop=${img-url}/modloop-vanilla nomodeset ${console} ${acpi} ${cmdline_extra} initrd ${img-url}/initramfs-vanilla +iseq ${img_verify} true && goto verify_img || goto no_img_verify +:verify_img +imgverify vmlinuz-vanilla ${img-url}/vmlinuz-vanilla.sig imgverify initramfs-vanilla ${img-url}/initramfs-vanilla.sig +:no_img_verify boot goto alpine_exit +:reboot +reboot + +:poweroff +poweroff + :alpine_exit clear menu exit 0 |