initial import
This commit is contained in:
49
ipxe/grub
Normal file
49
ipxe/grub
Normal file
@@ -0,0 +1,49 @@
|
||||
#! /bin/sh -e
|
||||
########################################################
|
||||
# This script generates an iPXE entry on grub.cfg #
|
||||
# if ipxe is installed on the system. #
|
||||
########################################################
|
||||
|
||||
prefix="/usr"
|
||||
exec_prefix="${prefix}"
|
||||
|
||||
datarootdir="/usr/share"
|
||||
datadir="${datarootdir}"
|
||||
|
||||
. "${datadir}/grub/grub-mkconfig_lib"
|
||||
|
||||
IPXE_BZIMAGE="/boot/ipxe/ipxe.lkrn"
|
||||
case $(uname -m) in
|
||||
x86_64)
|
||||
IPXE_EFI="/usr/lib/ipxe/efi-x86_64.efi" ;;
|
||||
*)
|
||||
IPXE_EFI="/usr/lib/ipxe/efi-i386.efi" ;;
|
||||
esac
|
||||
EFI_MOUNT="$(lsblk -l -o 'MOUNTPOINT,PARTTYPE' -n | grep 'c12a7328-f81f-11d2-ba4b-00a0c93ec93b' | head -n1 | cut -d' ' -f1)"
|
||||
IPXE_EFI_DEST="${EFI_MOUNT}/EFI/ipxe/ipxe.efi"
|
||||
CLASS="--class ipxe --class gnu --class tool"
|
||||
|
||||
if [ -d /sys/firmware/efi ]; then
|
||||
if [ -n "${EFI_MOUNT}" ]; then
|
||||
# EFI system
|
||||
# This can chainload from EFI system partition only!
|
||||
echo "Setting up iPXE for EFI chainloading" >&2
|
||||
mkdir -p "$(dirname ${IPXE_EFI_DEST})"
|
||||
cp ${IPXE_EFI} "${IPXE_EFI_DEST}"
|
||||
echo "menuentry \"iPXE - Free Boot Firmware\" ${CLASS} {"
|
||||
prepare_grub_to_access_device $(${grub_probe} --target=device ${IPXE_EFI_DEST}) | sed -e "s/^/\t/"
|
||||
echo -e "\techo 'Loading iPXE EFI ...'"
|
||||
echo -e "\tchainloader $(make_system_path_relative_to_its_root ${IPXE_EFI_DEST})"
|
||||
echo "}"
|
||||
fi
|
||||
else
|
||||
if [ -e ${IPXE_BZIMAGE} ] && is_path_readable_by_grub ${IPXE_BZIMAGE}; then
|
||||
# image exists, create menu entry
|
||||
echo "Found iPXE bzImage: ${IPXE_BZIMAGE}" >&2
|
||||
echo "menuentry \"iPXE - Free Boot Firmware\" ${CLASS} {"
|
||||
prepare_grub_to_access_device $(${grub_probe} --target=device ${IPXE_BZIMAGE}) | sed -e "s/^/\t/"
|
||||
echo -e "\techo 'Loading iPXE ...'"
|
||||
echo -e "\tlinux16 $(make_system_path_relative_to_its_root ${IPXE_BZIMAGE})"
|
||||
echo "}"
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user