Skip to content

Instantly share code, notes, and snippets.

@agners
Created December 18, 2012 18:28
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save agners/4330598 to your computer and use it in GitHub Desktop.
Save agners/4330598 to your computer and use it in GitHub Desktop.
Adds Grub2 entries found on EFI system partition (/boot/efi)
#!/bin/sh
set -e
# Probe for UEFI entries in EFI system partition
prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"
. "${datarootdir}/grub/grub-mkconfig_lib"
found=
bcd=/boot/efi/EFI/Microsoft/Boot/BCD
if [ -n "$bcd" ]; then
if grep -qs "W.i.n.d.o.w.s. .8" "$bcd"; then
long="Windows 8 (loader)"
elif grep -qs "W.i.n.d.o.w.s. .7" "$bcd"; then
long="Windows 7 (loader)"
elif grep -qs "W.i.n.d.o.w.s. .V.i.s.t.a" "$bcd"; then
long="Windows Vista (loader)"
elif grep -qs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8. .R.2." "$bcd"; then
long="Windows Server 2008 R2 (loader)"
elif grep -qs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8." "$bcd"; then
long="Windows Server 2008 (loader)"
elif grep -qs "W.i.n.d.o.w.s. .R.e.c.o.v.e.r.y. .E.n.v.i.r.o.n.m.e.n.t" "$bcd"; then
long="Windows Recovery Environment (loader)"
elif grep -qs "W.i.n.d.o.w.s. .S.e.t.u.p" "$bcd"; then
long="Windows Recovery Environment (loader)"
else
long="Windows Vista (loader)"
fi
found=true
gettext_printf "Found %s on %s\n" "${long}" "UEFI ESP" >&2
cat << EOF
menuentry "${long}" {
insmod search_fs_uuid
insmod chain
EOF
DEVICE=`cat /etc/mtab | grep /boot/efi | cut -f 1 -d ' '`
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
cat << EOF
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment