From 1abbd4a324748160499eb116c16135257766779d Mon Sep 17 00:00:00 2001 From: Jeremy Linton Date: Apr 21 2021 21:24:36 +0000 Subject: [PATCH 1/2] docs: Update build.sh for local builds There isn't an Antora docker container for aarch64. Given this is one of the supported fedora platforms it might be a good idea to provide a way to build docs on it. Antora may be installed locally, so lets check for a local copy before attempting to run a container to build the docs. Futher lets give aarch64 users a hint about this. Signed-off-by: Jeremy Linton --- diff --git a/build.sh b/build.sh index 1e4db2d..75dd387 100755 --- a/build.sh +++ b/build.sh @@ -14,14 +14,19 @@ if [ "$(uname)" == "Darwin" ]; then elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then # Running on Linux. + # there isn't an antora/aarch64 container, antora can be installed locally # Check whether podman is available, else faill back to docker # which requires root. - if [ -f /usr/bin/podman ]; then + if [ -f /usr/local/bin/antora ]; then + /usr/local/bin/antora $cmd + elif [[ `uname -m` == "aarch64" ]]; then + echo "no antora/aarch64 container try just \`npm install -g @antora/cli @antora/site-generator-default\`" + elif [ -f /usr/bin/podman ]; then echo "" echo "This build script is using Podman to run the build in an isolated environment." echo "" - podman run --rm -it -v $(pwd):/antora:z $image $cmd + podman run --rm -it -v $(pwd):/antora:z $image $cmd elif [ -f /usr/bin/docker ]; then echo "" From a41ccf880859dfaec2992723622129fea508f6d4 Mon Sep 17 00:00:00 2001 From: Jeremy Linton Date: Apr 21 2021 21:26:51 +0000 Subject: [PATCH 2/2] docs: Some general network install tweaks First lets add an option for https booting since its well supported with the libvirt based virtualization solutions as well as aarch64 UEFI platforms. Then lets tweak the pxe documentation to refer to the IANA network boot types, document the aarc64 PXE options, as well as touching up the grub2 UEFI boot option so it works with current grub2s. Signed-off-by: Jeremy Linton --- diff --git a/modules/install-guide/pages/advanced/Network_based_Installations.adoc b/modules/install-guide/pages/advanced/Network_based_Installations.adoc index defe080..f5ef6b3 100644 --- a/modules/install-guide/pages/advanced/Network_based_Installations.adoc +++ b/modules/install-guide/pages/advanced/Network_based_Installations.adoc @@ -74,20 +74,26 @@ option routers 192.168.1.1; [command]#journalctl --unit dhcpd --since -2m --follow# ---- -. Add entries to point clients to their bootloader and the server that provides it to your subnet configuration in `/etc/dhcp/dhcpd.conf`. Because DHCP clients provide the server with identifying information along with their address request, BIOS clients and UEFI clients can each be directed to the correct bootloader. +. Add entries to point clients to their bootloader and the server that provides it to your subnet configuration in `/etc/dhcp/dhcpd.conf`. Because DHCP clients provide the server with identifying information along with their address request, BIOS clients and UEFI clients can each be directed to the correct bootloader. Using latest processor architecture option codes, which may be found on the https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml#processor-architecture[IANA DHCPv6] registration page, allows multiple architectures to share a single DHCP server. + ---- -# refer to RFC4578 for possible arch option values +# refer to RFC4578 & IANA DHCPv6 for possible arch option values option arch code 93 = unsigned integer 16; subnet 192.168.1.0 netmask 255.255.255.0 { if option arch = 00:07 { +# x64 UEFI filename "uefi/shim64.efi"; +next-server 192.168.1.2; +} else if option arch = 00:0b { +# aarch64 UEFI +filename "uefi/shimaa64.efi"; +server-name "192.168.1.2"; } else { filename "pxelinux.0"; +next-server 192.168.1.2; } -next-server 192.168.1.2; ... ---- @@ -205,8 +211,8 @@ menuentry 'Exit this grub' { } menuentry 'Install {PRODUCT} 64-bit' --class fedora --class gnu-linux --class gnu --class os { - linuxefi f{PRODVER}/vmlinuz ip=dhcp inst.repo=https://download.fedoraproject.org/pub/fedora/linux/releases/{PRODVER}/Server/x86_64/os/ - initrdefi f{PRODVER}/initrd.img + linux $fw_path/f{PRODVER}/vmlinuz ip=dhcp inst.repo=https://download.fedoraproject.org/pub/fedora/linux/releases/{PRODVER}/Server/x86_64/os/ + initrd $fw_path/f{PRODVER}/initrd.img } menuentry 'Install Fedora {PRODVER} Server' --class fedora --class gnu-linux --class gnu --class os { @@ -241,6 +247,46 @@ menuentry 'Install Fedora {PRODVER} Server' --class fedora --class gnu-linux -- # wget https://download.fedoraproject.org/pub/fedora/linux/releases/{PRODVER}/Server/x86_64/os/images/pxeboot/initrd.img -O /var/lib/tftpboot/f{PRODVER}/initrd.img ---- +[[http-overview]] +== HTTP Installation Overview + +HTTP/HTTPS boot is a technology that allows computers to boot directly from resources provided over the network. When used in conjunction with HTTPS the authenticity of the server is validated, and the use of HTTP offers a more reliable transport mechanism than PXE's TFTP. Installing Fedora this way avoids creating install media and allows multiple computers to install simultaneously. Many current UEFI implementations, including the EDK2 based firmware shipping with fedora's virtualization solutions, can directly boot from HTTP sources. A UEFI boot entry may be manually added that specifies a HTTP source via firmware menus. Alternatively, a DHCP server may automatically provide the required HTTP path. + +.Enrolling Certificatesll +While many machines are capable of HTTPS boot as well as HTTP, they will frequently need to have a certificate authority (CA) enrolled first. The CA is used to validate the certificates presented by the HTTPS server. This may be accomplished by enrolling the appropriate files from the fedora provided ca-certificates for public mirrors or the local HTTPS boot server's certificate. + + +[[https-dhcpd]] +== DHCP Server Configuration for HTTP +The installation and configuration of a DHCP server for HTTP boot is identical to its configuration for <> except that we need to amend the option arch conditions for HTTP clients +[subs="attributes"] +---- +.... + +if option arch = 00:07 { +# x64 UEFI +filename "uefi/shim64.efi"; +next-server 192.168.1.2; +} else if option arch = 00:0b { +# aarch64 UEFI +filename "uefi/shimaa64.efi"; +server-name "192.168.1.2"; +} else if option arch = 00:13 { +# aarch64 UEFI HTTP +option vendor-class-identifier "HTTPClient"; +filename "http://download.fedoraproject.org/pub/fedora/linux/releases/{PRODVER}/Server/aarch64/os/images/boot.iso"; +} else if option arch = 00:10 { +# x64 UEFI HTTP +option vendor-class-identifier "HTTPClient"; +filename "http://download.fedoraproject.org/pub/fedora/linux/releases/{PRODVER}/Server/x86_64/os/images/boot.iso"; +} else { +filename "pxelinux.0"; +next-server 192.168.1.2; +} + +... +---- + [[pxe-repositories]] == Providing repositories