Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
On Sat, Sep 15, 2012 at 09:10:53PM +0530, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
It'd be nice if you could send your patches inline in the future, using git-send-email.
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
looks great from the point of view of simplicy, boot untested.
+1 from me
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
Do you ask to Tobias to, build it and put in repos like refind?
On Mon, Sep 17, 2012 at 7:53 PM, Gerardo Exequiel Pozzi vmlinuz386@yahoo.com.ar wrote:
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
Do you ask to Tobias to, build it and put in repos like refind?
Yes.
-- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
Is now on repos! (Thanks Tobias)
I will push this in ~ 8 hours. If you have a new version, please resend ;)
Thanks.
On 09/19/2012 12:19 PM, Gerardo Exequiel Pozzi wrote:
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
Is now on repos! (Thanks Tobias)
I will push this in ~ 8 hours. If you have a new version, please resend ;)
Thanks.
I will wait until (FS#31609 - [gummiboot-efi-x86_64] Package is ugly) closed, maybe some rework is needed.
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
reviewing a more in deep the patch... (next time please attach inline...)
+ mkdir -p ${work_dir}/iso/loader/entries
and etc...can not be in ${work_dir}/iso/EFI/loader ? I want to avoid multiple directories on the root.
+ cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/shellx64_v1.efi + + # There are plans to support command line options via a config file (not yet in linux-3.3)
such line empty contains spaces, also here...
+ #echo "archisobasedir=${install_dir} archisolabel=${iso_label} initrd=\EFI\boot\archiso.img" > ${work_dir}/efiboot/EFI/boot/linux.conf + umount ${work_dir}/efiboot
+ # There are plans to support command line options via a config file (not yet in linux-3.3)
and related lines, they are "obsolete" in favor of gummiboot :)
you can split this function make_boot_efi() in two, one for efiboot.img and other for /EFI
make_boot_efi() -> steps to build /EFI directory, for usbboot or EFI firmwares that understands iso9660 filesystem. make_boot_efiboot() -> steps to build efiboot.img for "El Torito".
On 09/20/2012 11:28 PM, Gerardo Exequiel Pozzi wrote:
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
reviewing a more in deep the patch... (next time please attach inline...)
mkdir -p ${work_dir}/iso/loader/entries
and etc...can not be in ${work_dir}/iso/EFI/loader ? I want to avoid multiple directories on the root.
uggg, no is not possible, it looks at fixed location [#1]
[#1] http://cgit.freedesktop.org/gummiboot/tree/gummiboot.c#n1168
cp ${work_dir}/iso/EFI/shellx64_v1.efi
${work_dir}/efiboot/EFI/shellx64_v1.efi
# There are plans to support command line options via a
config file (not yet in linux-3.3)
such line empty contains spaces, also here...
#echo "archisobasedir=${install_dir}
archisolabel=${iso_label} initrd=\EFI\boot\archiso.img" > ${work_dir}/efiboot/EFI/boot/linux.conf
umount ${work_dir}/efiboot
# There are plans to support command line options via a
config file (not yet in linux-3.3)
and related lines, they are "obsolete" in favor of gummiboot :)
you can split this function make_boot_efi() in two, one for efiboot.img and other for /EFI
make_boot_efi() -> steps to build /EFI directory, for usbboot or EFI firmwares that understands iso9660 filesystem. make_boot_efiboot() -> steps to build efiboot.img for "El Torito".
done ;)
diff --git a/configs/releng/build.sh b/configs/releng/build.sh index df089d4..f7365a7 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -65,19 +65,17 @@ make_boot() { fi }
-# Prepare EFI "El Torito" boot image (using Linux >= 3.3 EFI boot stub) -make_boot_efi() { +make_efi() { if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then if [[ ${arch} == "x86_64" ]]; then - ## Start - UEFI USB
mkdir -p ${work_dir}/iso/EFI/boot cp ${work_dir}/root-image/boot/efi/EFI/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi
mkdir -p ${work_dir}/iso/loader/entries - cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/loader.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/uefi-shell-v2-x86_64.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/uefi-shell-v1-x86_64.conf + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/
sed "s|%ARCHISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf @@ -87,9 +85,14 @@ make_boot_efi() { # EFI Shell 1.0 for non UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell ) wget -O ${work_dir}/iso/EFI/shellx64_v1.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/Full...
- ## End - UEFI USB + fi + : > ${work_dir}/build.${FUNCNAME} + fi +}
- ## Start - UEFI CD +make_efiboot() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + if [[ ${arch} == "x86_64" ]]; then
mkdir -p ${work_dir}/iso/EFI/archiso dd of=${work_dir}/iso/EFI/archiso/efiboot.img bs=1 seek=20M count=0 @@ -106,24 +109,18 @@ make_boot_efi() { cp ${work_dir}/root-image/boot/efi/EFI/gummiboot/gummibootx64.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi
mkdir -p ${work_dir}/efiboot/loader/entries - cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/loader.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/
sed "s|%ARCHISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf
- cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/shellx64_v2.efi - cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/shellx64_v1.efi - - # There are plans to support command line options via a config file (not yet in linux-3.3) - #cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/boot/bootx64.efi - #cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/boot/archiso.img - #echo "archisobasedir=${install_dir} archisolabel=${iso_label} initrd=\EFI\boot\archiso.img" > ${work_dir}/efiboot/EFI/boot/linux.conf - + cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/ + cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/ + umount ${work_dir}/efiboot
- ## End - UEFI CD fi : > ${work_dir}/build.${FUNCNAME} fi @@ -293,7 +290,8 @@ make_common_single() { make_packages make_setup_mkinitcpio make_boot - make_boot_efi + make_efi + make_efiboot make_syslinux make_isolinux make_customize_root_image
On 09/15/2012 12:40 PM, Keshav P R wrote:
Hi, In some UEFI systems, startup.nsh does not start and the boot stops at Shell prompt without giving any indication of any error whatsoever. I think instead of relying on UEFI Shell, we should use a proper, simple UEFI boot manager to load EFISTUB kernel in archiso. So here is a patch replacing UEFI Shell as the primary boot pathway to gummiboot. I have renamed the UEFI Shell binaries and archiso now includes both v1 and v2 shell binaries, accessible via gummiboot menu. Some options present in shell v2 is not present in v1, but v1 works in all firmwares while v2 works only in >=2.3 (spec. version) firmwares. I have attached the patch. For this support, gummiboot-efi-x86_64 https://aur.archlinux.org/packages.php?ID=62791 should be moved to [extra] or [core] repo. Please give your comments.
Regards.
Keshav
Reworked to match new gummiboot package.
- cp ${work_dir}/root-image/boot/efi/EFI/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi + cp ${work_dir}/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi
If there are no issues open issues in our bugtracker I will merge tomorrow ;)
From: Keshav P R the.ridikulus.rat@gmail.com
Signed-off-by: Gerardo Exequiel Pozzi vmlinuz386@yahoo.com.ar --- configs/releng/build.sh | 55 +++++++++++++++------- .../efiboot/loader/entries/archiso-x86_64-cd.conf | 4 ++ .../efiboot/loader/entries/archiso-x86_64-usb.conf | 4 ++ .../loader/entries/uefi-shell-v1-x86_64.conf | 2 + .../loader/entries/uefi-shell-v2-x86_64.conf | 2 + configs/releng/efiboot/loader/loader.conf | 2 + configs/releng/packages.x86_64 | 1 + 7 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 configs/releng/efiboot/loader/entries/archiso-x86_64-cd.conf create mode 100644 configs/releng/efiboot/loader/entries/archiso-x86_64-usb.conf create mode 100644 configs/releng/efiboot/loader/entries/uefi-shell-v1-x86_64.conf create mode 100644 configs/releng/efiboot/loader/entries/uefi-shell-v2-x86_64.conf create mode 100644 configs/releng/efiboot/loader/loader.conf
diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 63cbad0..0f2ebfb 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -69,6 +69,28 @@ make_boot() { make_boot_efi() { if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then if [[ ${arch} == "x86_64" ]]; then + ## Start - UEFI USB + + mkdir -p ${work_dir}/iso/EFI/boot + cp ${work_dir}/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi + + mkdir -p ${work_dir}/iso/loader/entries + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/loader.conf + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/uefi-shell-v2-x86_64.conf + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/uefi-shell-v1-x86_64.conf + + sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf + + # EFI Shell 2.0 for UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell ) + wget -O ${work_dir}/iso/EFI/shellx64_v2.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellBinPkg/UefiShe... + # EFI Shell 1.0 for non UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell ) + wget -O ${work_dir}/iso/EFI/shellx64_v1.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/Full... + + ## End - UEFI USB + + ## Start - UEFI CD + mkdir -p ${work_dir}/iso/EFI/archiso dd of=${work_dir}/iso/EFI/archiso/efiboot.img bs=1 seek=20M count=0 mkfs.vfat ${work_dir}/iso/EFI/archiso/efiboot.img @@ -80,29 +102,28 @@ make_boot_efi() { cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img
- # There are plans to support command line options via a config file (not yet in linux-3.3) - #cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/boot/bootx64.efi - #cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/boot/linux.img - #echo "archisolabel=${iso_label} initrd=\EFI\boot\linux.img" | iconv -f ascii -t ucs2 > ${work_dir}/iso/EFI/boot/linux.conf - - # For now, provide an EFI-shell until 'linux.conf' hits mainline. mkdir -p ${work_dir}/efiboot/EFI/boot - # EFI Shell 2.0 for UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell ) - #wget -O ${work_dir}/efiboot/EFI/boot/bootx64.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellBinPkg/UefiShe... - # EFI Shell 1.0 for non UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell ) - wget -O ${work_dir}/efiboot/EFI/boot/bootx64.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/Full... + cp ${work_dir}/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi
- # Add an EFI shell script for automatic boot if ESC-key is not pressed within 5 seconds timeout. - sed "s|%ARCHISO_LABEL%|${iso_label}|g; - s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/EFI/boot/startup_iso.nsh > ${work_dir}/efiboot/EFI/boot/startup.nsh - - mkdir -p ${work_dir}/iso/EFI/boot - cp ${work_dir}/efiboot/EFI/boot/bootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi + mkdir -p ${work_dir}/efiboot/loader/entries + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/loader.conf + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf
sed "s|%ARCHISO_LABEL%|${iso_label}|g; - s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/EFI/boot/startup_usb.nsh > ${work_dir}/iso/EFI/boot/startup.nsh + s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf
+ cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/shellx64_v2.efi + cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/shellx64_v1.efi + + # There are plans to support command line options via a config file (not yet in linux-3.3) + #cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/boot/bootx64.efi + #cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/boot/archiso.img + #echo "archisobasedir=${install_dir} archisolabel=${iso_label} initrd=\EFI\boot\archiso.img" > ${work_dir}/efiboot/EFI/boot/linux.conf + umount ${work_dir}/efiboot + + ## End - UEFI CD fi : > ${work_dir}/build.${FUNCNAME} fi diff --git a/configs/releng/efiboot/loader/entries/archiso-x86_64-cd.conf b/configs/releng/efiboot/loader/entries/archiso-x86_64-cd.conf new file mode 100644 index 0000000..9892c59 --- /dev/null +++ b/configs/releng/efiboot/loader/entries/archiso-x86_64-cd.conf @@ -0,0 +1,4 @@ +title Arch Linux archiso x86_64 UEFI CD +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% diff --git a/configs/releng/efiboot/loader/entries/archiso-x86_64-usb.conf b/configs/releng/efiboot/loader/entries/archiso-x86_64-usb.conf new file mode 100644 index 0000000..f61c532 --- /dev/null +++ b/configs/releng/efiboot/loader/entries/archiso-x86_64-usb.conf @@ -0,0 +1,4 @@ +title Arch Linux archiso x86_64 UEFI USB +linux /%INSTALL_DIR%/boot/x86_64/vmlinuz +initrd /%INSTALL_DIR%/boot/x86_64/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% diff --git a/configs/releng/efiboot/loader/entries/uefi-shell-v1-x86_64.conf b/configs/releng/efiboot/loader/entries/uefi-shell-v1-x86_64.conf new file mode 100644 index 0000000..9597ff2 --- /dev/null +++ b/configs/releng/efiboot/loader/entries/uefi-shell-v1-x86_64.conf @@ -0,0 +1,2 @@ +title UEFI Shell x86_64 v1 +efi /EFI/shellx64_v1.efi diff --git a/configs/releng/efiboot/loader/entries/uefi-shell-v2-x86_64.conf b/configs/releng/efiboot/loader/entries/uefi-shell-v2-x86_64.conf new file mode 100644 index 0000000..0dde77a --- /dev/null +++ b/configs/releng/efiboot/loader/entries/uefi-shell-v2-x86_64.conf @@ -0,0 +1,2 @@ +title UEFI Shell x86_64 v2 +efi /EFI/shellx64_v2.efi diff --git a/configs/releng/efiboot/loader/loader.conf b/configs/releng/efiboot/loader/loader.conf new file mode 100644 index 0000000..62c4a83 --- /dev/null +++ b/configs/releng/efiboot/loader/loader.conf @@ -0,0 +1,2 @@ +timeout 3 +default archiso-x86_64 diff --git a/configs/releng/packages.x86_64 b/configs/releng/packages.x86_64 index fa43983..35114ae 100644 --- a/configs/releng/packages.x86_64 +++ b/configs/releng/packages.x86_64 @@ -18,6 +18,7 @@ gptfdisk grml-zsh-config grub-bios grub-efi-x86_64 +gummiboot-efi haveged hdparm ipw2100-fw
Signed-off-by: Gerardo Exequiel Pozzi vmlinuz386@yahoo.com.ar --- configs/releng/build.sh | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 0f2ebfb..5d573a2 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -65,19 +65,17 @@ make_boot() { fi }
-# Prepare EFI "El Torito" boot image (using Linux >= 3.3 EFI boot stub) -make_boot_efi() { +make_efi() { if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then if [[ ${arch} == "x86_64" ]]; then - ## Start - UEFI USB
mkdir -p ${work_dir}/iso/EFI/boot cp ${work_dir}/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi
mkdir -p ${work_dir}/iso/loader/entries - cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/loader.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/uefi-shell-v2-x86_64.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/uefi-shell-v1-x86_64.conf + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/
sed "s|%ARCHISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf @@ -87,9 +85,14 @@ make_boot_efi() { # EFI Shell 1.0 for non UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell ) wget -O ${work_dir}/iso/EFI/shellx64_v1.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/Full...
- ## End - UEFI USB + fi + : > ${work_dir}/build.${FUNCNAME} + fi +}
- ## Start - UEFI CD +make_efiboot() { + if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then + if [[ ${arch} == "x86_64" ]]; then
mkdir -p ${work_dir}/iso/EFI/archiso dd of=${work_dir}/iso/EFI/archiso/efiboot.img bs=1 seek=20M count=0 @@ -106,24 +109,18 @@ make_boot_efi() { cp ${work_dir}/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi
mkdir -p ${work_dir}/efiboot/loader/entries - cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/loader.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf - cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/
sed "s|%ARCHISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf
- cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/shellx64_v2.efi - cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/shellx64_v1.efi - - # There are plans to support command line options via a config file (not yet in linux-3.3) - #cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/boot/bootx64.efi - #cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/boot/archiso.img - #echo "archisobasedir=${install_dir} archisolabel=${iso_label} initrd=\EFI\boot\archiso.img" > ${work_dir}/efiboot/EFI/boot/linux.conf - + cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/ + cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/ + umount ${work_dir}/efiboot
- ## End - UEFI CD fi : > ${work_dir}/build.${FUNCNAME} fi @@ -293,7 +290,8 @@ make_common_single() { make_packages make_setup_mkinitcpio make_boot - make_boot_efi + make_efi + make_efiboot make_syslinux make_isolinux make_customize_root_image
Signed-off-by: Gerardo Exequiel Pozzi vmlinuz386@yahoo.com.ar --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README b/README index 7c899f9..d0e4e21 100644 --- a/README +++ b/README @@ -213,7 +213,7 @@ Note: Using here a MBR partition mode as example, but GPT should also works # mount <DEV-TARGET-N> <MNT-TARGET-N>
4) Extract ISO image on target filesystem. -# bsdtar -x --exclude=isolinux/ --exclude=EFI/ -f <ISO-SOURCE> -C <MNT-TARGET-N> +# bsdtar -x --exclude=isolinux/ --exclude=EFI/ --exclude=loader/ -f <ISO-SOURCE> -C <MNT-TARGET-N>
5) Install syslinux bootloader on target filesystem. (See know issue (2) if using FAT) # extlinux -i <MNT-TARGET-N>/arch/boot/syslinux
* Increase size to a safe 31M, (currently we have 400K free since latest changes) * Also set a filesystem label, can be useful for future usage...
Signed-off-by: Gerardo Exequiel Pozzi vmlinuz386@yahoo.com.ar --- configs/releng/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 5d573a2..125be11 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -95,8 +95,8 @@ make_efiboot() { if [[ ${arch} == "x86_64" ]]; then
mkdir -p ${work_dir}/iso/EFI/archiso - dd of=${work_dir}/iso/EFI/archiso/efiboot.img bs=1 seek=20M count=0 - mkfs.vfat ${work_dir}/iso/EFI/archiso/efiboot.img + truncate -s 31M ${work_dir}/iso/EFI/archiso/efiboot.img + mkfs.vfat -n ARCHISO_EFI ${work_dir}/iso/EFI/archiso/efiboot.img
mkdir -p ${work_dir}/efiboot mount ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot
arch-releng@lists.archlinux.org