From 5362b3d61295397e17b8633208d10d95c7b5e20a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B8=D1=80=D0=B5=D1=86=D0=BA=D0=B8=D0=B9=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Thu, 1 Nov 2018 13:18:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B3=D0=B8=D0=B1=D1=80=D0=B8=D0=B4=D0=BD=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20UEFI=20iso-=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../5_setup/sys-boot/grub/uefi_isohibryd | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/profiles/templates/3.6/6_ac_builder_iso/5_setup/sys-boot/grub/uefi_isohibryd b/profiles/templates/3.6/6_ac_builder_iso/5_setup/sys-boot/grub/uefi_isohibryd index f186d0024..c7525c39f 100644 --- a/profiles/templates/3.6/6_ac_builder_iso/5_setup/sys-boot/grub/uefi_isohibryd +++ b/profiles/templates/3.6/6_ac_builder_iso/5_setup/sys-boot/grub/uefi_isohibryd @@ -19,24 +19,31 @@ set prefix=(\$root)/boot/grub source \$prefix/x86_64-efi/grub.cfg EOF +makefat() { + IMG=$1 + SOURCESIZE=$2 + SPT=$3 + rm -f "$IMG" + mkfs.fat -C -v "$IMG" $(( ($SOURCESIZE / 1024 + 64) / $SPT * $SPT )) 2>/dev/null | + sed -rn 's/.* ([0-9]+) sectors per track.*/\1/p' +} for i in ${IMAGE_DIR}/usr/lib/grub/x86_64-efi/part_*.mod;do echo insmod `basename $i .mod`;done >${CD_GRUB_DIR}/x86_64-efi/grub.cfg echo "source /boot/grub/grub.cfg" >>${CD_GRUB_DIR}/x86_64-efi/grub.cfg tar cf - -C "${EFI_IMAGE_DIR}" boot >${MEMDISK} -grub-mkimage -O x86_64-efi -d ${IMAGEDIR}/usr/lib/grub/x86_64-efi -m ${MEMDISK} -o ${CDROOT_DIR}/bootx64.efi -p '(memdisk)/boot/grub' search iso9660 configfile normal memdisk tar part_msdos fat -rm -f ${CD_GRUB_DIR}/efi.img -MKFSVER=$(mkfs.fat 2>/dev/null | sed -nr "s/mkfs.fat\s([0-9]).*/\1/;/[0-9]/p") -if [[ -n $MKFSVER && $MKFSVER -lt 4 ]] +BOOTEFI="${CDROOT_DIR}/bootx64.efi" +grub-mkimage -O x86_64-efi -d ${IMAGEDIR}/usr/lib/grub/x86_64-efi -m ${MEMDISK} -o "${BOOTEFI}" -p '(memdisk)/boot/grub' search iso9660 configfile normal memdisk tar part_msdos fat +BOOTEFISIZE=$(stat -c %s "${BOOTEFI}") +EFIIMG="${CD_GRUB_DIR}/efi.img" +SECTORS=$(makefat "${EFIIMG}" $BOOTEFISIZE 32) +if [[ $SECTORS -ne 32 ]] then - SPT=32 -else - SPT=63 + makefat "${CD_GRUB_DIR}/efi.img" $BOOTEFISIZE $SECTORS &>/dev/null fi -mkfs.fat -C ${CD_GRUB_DIR}/efi.img $(( ($(stat -c %s "${CDROOT_DIR}/bootx64.efi") / 1024 + 64) / $SPT * $SPT )) &>/dev/null -mmd -i ${CD_GRUB_DIR}/efi.img ::efi -mmd -i ${CD_GRUB_DIR}/efi.img ::efi/boot -mcopy -i ${CD_GRUB_DIR}/efi.img ${CDROOT_DIR}/bootx64.efi ::efi/boot/bootx64.efi -rm ${CDROOT_DIR}/bootx64.efi +mmd -i "${EFIIMG}" ::efi +mmd -i "${EFIIMG}" ::efi/boot +mcopy -i "${EFIIMG}" "${BOOTEFI}" ::efi/boot/bootx64.efi +rm "${BOOTEFI}" rm ${MEMDISK} -rm -r ${EFI_IMAGE_DIR} +rm -r "${EFI_IMAGE_DIR}" exit 0