summaryrefslogtreecommitdiff
path: root/templates/releng
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-12-11 17:13:02 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-12-11 17:13:02 -0500
commit422aaee026c57b65dda81b78b6a0f49263c6dd1e (patch)
tree6bc80bcb093ed2f0932d4469a4400ce293c94860 /templates/releng
parent464b8d1fa572ab57d41569d45ba94b771e0a5ced (diff)
parent83eea8e167e698f8f14ea2494837510404dc75ff (diff)
Merge branch 'archweb' into archweb-generic
# Conflicts: # templates/public/download.html
Diffstat (limited to 'templates/releng')
-rw-r--r--templates/releng/archlinux.ipxe157
-rw-r--r--templates/releng/netboot.html54
2 files changed, 211 insertions, 0 deletions
diff --git a/templates/releng/archlinux.ipxe b/templates/releng/archlinux.ipxe
new file mode 100644
index 00000000..4945868c
--- /dev/null
+++ b/templates/releng/archlinux.ipxe
@@ -0,0 +1,157 @@
+#!ipxe
+{% regroup mirrorurls by country as mirrors_by_country %}
+
+# Figure out if client is 64-bit capable
+cpuid --ext 29 && set cpuarch x86_64 || set cpuarch i686
+
+# allow only trusted images
+imgtrust
+
+# initial options
+set bootarch ${cpuarch}
+set release {{ releases.0 }}
+set mirrorurl
+set extrabootoptions ip=dhcp net.ifnames=0
+set countrycode
+
+:main
+menu Arch Linux Netboot
+item --gap Settings
+item set_architecture Architecture: ${bootarch}
+item set_release Release: ${release}
+isset ${mirrorurl} && item set_mirror Mirror: ${mirrorurl} || item set_mirror Choose a mirror
+item set_options Boot options: ${extrabootoptions}
+item
+isset ${mirrorurl} && item boot Boot Arch Linux || item --gap Boot Arch Linux
+item shell Drop to iPXE shell
+item reboot Reboot
+item exit Exit iPXE
+isset ${mirrorurl} && choose --default set_options selected || choose --default set_mirror selected || goto shell
+goto ${selected} || goto main
+
+:shell
+echo Type 'exit' to get the back to the menu
+shell
+goto main
+
+:reboot
+reboot
+
+:exit
+exit
+
+:set_architecture
+menu Arch Linux Netboot: Select Architecture
+item back back
+item
+item --gap Available architectures:
+iseq ${cpuarch} x86_64 && item x86_64 x64_64 ||
+item i686 i686
+choose selected || goto main
+iseq ${selected} back && goto main ||
+set bootarch ${selected}
+goto main
+
+:set_release
+menu Arch Linux Netboot: Select Release
+item back back
+item
+item --gap Available releases:
+{% for release in releases %}item {{ release }} {{ release }}
+{% endfor %}
+choose selected || goto main
+iseq ${selected} back && goto main ||
+set release ${selected}
+goto main
+
+:set_mirror
+goto select_mirror_country
+
+:select_mirror_country
+menu Arch Linux Netboot: Select Mirror
+item back back
+item
+item --gap Custom Configuration:
+item custom Enter mirror URL
+item
+item --gap Select Mirror By Country:
+{% for mirrorgroup in mirrors_by_country %}
+{% if mirrorgroup.grouper == '' %}
+item 00 Global
+{% else %}
+item {{ mirrorgroup.grouper }} {{ mirrorgroup.grouper.name }}
+{% endif %}
+{% endfor %}
+isset ${countrycode} && choose --default ${countrycode} selected || choose selected || goto main
+iseq ${selected} back && goto main ||
+iseq ${selected} custom && goto enter_mirror_url ||
+set countrycode ${selected}
+goto select_mirror_url
+
+:enter_mirror_url
+set countrycode
+echo Enter the mirror URL including the trailing slash.
+echo Example: http://some.host/archlinux/
+echo
+echo -n Mirror URL: ${} && read mirrorurl || goto select_mirror_country
+goto main
+
+:select_mirror_url
+goto select_mirror_url_${countrycode} || goto select_mirror_country
+
+{% for mirrorgroup in mirrors_by_country %}
+{% if mirrorgroup.grouper == '' %}
+:select_mirror_url_00
+set countryname Global
+{% else %}
+:select_mirror_url_{{ mirrorgroup.grouper }}
+set countryname {{ mirrorgroup.grouper.name }}
+{% endif %}
+menu Arch Linux Netboot: Select Mirror
+item back back
+item
+item --gap Available mirrors in ${countryname}
+{% for mirror in mirrorgroup.list %}item {{ mirror.url }} {{ mirror.mirror.name }}
+{% endfor %}
+choose selected || goto select_mirror_country
+iseq ${selected} back && goto select_mirror_country ||
+set mirrorurl ${selected}
+goto main
+{% endfor %}
+
+:set_options
+echo -n Boot options: ${} && read extrabootoptions ||
+goto main
+
+:boot
+echo Booting Arch Linux ${bootarch} ${release} from ${mirrorurl}
+echo
+kernel ${mirrorurl}iso/${release}/arch/boot/${bootarch}/vmlinuz || goto failed_download
+imgverify vmlinuz ${mirrorurl}iso/${release}/arch/boot/${bootarch}/vmlinuz.ipxe.sig || goto failed_verify
+initrd ${mirrorurl}iso/${release}/arch/boot/intel_ucode.img || goto failed_download
+imgverify intel_ucode.img ${mirrorurl}iso/${release}/arch/boot/intel_ucode.img.ipxe.sig || goto failed_verify
+initrd ${mirrorurl}iso/${release}/arch/boot/${bootarch}/archiso.img || goto failed_download
+imgverify archiso.img ${mirrorurl}iso/${release}/arch/boot/${bootarch}/archiso.img.ipxe.sig || goto failed_verify
+imgargs vmlinuz initrd=intel_ucode.img initrd=archiso.img archiso_http_srv=${mirrorurl}iso/${release}/ archisobasedir=arch verify=y ${extrabootoptions}
+boot || goto failed_boot
+
+:failed_download
+echo
+echo Failed to download a file.
+goto failed
+
+:failed_verify
+echo
+echo Failed to verify a file.
+goto failed
+
+:failed_boot
+echo
+echo Boot failed.
+goto failed
+
+:failed
+echo Press a key to return to the menu.
+prompt
+imgfree
+goto main
diff --git a/templates/releng/netboot.html b/templates/releng/netboot.html
new file mode 100644
index 00000000..36404588
--- /dev/null
+++ b/templates/releng/netboot.html
@@ -0,0 +1,54 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+
+{% block title %}Arch Linux - Netboot{% endblock %}
+
+{% block content %}
+<div id="arch-netboot" class="box">
+
+<h2>Arch Linux Netboot</h2>
+
+<h3>About Netboot</h3>
+
+<p>Netboot images are small (&lt;1MB) images that can be used to download the latest Arch Linux release on the fly upon system boot.
+It is unnecessary to update the netboot image, the newest release will be available automatically.</p>
+
+<p>Netboot uses customized <a href="http://ipxe.org">iPXE</a> builds.
+The Linux kernel, initramfs and squashfs files for the live system are downloaded from an Arch Linux mirror.
+The integrity of all downloaded files is verified with cryptographic signatures.</p>
+
+<h3>Requirements</h3>
+
+<p>To use netboot, the following requirements must be met:
+
+<ul>
+<li>Wired (ethernet) internet connection with DHCP autoconfiguration</li>
+<li>Sufficient memory to store and run the live system</li>
+</ul>
+
+</p>
+
+<h3>Download</h3>
+
+<h4>BIOS</h4>
+
+<ul>
+<li><a href="{% static "netboot/ipxe.lkrn" %}">ipxe.lkrn</a> (<a href="{% static "netboot/ipxe.lkrn.sig" %}">PGP signature</a>) - Linux kernel-like image that can be started with any Linux bootloader</li>
+<li><a href="{% static "netboot/ipxe.pxe" %}">ipxe.pxe</a> (<a href="{% static "netboot/ipxe.pxe.sig" %}">PGP signature</a>) - PXE image for chainloading from a PXE environment</li>
+</ul>
+
+<h4>UEFI</h4>
+
+<ul>
+<li><a href="{% static "netboot/ipxe.efi" %}">ipxe.efi</a> (<a href="{% static "netboot/ipxe.efi.sig" %}">PGP signature</a>) - x86_64 UEFI executable</li>
+</ul>
+
+<p>You can build your own iPXE images compatible with netboot.
+For details, check out the <a href="https://aur.archlinux.org/packages/ipxe-netboot">ipxe-netboot AUR package</a>.</p>
+
+<h3>More information</h3>
+
+<p>For detailed usage instructions, check out the <a href="https://wiki.archlinux.org/index.php/Netboot">netboot wiki page</a>.
+
+</div>
+{% endblock %}