[arch-releng] [PATCH]{RFC]Change from UEFI Shell to gummiboot-efi-x86_64 for booting
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 -- 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
Do you ask to Tobias to, build it and put in repos like refind? -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
On Mon, Sep 17, 2012 at 7:53 PM, Gerardo Exequiel Pozzi
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. -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
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. -- 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
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". -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
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 -- 1.7.12.1 -- 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 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 ;) -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
From: Keshav P R
Signed-off-by: Gerardo Exequiel Pozzi
Signed-off-by: Gerardo Exequiel Pozzi
* 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
participants (3)
-
Dave Reisner
-
Gerardo Exequiel Pozzi
-
Keshav P R