grub-mkrescue for EFI (untested)

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2009-12-29 11:24:13 +01:00
parent f704cae368
commit ac0289ba92
9 changed files with 47 additions and 33 deletions

View file

@ -31,6 +31,8 @@ native_platform=@platform@
coreboot_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/${target_cpu}-coreboot
pc_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/${target_cpu}-pc
efi32_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/i386-efi
efi64_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/x86_64-efi
# Usage: usage
# Print the usage.
@ -109,13 +111,23 @@ if [ "${override_dir}" = "" ] ; then
if test -e "${pc_dir}" ; then
process_input_dir ${pc_dir} pc
fi
if test -e "${efi32_dir}" ; then
process_input_dir ${efi32_dir} efi32
fi
if test -e "${efi64_dir}" ; then
process_input_dir ${efi64_dir} efi64
fi
else
process_input_dir ${override_dir} ${native_platform}
coreboot_dir=
pc_dir=
case "${native_platform}" in
coreboot) coreboot_dir=${override_dir} ;;
pc) pc_dir=${override_dir} ;;
efi32_dir=
efi64_dir=
case "${target_cpu}-${native_platform}" in
i386-coreboot) coreboot_dir=${override_dir} ;;
i386-pc) pc_dir=${override_dir} ;;
i386-efi) efi32_dir=${override_dir} ;;
x86_64-efi) efi64_dir=${override_dir} ;;
esac
fi
@ -168,6 +180,23 @@ if test -e "${pc_dir}" ; then
grub_mkisofs_arguments="${grub_mkisofs_arguments} -b boot/grub/i386-pc/eltorito.img -boot-info-table"
fi
# build bootx64.efi
if test -e "${efi64_dir}" ; then
echo "Generates bootx64.efi"
mkdir -p ${iso9660_dir}/efi/boot
grub-mkimage -d ${efi64_dir}/ -o ${iso9660_dir}/efi/boot/bootx64.efi --prefix=/boot/grub/x86_64-efi \
search iso9660 configfile sh
modules="$(cat ${efi64_dir}/partmap.lst) ${modules}"
(for i in ${modules} ; do
if [ "x$i" != xkernel.mod ]; then
echo "insmod $i"
fi
done ; \
echo "source /boot/grub/grub.cfg") \
> ${iso9660_dir}/boot/grub/x86_64-efi/grub.cfg
fi
# build iso image
grub-mkisofs ${grub_mkisofs_arguments} -o ${output_image} -r ${iso9660_dir} ${source}
rm -rf ${iso9660_dir}