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/FullShell/X64/Shell_Full.efi
- ## 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