From 056cb9e74c690a9f5f2ec8967250257f48d38094 Mon Sep 17 00:00:00 2001 From: Tobias Powalowski Date: Fri, 25 Apr 2014 21:14:59 +0200 Subject: [PATCH] Download UEFI Shell IA32 v2 and v1 from Tianocore EDK2 SVN repo Remove 'efi_no_storage_paranoia' kernel parameter from ISO booting and setup script Remove not needed 'gpt' kernel parameter --- usr/bin/archboot-allinone.sh | 72 ++++++++++++++++-- usr/bin/archboot-update-iso.sh | 114 ++++++++++++++++++++++++++++- usr/share/archboot/installer/setup | 2 +- 3 files changed, 178 insertions(+), 10 deletions(-) diff --git a/usr/bin/archboot-allinone.sh b/usr/bin/archboot-allinone.sh index dc305bf61..b647c44fa 100755 --- a/usr/bin/archboot-allinone.sh +++ b/usr/bin/archboot-allinone.sh @@ -192,12 +192,18 @@ _download_uefi_shell_tianocore() { mkdir -p "${ALLINONE}/EFI/tools/" - ## Download Tianocore UDK/EDK2 ShellBinPkg UEFI "Full Shell" - For UEFI Spec. >=2.3 systems + ## Download Tianocore UDK/EDK2 ShellBinPkg UEFI X64 "Full Shell" - For UEFI Spec. >=2.3 systems curl --verbose -f -C - --ftp-pasv --retry 3 --retry-delay 3 -o "${ALLINONE}/EFI/tools/shellx64_v2.efi" "https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/X64/Shell.efi" - ## Download Tianocore UDK/EDK2 EdkShellBinPkg UEFI "Full Shell" - For UEFI Spec. <2.3 systems + ## Download Tianocore UDK/EDK2 EdkShellBinPkg UEFI X64 "Full Shell" - For UEFI Spec. <2.3 systems curl --verbose -f -C - --ftp-pasv --retry 3 --retry-delay 3 -o "${ALLINONE}/EFI/tools/shellx64_v1.efi" "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi" + ## Download Tianocore UDK/EDK2 ShellBinPkg UEFI IA32 "Full Shell" - For UEFI Spec. >=2.3 systems + curl --verbose -f -C - --ftp-pasv --retry 3 --retry-delay 3 -o "${ALLINONE}/EFI/tools/shellia32_v2.efi" "https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/Ia32/Shell.efi" + + ## Download Tianocore UDK/EDK2 EdkShellBinPkg UEFI IA32 "Full Shell" - For UEFI Spec. <2.3 systems + curl --verbose -f -C - --ftp-pasv --retry 3 --retry-delay 3 -o "${ALLINONE}/EFI/tools/shellia32_v1.efi" "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/Ia32/Shell_Full.efi" + } _prepare_uefi_gummiboot_USB_files() { @@ -216,7 +222,7 @@ GUMEOF title Arch Linux ${_UEFI_ARCH} Archboot linux /boot/vmlinuz_${_UEFI_ARCH} initrd /boot/initramfs_${_UEFI_ARCH}.img -options cgroup_disable=memory audit=0 gpt loglevel=7 efi_no_storage_paranoia add_efi_memmap +options cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap GUMEOF cat << GUMEOF > "${ALLINONE}/loader/entries/uefi-shell-${_UEFI_ARCH}-v2.conf" @@ -275,7 +281,7 @@ menuentry "Arch Linux ${_UEFI_ARCH} Archboot" { icon /EFI/refind/icons/os_arch.icns loader /boot/vmlinuz_${_UEFI_ARCH} initrd /boot/initramfs_${_UEFI_ARCH}.img - options "cgroup_disable=memory audit=0 gpt loglevel=7 efi_no_storage_paranoia add_efi_memmap" + options "cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap" ostype Linux graphics off } @@ -295,6 +301,60 @@ EOF } +_prepare_uefi_IA32_GRUB_USB_files() { + + mkdir -p "${ALLINONE}/EFI/boot" + + echo 'configfile ${cmdpath}/grubia32.cfg' > /tmp/grub.cfg + + grub-mkstandalone -d /usr/lib/grub/i386-efi/ -O i386-efi --modules="part_gpt part_msdos" --fonts="unicode" --locales="en@quot" --themes="" -o "${ALLINONE}/EFI/boot/bootia32.efi" "/boot/grub/grub.cfg=/tmp/grub.cfg" -v + + cat << GRUBEOF > "${ALLINONE}/EFI/boot/grubia32.cfg" +insmod part_gpt +insmod part_msdos +insmod fat + +insmod efi_gop +insmod efi_uga +insmod video_bochs +insmod video_cirrus + +insmod font + +if loadfont "${prefix}/fonts/unicode.pf2" ; then + insmod gfxterm + set gfxmode="1366x768x32;1280x800x32;1024x768x32;auto" + terminal_input console + terminal_output gfxterm +fi + +menuentry "Arch Linux i686 Archboot on IA32 UEFI" { + set gfxpayload=keep + search --no-floppy --set=root --file /boot/vmlinuz_i686 + linux /boot/vmlinuz_i686 cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap + initrd /boot/initramfs_i686.img +} + +menuentry "Arch Linux x86_64 Archboot on IA32 UEFI - if x86_64 CPU - no efivar/efibootmgr support" { + set gfxpayload=keep + search --no-floppy --set=root --file /boot/vmlinuz_x86_64 + linux /boot/vmlinuz_x86_64 cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap _EFI_IA32=1 + initrd /boot/initramfs_x86_64.img +} + +menuentry "UEFI Shell IA32 v2" { + search --no-floppy --set=root --file /EFI/tools/shellia32_v2.efi + chainloader /EFI/tools/shellia32_v2.efi +} + +menuentry "UEFI Shell IA32 v1" { + search --no-floppy --set=root --file /EFI/tools/shellia32_v1.efi + chainloader /EFI/tools/shellia32_v1.efi +} +GRUBEOF + +} + _prepare_packages _prepare_other_files @@ -309,6 +369,8 @@ _prepare_uefi_gummiboot_USB_files _prepare_uefi_rEFInd_USB_files +_prepare_uefi_IA32_GRUB_USB_files + unset _UEFI_ARCH unset _SPEC_UEFI_ARCH @@ -333,7 +395,7 @@ xorriso -as mkisofs \ -eltorito-catalog boot/syslinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ -isohybrid-mbr /usr/lib/syslinux/bios/isohdpfx.bin \ - --sort-weight 1 boot/syslinux/isolinux.bin \ + --sort-weight 1 boot/syslinux/isolinux.bin \ -output "${IMAGENAME}.iso" "${ALLINONE}/" &> "/tmp/archboot_allinone_xorriso.log" # create x86_64 iso, if not present diff --git a/usr/bin/archboot-update-iso.sh b/usr/bin/archboot-update-iso.sh index 573534060..f6d1ce4eb 100755 --- a/usr/bin/archboot-update-iso.sh +++ b/usr/bin/archboot-update-iso.sh @@ -17,6 +17,7 @@ export LANG="en_US" [[ -z "${_UPDATE_UEFI_PREBOOTLOADER}" ]] && _UPDATE_UEFI_PREBOOTLOADER="1" [[ -z "${_UPDATE_UEFI_LOCKDOWN_MS}" ]] && _UPDATE_UEFI_LOCKDOWN_MS="1" [[ -z "${_UPDATE_UEFI_REFIND}" ]] && _UPDATE_UEFI_REFIND="1" +[[ -z "${_UPDATE_UEFI_IA32_GRUB}" ]] && _UPDATE_UEFI_IA32_GRUB="1" [[ -z "${_UPDATE_SYSLINUX}" ]] && _UPDATE_SYSLINUX="1" [[ -z "${_UPDATE_SYSLINUX_CONFIG}" ]] && _UPDATE_SYSLINUX_CONFIG="1" @@ -187,7 +188,7 @@ It allows you to install Arch Linux or perform system maintenance. ENDTEXT MENU LABEL Boot Arch Linux (x86_64) LINUX /boot/vmlinuz_x86_64 -APPEND cgroup_disable=memory audit=0 gpt loglevel=7 rootdelay=10 +APPEND cgroup_disable=memory audit=0 loglevel=7 rootdelay=10 INITRD /boot/initramfs_x86_64.img EOF @@ -203,7 +204,7 @@ It allows you to install Arch Linux or perform system maintenance. ENDTEXT MENU LABEL Boot Arch Linux (i686) LINUX /boot/vmlinuz_i686 -APPEND cgroup_disable=memory audit=0 gpt loglevel=7 rootdelay=10 +APPEND cgroup_disable=memory audit=0 loglevel=7 rootdelay=10 INITRD /boot/initramfs_i686.img EOF @@ -301,6 +302,48 @@ _download_uefi_shell_tianocore() { rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellx64_v1.efi.backup" || true echo + ## Download Tianocore UDK/EDK2 ShellBinPkg UEFI IA32 "Full Shell" - For Spec. Ver. >=2.3 systems + + mv "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi" "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi.backup" || true + echo + + if [[ -e "${_ARCHBOOT_ISO_WD}/shellia32_v2.efi" ]]; then + cp -f "${_ARCHBOOT_ISO_WD}/shellia32_v2.efi" "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi" + echo + else + curl --verbose -f -C - --ftp-pasv --retry 3 --retry-delay 3 -o "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi" "https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/Ia32/Shell.efi" || true + echo + + if [[ ! "$(file "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi" | grep 'executable')" ]]; then + rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi" || true + mv "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi.backup" "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi" || true + fi + fi + + rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v2.efi.backup" || true + echo + + ## Download Tianocore UDK/EDK2 EdkShellBinPkg UEFI IA32 "Full Shell" - For Spec. Ver. <2.3 systems + + mv "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi" "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi.backup" || true + echo + + if [[ -e "${_ARCHBOOT_ISO_WD}/shellia32_v1.efi" ]]; then + cp -f "${_ARCHBOOT_ISO_WD}/shellia32_v1.efi" "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi" + echo + else + curl --verbose -f -C - --ftp-pasv --retry 3 --retry-delay 3 -o "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi" "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/Ia32/Shell_Full.efi" || true + echo + + if [[ ! "$(file "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi" | grep 'executable')" ]]; then + rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi" || true + mv "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi.backup" "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi" || true + fi + fi + + rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/tools/shellia32_v1.efi.backup" || true + echo + } _update_uefi_gummiboot_USB_files() { @@ -323,7 +366,7 @@ GUMEOF title Arch Linux ${_UEFI_ARCH} Archboot linux /boot/vmlinuz_${_UEFI_ARCH} initrd /boot/initramfs_${_UEFI_ARCH}.img -options cgroup_disable=memory audit=0 gpt loglevel=7 efi_no_storage_paranoia add_efi_memmap +options cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap GUMEOF cat << GUMEOF > "${_ARCHBOOT_ISO_EXT_DIR}/loader/entries/uefi-shell-${_UEFI_ARCH}-v2.conf" @@ -388,7 +431,7 @@ menuentry "Arch Linux ${_UEFI_ARCH} Archboot" { icon /EFI/refind/icons/os_arch.icns loader /boot/vmlinuz_${_UEFI_ARCH} initrd /boot/initramfs_${_UEFI_ARCH}.img - options "cgroup_disable=memory audit=0 gpt loglevel=7 efi_no_storage_paranoia add_efi_memmap" + options "cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap" ostype Linux graphics off } @@ -409,6 +452,66 @@ EOF } +_update_uefi_IA32_GRUB_USB_files() { + + rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/boot/bootia32.efi" || true + rm -f "${_ARCHBOOT_ISO_EXT_DIR}/EFI/boot/grubia32.cfg" || true + echo + + mkdir -p "${_ARCHBOOT_ISO_EXT_DIR}/EFI/boot" + + echo 'configfile ${cmdpath}/grubia32.cfg' > /tmp/grub.cfg + + grub-mkstandalone -d /usr/lib/grub/i386-efi/ -O i386-efi --modules="part_gpt part_msdos" --fonts="unicode" --locales="en@quot" --themes="" -o "${_ARCHBOOT_ISO_EXT_DIR}/EFI/boot/bootia32.efi" "/boot/grub/grub.cfg=/tmp/grub.cfg" -v + echo + + cat << GRUBEOF > "${_ARCHBOOT_ISO_EXT_DIR}/EFI/boot/grubia32.cfg" +insmod part_gpt +insmod part_msdos +insmod fat + +insmod efi_gop +insmod efi_uga +insmod video_bochs +insmod video_cirrus + +insmod font + +if loadfont "${prefix}/fonts/unicode.pf2" ; then + insmod gfxterm + set gfxmode="1366x768x32;1280x800x32;1024x768x32;auto" + terminal_input console + terminal_output gfxterm +fi + +menuentry "Arch Linux i686 Archboot on IA32 UEFI" { + set gfxpayload=keep + search --no-floppy --set=root --file /boot/vmlinuz_i686 + linux /boot/vmlinuz_i686 cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap + initrd /boot/initramfs_i686.img +} + +menuentry "Arch Linux x86_64 Archboot on IA32 UEFI - if x86_64 CPU - no efivar/efibootmgr support" { + set gfxpayload=keep + search --no-floppy --set=root --file /boot/vmlinuz_x86_64 + linux /boot/vmlinuz_x86_64 cgroup_disable=memory audit=0 loglevel=7 add_efi_memmap _EFI_IA32=1 + initrd /boot/initramfs_x86_64.img +} + +menuentry "UEFI Shell IA32 v2" { + search --no-floppy --set=root --file /EFI/tools/shellia32_v2.efi + chainloader /EFI/tools/shellia32_v2.efi +} + +menuentry "UEFI Shell IA32 v1" { + search --no-floppy --set=root --file /EFI/tools/shellia32_v1.efi + chainloader /EFI/tools/shellia32_v1.efi +} +GRUBEOF + echo + +} + _remove_i686_iso_files() { rm -f "${_ARCHBOOT_ISO_EXT_DIR}/boot/vmlinuz_i686" || true @@ -554,6 +657,8 @@ fi [[ "${_UPDATE_UEFI_REFIND}" == "1" ]] && _update_uefi_rEFInd_USB_files +[[ "${_UPDATE_UEFI_IA32_GRUB}" == "1" ]] && _update_uefi_IA32_GRUB_USB_files + [[ "${_UPDATE_SYSLINUX}" == "1" ]] && _update_syslinux_iso_files [[ "${_UPDATE_SYSLINUX_CONFIG}" == "1" ]] && _update_syslinux_iso_config @@ -608,6 +713,7 @@ unset _UPDATE_UEFI_GUMMIBOOT unset _UPDATE_UEFI_PREBOOTLOADER unset _UPDATE_UEFI_LOCKDOWN_MS unset _UPDATE_UEFI_REFIND +unset _UPDATE_UEFI_IA32_GRUB unset _UPDATE_SYSLINUX unset _UPDATE_SYSLINUX_CONFIG unset _CD_UEFI_PARAMETERS diff --git a/usr/share/archboot/installer/setup b/usr/share/archboot/installer/setup index 7be07b880..78d0f27ed 100755 --- a/usr/share/archboot/installer/setup +++ b/usr/share/archboot/installer/setup @@ -3241,7 +3241,7 @@ bootloader_kernel_parameters() { _KERNEL_PARAMS_COMMON_UNMOD="root=${_rootpart} rootfstype=${ROOTFS} rw ${ROOTFLAGS} ${RAIDARRAYS} ${CRYPTSETUP} cgroup_disable=memory" _KERNEL_PARAMS_BIOS_UNMOD="${_KERNEL_PARAMS_COMMON_UNMOD}" - _KERNEL_PARAMS_UEFI_UNMOD="${_KERNEL_PARAMS_COMMON_UNMOD} efi_no_storage_paranoia add_efi_memmap" + _KERNEL_PARAMS_UEFI_UNMOD="${_KERNEL_PARAMS_COMMON_UNMOD} add_efi_memmap" _KERNEL_PARAMS_BIOS_MOD="$(echo "${_KERNEL_PARAMS_BIOS_UNMOD}" | sed -e 's# # #g' | sed -e 's# # #g')" _KERNEL_PARAMS_UEFI_MOD="$(echo "${_KERNEL_PARAMS_UEFI_UNMOD}" | sed -e 's# # #g' | sed -e 's# # #g')"