From 009bbb05d65797b49fdf7cdb35fe058b01680840 Mon Sep 17 00:00:00 2001 From: Peter Surda Date: Wed, 3 Nov 2021 14:18:01 +0800 Subject: [PATCH] Combine initrd and squashfs and unified boot - one one initrd which also includes squashfs - same procedure for EFI and non-EFI --- embed.ipxe | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/embed.ipxe b/embed.ipxe index 979ce72..14cff34 100644 --- a/embed.ipxe +++ b/embed.ipxe @@ -12,7 +12,7 @@ imgtrust --permanent # For the "focal" part of the URL string, in case that changes in the future. set ubuntu-variant focal -goto get_platform +goto get_arch ################# @@ -135,24 +135,6 @@ sleep 5 exit -# set variables based on whether it's EFI or not -:get_platform -iseq ${platform} efi && goto is_efi || goto not_efi - -# Attributes for EFI boot -:is_efi -# hack, see https://github.com/coreos/fedora-coreos-tracker/issues/390#issuecomment-588328137 -set squashfs squashfs.cpio -set extra_initrd initrd=squashfs.cpio -goto get_arch - -# this sets different attributes for non-EFI (legacy PC) boot -:not_efi -set squashfs squashfs -clear extra_initrd -goto get_arch - - # Get relevant CPU arch. :get_arch iseq ${buildarch} arm32 && goto start_arm32 || @@ -208,9 +190,6 @@ goto static_ip_boot_setup # However, note that imgverify will fail if you refer to it as "/squashfs" # instead of "squashfs". -imgfetch http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/${squashfs} /${squashfs} || goto try_next_card -imgverify --signer images.sysdeploy.org ${squashfs} http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/${squashfs}.sig || goto error_handler - # "--signer" validates against the subject common name field of the signing # certificate. That signing cert must have both the digital signature key # usage set and the code-signing key usage extension set. @@ -219,8 +198,8 @@ imgverify --signer images.sysdeploy.org ${squashfs} http://images.sysdeploy.org/ # make sure you pick a common name with a FQDN you control, even if you're # using a custom CA that you import during build. -initrd http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/boot-initrd || goto try_next_card -imgverify --signer images.sysdeploy.org boot-initrd http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/boot-initrd.sig || goto error_handler +initrd http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/initrd.cpio || goto try_next_card +imgverify --signer images.sysdeploy.org boot-initrd http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/initrd.cpio.sig || goto error_handler kernel http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/boot-kernel || goto try_next_card imgverify --signer images.sysdeploy.org boot-kernel http://images.sysdeploy.org/${ubuntu-variant}/${arch-info}/boot-kernel.sig || goto error_handler @@ -233,7 +212,7 @@ echo ip-info ${ip-info} sleep 1 -boot boot-kernel initrd=boot-initrd ${extra_initrd} rootfstype=squashfs root=/squashfs ip=${ip-info} overlayroot=tmpfs:recurse=0 systemd.clock-usec=${unixtime:int32}000000 ds=nocloud-net;s=https://cloud-init.sysdeploy.org/ || goto error_handler +boot boot-kernel initrd=squashfs.cpio rootfstype=squashfs root=/squashfs ip=${ip-info} overlayroot=tmpfs:recurse=0 systemd.clock-usec=${unixtime:int32}000000 ds=nocloud-net;s=https://cloud-init.sysdeploy.org/ || goto error_handler # unixtime variable must be used with int32, because that's the only way it # will display as decimal digits. unit32 and string both display as hex.