diff options
Diffstat (limited to 'grub.cfg')
-rw-r--r-- | grub.cfg | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/grub.cfg b/grub.cfg new file mode 100644 index 000000000000..b0abc4da8319 --- /dev/null +++ b/grub.cfg @@ -0,0 +1,164 @@ +function try_user_config { + set root="${1}" + for dir in boot grub grub2 boot/grub boot/grub2; do + for name in libreboot_ autoboot_ librecore_ coreboot_ ''; do + if [ -f /"${dir}"/"${name}"grub.cfg ]; then + unset superusers + configfile /"${dir}"/"${name}"grub.cfg + fi + done + done +} + +function search_grub { + for i in 0 1; do + # raw devices + try_user_config "(${1}${i})" + for part in 1 2 3 4 5; do + # MBR/GPT partitions + try_user_config "(${1}${i},${part})" + done + done +} + +function try_isolinux_config { + set root="${1}" + for dir in '' /boot; do + if [ -f "${dir}"/isolinux/isolinux.cfg ]; then + syslinux_configfile -i "${dir}"/isolinux/isolinux.cfg + elif [ -f "${dir}"/syslinux/syslinux.cfg ]; then + syslinux_configfile -s "${dir}"/syslinux/syslinux.cfg + fi + done +} + +function search_isolinux { + for i in 0 1; do + # raw devices + try_isolinux_config "(${1}${i})" + for part in 1 2 3 4 5; do + # MBR/GPT partitions + try_isolinux_config "(${1}${i},${part})" + done + done +} + +function load_video { + if [ x$feature_all_video_module = xy ]; then + insmod all_video + else + insmod efi_gop + insmod efi_uga + insmod ieee1275_fb + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus + fi +} + + +if loadfont (cbfsdisk)/font.pf2 ; then + set gfxmode=auto + load_video + insmod gfxterm + set locale_dir=$prefix/locale + set lang=en_US + insmod gettext +fi + +terminal_input console +terminal_output gfxterm +gfxpayload=keep + +if [ x$feature_timeout_style = xy ] ; then + set timeout_style=menu + set timeout=1 +# Fallback normal timeout code in case the timeout_style feature is +# unavailable. +else + set timeout=5 +fi + +insmod png +if background_image (cbfsdisk)/background.png; then + true +fi + +#Scan for OS on internal HDD +insmod regexp +insmod ahci +insmod part_msdos +for x in (ahci*,*) ; do + if [ -f "$x/grub/grub.cfg" ] ; then + menuentry "Load Config from $x" $x { + root=$2 + configfile /grub/grub.cfg + } + fi + if [ -f "$x/boot/grub/grub.cfg" ] ; then + menuentry "Load Config from $x" $x { + root=$2 + configfile /boot/grub/grub.cfg + } + fi +done + +for x in (usb*,*) ; do + if [ -f "$x/grub/grub.cfg" ] ; then + menuentry "Load Config from $x" $x { + root=$2 + configfile /grub/grub.cfg + } + fi + if [ -f "$x/boot/grub/grub.cfg" ] ; then + menuentry "Load Config from $x" $x { + root=$2 + configfile /boot/grub/grub.cfg + } + fi +done + + +menuentry 'Search ISOLINUX menu (AHCI) [a]' --hotkey='a' { + search_isolinux ahci +} + +menuentry 'Search ISOLINUX menu (USB) [u]' --hotkey='u' { + search_isolinux usb +} + +menuentry 'Search ISOLINUX menu (CD/DVD) [d]' --hotkey='d' { + insmod ata + for dev in ata0 ata1 ata2 ata3 ahci1; do + try_isolinux_config "(${dev})" + done +} + +menuentry 'Search for GRUB2 configuration on external media [s]' --hotkey='s' { + search_grub usb +} + +menuentry 'nvramcui' { + chainloader (cbfsdisk)/img/nvramcui +} + +menuentry 'coreinfo' { + chainloader (cbfsdisk)/img/coreinfo +} + +menuentry 'Memtest86+' { + chainloader (cbfsdisk)/img/memtest +} + +menuentry 'tint' { + chainloader (cbfsdisk)/img/tint +} + +menuentry 'Poweroff [p]' --hotkey='p' { + halt +} + +menuentry 'Reboot [r]' --hotkey='r' { + reboot +} |