( Using 2.02~beta2-7 from Debian Unstable  )

I have tried to write some cfg files to kind of organise them as libraries but it does not work as expected.

  It seems as the sourced cfg files are being interpreted.


  Here below you will find the overall idea in an theoric example.
Attached you will find an actual code (although you are missing some pieces from Super Grub2 Disk).


When selecting the "Boot manually..." submenu (not when trying to run one of their options) I am getting these errors:

BEGIN

error: syntax error
error: Incorrect command.
error: syntax error
error: Incorrect command.
error: syntax error
error: syntax error
error: Incorrect command.
error: syntax error
error: can't find command `searchindevice'
FATAL: int13_cdrom: function 42. Can't use 64bits lba

END

searchindevice is a function which it's sourced in main.cfg so it should be detected ok.

But anyways... the run_option function is being interpreted while I do not want it !!!

I have also tried to replace source command by extract_entries_source. I get different output but the same problem, the sourced file is being interpreted (I mean it is being run).

Thank you.


########################### caller.cfg

function process_option {

  set option_cfg="${1}"
  source ${option_cfg}
  menuentry ${option_title} {
    source ${option_cfg}
    run_option
  }

}

process_option ${prefix}/called.cfg
process_option ${prefix}/option2.cfg

########################### called.cfg

set option_title="My title"



function run_option {

  function aux_lib {

  }

  function aux_lib2 {

  }

  aux_lib
  aux_lib2

  do_interesting_stuff

}


adrian15
--
Support free software. Donate to Super Grub Disk. Apoya el software libre. Dona a Super Grub Disk. http://www.supergrubdisk.org/donate/
# Super Grub Disk Main Configuration file
# Copyright (C) 2009  Adrian Gibanel Lopez.
#
# Super Grub Disk is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Super Grub Disk is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

# Configure gfxterm, but allow it to be disabled by holding shift during boot.
# gfxterm is required to display non-ASCII translations.
loadfont "$prefix/unifont.pf2"
if keystatus --shift; then
  disable_gfxterm=true
  # export disable_gfxterm is needed so that the setting will persist even after
  # a "configfile /boot/grub/main.cfg" (which is what language_select.cfg does 
after
  # you select a new language)
  export disable_gfxterm

  # The following strings are intentionally not made translateable.
  echo "It has been detected that the shift key was held down. Because of this 
SG2D"
  echo "will use VGA text mode rather than gfxterm. This will cause display 
problems"
  echo "when using some non-English translations."
  echo
  echo "Press escape to continue to the main menu"
  sleep --interruptible 9999
fi

if [ "$disable_gfxterm" != true ]; then
  insmod all_video
  gfxmode=640x480
  if terminal_output --append gfxterm; \
  then \
      terminal_output --remove console; \
  fi
fi

# Export the variables so that they persist when loading a new menu.
export menu_color_normal
export menu_color_highlight
export menu_color_background
export bwcolor

function set_sgd_colors {
  if [ "$bwcolor" = "yes" ]; then
    menu_color_normal=white/black
    menu_color_highlight=black/white
    menu_color_background=black/white
  else
    menu_color_normal=white/brown
    menu_color_highlight=white/blue
    menu_color_background=yellow/cyan
  fi
}

set_sgd_colors

# Set secondary_locale_dir to the directory containing SG2D specific mo files.
# This makes grub aware of translations for SG2D specific strings.
secondary_locale_dir="${prefix}/sgd_locale/"

insmod part_acorn
insmod part_amiga
insmod part_apple
insmod part_bsd
insmod part_gpt
insmod part_msdos
insmod part_sun
insmod part_sunpc

# Prepare environment variables, needed mostly for update_paths()
export prefix_device prefix_path prefix_uuid
regexp -s prefix_device '^\((.*)\)/' "$prefix"
regexp -s prefix_path '^\(.*\)/(.*)$' "$prefix"
probe --fs-uuid --set=prefix_uuid "$prefix_device"

# Define a function for updating paths when device names change.
# search.mod is required for update-paths, and must be loaded before device
# names change because $prefix will be invalid.
insmod search

function update_paths {
  search --fs-uuid --set=prefix_device $prefix_uuid
  prefix="($prefix_device)/$prefix_path"
}

function process_option {

  set option_cfg="$1"
  source ${option_cfg}
  menuentry ${option_title} {
    source ${option_cfg}
    run_option
  }

}

# Timeout for menu
#set timeout=10

# Set default boot entry as Entry number 2 (counting from 0)
set default=2

# Get the version number for this Super GRUB2 Disk release
source "${prefix}/version.cfg"

# Get design variables
source "${prefix}/design.cfg"

menuentry "               ====---==- Super Grub2 Disk $sgrub_version  
-==---==== " {
  # Set pager=1 so ls output doesn't scroll past the top of the screen
  # but restore $pager to its previous value when finished
  set oldpager="${pager}"
  set pager=1

  cat /boot/grub/AUTHORS
  cat /boot/grub/COPYING

  set pager="${oldpager}"
  unset oldpager
  echo $"Press escape to return to the main menu"
  sleep --interruptible 9999
}

menuentry $"Languages..." {
  configfile "${prefix}/language_select.cfg"
}

# Everything
menuentry $"Everything" {
  configfile "${prefix}/everything.cfg"
}

submenu $"Boot manually..." {

  process_option "${prefix}/osdetect.cfg"

  # Load cfgdetect script as a new menu
  menuentry $"grub.cfg - (GRUB2 configuration files)" {
    currentmenu_str=$"grub.cfg - (GRUB2 configuration files)"
    export currentmenu_str
    menuinteractive=yes
    export menuinteractive
    configfile "${prefix}/cfgdetect.cfg"
  }

  # Load menulstdetect script as a new menu
  menuentry $"menu.lst - (GRUB legacy configuration files)" {
    currentmenu_str=$"menu.lst - (GRUB legacy configuration files)"
    export currentmenu_str
    menuinteractive=yes
    export menuinteractive
    configfile "${prefix}/menulstdetect.cfg"
  }

  # Load grubdetect script as a new menu
  menuentry $"core.img - (GRUB2 installation (even if mbr is overwritten))" {
    currentmenu_str=$"core.img - (GRUB2 installation (even if mbr is 
overwritten))"
    export currentmenu_str
    menuinteractive=yes
    export menuinteractive
    configfile "${prefix}/grubdetect.cfg"
  }

  # Load autoiso script as a new menu
  menuentry $"Bootable ISOs (in /boot-isos or /boot/boot-isos)" {
    currentmenu_str=$"Bootable ISOs (in /boot-isos or /boot/boot-isos)"
    export currentmenu_str
    menuinteractive=yes
    export menuinteractive
    configfile "${prefix}/autoiso.cfg"
  }

}

submenu $"Extra GRUB2 functionality..." {

  menuentry $"Enable GRUB2's LVM support" {
    insmod lvm
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"
  }

  menuentry $"Enable GRUB2's RAID support" {
    insmod dm_nv
    insmod mdraid09_be
    insmod mdraid09
    insmod mdraid1x
    insmod raid5rec
    insmod raid6rec
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"
  }

  menuentry $"Enable GRUB2's PATA support (to work around BIOS 
bugs/limitations)" {
    insmod ata
    update_paths
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"
  }

  menuentry $"Enable GRUB2's USB support *experimental*" {
    insmod ohci
    insmod uhci
    insmod usbms
    update_paths
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"
  }

  menuentry $"Mount encrypted volumes (LUKS and geli)" {
    insmod luks
    insmod geli

    cryptomount -a
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"
  }

  menuentry $"Enable serial terminal" {
    serial
    terminal_input --append serial
    terminal_output --append serial
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"
  }

  source "${prefix}/return.cfg"
}

submenu $"Extra Search functionality..." {

  menuentry $"Search in floppy ON/OFF (Default: OFF)" {
    if [ "$fd0search" = 'yes' ]; then
      fd0search=no
    else
      fd0search=yes
    fi
    export fd0search
    echo $"Search in FLOPPY: ${fd0search}"
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"

  }

  menuentry $"Search in CDROM ON/OFF (Default: OFF)" {
    if [ "$cdsearch" = 'yes' ]; then
      cdsearch=no
    else
      cdsearch=yes
    fi
    export cdsearch
    echo $"Search in CDROM: ${cdsearch}"
    echo $"Press escape to return to the main menu (or wait 5 seconds)"
    sleep --interruptible 5
    configfile "${prefix}/main.cfg"

  }

  source "${prefix}/return.cfg"

}
menuentry $"List devices/partitions" {
  # Set pager=1 so ls output doesn't scroll past the top of the screen
  # but restore $pager to its previous value when finished
  set oldpager="${pager}"
  set pager=1

  ls -l

  set pager="${oldpager}"
  unset oldpager

  echo $"Press escape to return to the main menu"
  sleep --interruptible 9999
}

menuentry $"Color ON/OFF" {
  if [ "$bwcolor" = 'yes' ]; then
    bwcolor=no
  else
    bwcolor=yes
  fi

  set_sgd_colors
}

# If it exists, source $prefix/sgd_custom.cfg. This follows the same idea as
# grub-mkconfig generated grub.cfg files sourcing $prefix/custom.cfg, though
# it's less needed here since one could add custom code to this file directly
# whereas their distro might automatically overwrite /boot/grub/grub.cfg on
# kernel upgrades. The main motivation for adding this was the vmtest script
# which I use heavily during Super GRUB2 Disk development, but this feature
# might also be useful to others.
if [ -e "$prefix/sgd_custom.cfg" ]; then
  source "$prefix/sgd_custom.cfg"
fi
# Sample GRUB script to autodetect operating systems
#
# Copyright (C) 2010  Free Software Foundation, Inc.
# Copyright (C) 2011, 2012 Jordan Uggla
# Copyright (C) 2011, 2012 Adrian Gibanel
# Copyright (C) 2013 Niall Walsh
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

set option_title=$"Operating Systems"

function run_option {

    source "${prefix}/topbootmenu.cfg"

    source "${prefix}/tools.cfg"

    set saved_root=$root

    function freebsd_ufs_variants {
        set device=$1
        set fstype=$2
        set uuid=$3

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device)" $device 
$uuid {
            set root=$2
            set uuid=$3

            kfreebsd /boot/kernel/kernel
            set kFreeBSD.acpi_load=YES
            set kFreeBSD.hint.acpi.0.disabled=0
            set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
            kfreebsd_loadenv /boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (single)" 
$device $uuid {
            set root=$2
            set uuid=$3

            kfreebsd /boot/kernel/kernel -s
            set kFreeBSD.acpi_load=YES
            set kFreeBSD.hint.acpi.0.disabled=0
            set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
            kfreebsd_loadenv /boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (verbose)" 
$device $uuid {
            set root=$2
            set uuid=$3

            kfreebsd /boot/kernel/kernel -v
            set kFreeBSD.acpi_load=YES
            set kFreeBSD.hint.acpi.0.disabled=0
            set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
            kfreebsd_loadenv /boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (no ACPI)" 
$device $uuid {
            set root=$2
            set uuid=$3

            kfreebsd /boot/kernel/kernel -v
            unset kFreeBSD.acpi_load
            set kFreeBSD.hint.acpi.0.disabled=1
            set kFreeBSD.loader.acpi_disabled_by_user=1
            set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
            kfreebsd_loadenv /boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (safe mode)" 
$device $uuid {
            set root=$2
            set uuid=$3

            kfreebsd /boot/kernel/kernel -v
            unset kFreeBSD.acpi_load
            set kFreeBSD.hint.acpi.0.disabled=1
            set kFreeBSD.loader.acpi_disabled_by_user=1
            set kFreeBSD.hint.apic.0.disabled=1
            set kFreeBSD.hw.ata.ata_dma=0
            set kFreeBSD.hw.ata.atapi_dma=0
            set kFreeBSD.hw.ata.wc=0
            set kFreeBSD.hw.eisa_slots=0
            set kFreeBSD.hint.kbdmux.0.disabled=1
            set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
            kfreebsd_loadenv /boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (Default 
boot loader)" $device $uuid {
            set root=$2

            kfreebsd /boot/loader
        }
    }

    function freebsd_zfs_variants {
        set device=$1
        set fstype=zfs

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device)" $device {
            set root=$2

            kfreebsd /@/boot/kernel/kernel
            set kFreeBSD.acpi_load=YES
            set kFreeBSD.hint.acpi.0.disabled=0
            kfreebsd_module_elf /@/boot/kernel/opensolaris.ko
            kfreebsd_module_elf /@/boot/kernel/zfs.ko
            kfreebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
            probe -l -s name $root
            set kFreeBSD.vfs.root.mountfrom=zfs:$name
            kfreebsd_loadenv /@/boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (single)" 
$device {
            set root=$2

            kfreebsd /@/boot/kernel/kernel -s
            set kFreeBSD.acpi_load=YES
            set kFreeBSD.hint.acpi.0.disabled=0
            kfreebsd_module_elf /@/boot/kernel/opensolaris.ko
            kfreebsd_module_elf /@/boot/kernel/zfs.ko
            kfreebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
            probe -l -s name $root
            set kFreeBSD.vfs.root.mountfrom=zfs:$name
            kfreebsd_loadenv /@/boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (verbose)" 
$device {
            set root=$2

            kfreebsd /@/boot/kernel/kernel -v
            set kFreeBSD.acpi_load=YES
            set kFreeBSD.hint.acpi.0.disabled=0
            kfreebsd_module_elf /@/boot/kernel/opensolaris.ko
            kfreebsd_module_elf /@/boot/kernel/zfs.ko
            kfreebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
            probe -l -s name $root
            set kFreeBSD.vfs.root.mountfrom=zfs:$name
            kfreebsd_loadenv /@/boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (no ACPI)" 
$device {
            set root=$2

            kfreebsd /@/boot/kernel/kernel -v
            unset kFreeBSD.acpi_load
            set kFreeBSD.hint.acpi.0.disabled=1
            set kFreeBSD.loader.acpi_disabled_by_user=1
            kfreebsd_module_elf /@/boot/kernel/opensolaris.ko
            kfreebsd_module_elf /@/boot/kernel/zfs.ko
            kfreebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
            probe -l -s name $root
            set kFreeBSD.vfs.root.mountfrom=zfs:$name
            kfreebsd_loadenv /@/boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (safe mode)" 
$device {
            set root=$2

            kfreebsd /@/boot/kernel/kernel -v
            unset kFreeBSD.acpi_load
            set kFreeBSD.hint.acpi.0.disabled=1
            set kFreeBSD.loader.acpi_disabled_by_user=1
            set kFreeBSD.hint.apic.0.disabled=1
            set kFreeBSD.hw.ata.ata_dma=0
            set kFreeBSD.hw.ata.atapi_dma=0
            set kFreeBSD.hw.ata.wc=0
            set kFreeBSD.hw.eisa_slots=0
            set kFreeBSD.hint.kbdmux.0.disabled=1
            kfreebsd_module_elf /@/boot/kernel/opensolaris.ko
            kfreebsd_module_elf /@/boot/kernel/zfs.ko
            kfreebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
            probe -l -s name $root
            set kFreeBSD.vfs.root.mountfrom=zfs:$name
            kfreebsd_loadenv /@/boot/device.hints
        }

        menuentry "${finaloption_tab_str}FreeBSD ($fstype $device) (Default 
boot loader)" $device $uuid {
            set root=$2

            kfreebsd /@/boot/loader
        }

    }

    function get_efis {
            blockdev="$1"
            blockfs="$2"
            efis=""
            if [ "$blockfs" = "fat" ]; then
                    for efi in ($blockdev)/efi/*/*.efi 
($blockdev)/efi/*/*/*.efi \
                      ($blockdev)/*.efi ($blockdev)/*/*.efi ; do
                            if [ -f "$efi" ] ; then
                                    efis="$efis $efi"
                            fi
                    done
                    if [ -n "$efis" ]; then
                            return 0
                    fi
            fi
            return 1
    }

    insmod regexp


    for dev in (*); do
        # $device: parenthesis removed from $dev
        regexp -s device '\((.*)\)' $dev
        # Discard floppy and cdrom devices in search
        # But search them if their search has been inforced

        if searchindevice "$device" ; then


            # $fstype: filesystem type identified
            probe -s fstype -f $dev
            # uuid: filesystem UUID
            probe -s uuid -u $dev

            if test -f ($device)/bootmgr -a -f ($device)/boot/bcd; then
                menuentry "${finaloption_tab_str}Windows Vista ($device)" 
$device {
                    set root=$2
                    chainloader +1
                }
            elif test -f ($device)/ntldr -a \
                -e ($device)/ntdetect.com -a -f ($device)/boot.ini; then
                menuentry "${finaloption_tab_str}Windows NT/2000/XP ($device)" 
$device {
                    set root=$2
                    regexp -s devnum 'hd([0-9]+)' $root
                    if test "$devnum" != "0"; then
                        drivemap -s hd0 $root
                    fi
                    chainloader +1
                }
            elif test -f ($device)/windows/win.com; then
                menuentry "${finaloption_tab_str}Windows 98/ME ($device)" 
$device {
                    set root=$2
                    regexp -s devnum 'hd([0-9]+)' $root
                    if test "$devnum" != "0"; then
                        drivemap -s hd0 $root
                    fi
                    chainloader +1
                }
            elif test -f ($device)/io.sys -a -f ($device)/command.com; then
                menuentry "${finaloption_tab_str}MS-DOS ($device)" $device {
                    set root=$2
                    regexp -s devnum 'hd([0-9]+)' $root
                    if test "$devnum" != "0"; then
                        drivemap -s hd0 $root
                    fi
                    chainloader +1
                }
            elif test -f ($device)/kernel.sys; then
                menuentry "${finaloption_tab_str}FreeDOS ($device)" $device {
                    set root=$2
                    regexp -s type '([fh])d[0-9]+' $root
                    regexp -s devnum '[fh]d([0-9]+)' $root
                    if test $type = 'h' -a "$devnum" != "0"; then
                        drivemap -s hd0 $root
                    fi
                    chainloader +1
                }
            elif test "$fstype" = ufs1 -o "$fstype" = ufs2 -a \
                -e ($device)/boot/kernel/kernel -a \
                -e ($device)/boot/device.hints; then

                freebsd_ufs_variants $device $fstype $uuid

            elif test "$fstype" = zfs -a \
                -e ($device)/@/boot/kernel/kernel -a \
                -e ($device)/@/boot/device.hints; then

                freebsd_zfs_variants $device

            elif test "$fstype" = hfsplus -a -f ($device)/mach_kernel; then
                menuentry "${finaloption_tab_str}Mac OS X/Darwin" $device $uuid 
{
                    set root=$2
                    set uuid=$3

                    insmod vbe
                    do_resume=0
                    if [ /var/vm/sleepimage -nt10 / ]; then
                        if xnu_resume /var/vm/sleepimage; then
                            do_resume=1
                        fi
                    fi
                    if [ $do_resume = 1 ]; then
                        xnu_uuid $uuid uuid
                        if [ -f /Extra/DSDT.aml ]; then
                            acpi -e /Extra/DSDT.aml
                        fi
                        xnu_kernel /mach_kernel boot-uuid=${uuid} rd=*uuid
                        if [ /System/Library/Extensions.mkext -nt 
/System/Library/Extensions ]; then
                            xnu_mkext /System/Library/Extensions.mkext
                        else
                            xnu_mkext /System/Library/Extensions
                        fi
                        if [ -f /Extra/Extensions.mkext ]; then
                            xnu_mkext /Extra/Extensions.mkext
                        fi
                        if [ -d /Extra/Extensions ]; then
                            xnu_kextdir /Extra/Extensions
                        fi
                        if [ -f /Extra/devtree.txt ]; then
                            xnu_devtree /Extra/devtree.txt
                        fi
                        if [ -f /Extra/splash.jpg ]; then
                            insmod jpeg
                            xnu_splash /Extra/splash.jpg
                        fi
                        if [ -f /Extra/splash.png ]; then
                            insmod png
                            xnu_splash /Extra/splash.png
                        fi
                        if [ -f /Extra/splash.tga ]; then
                            insmod tga
                            xnu_splash /Extra/splash.tga
                        fi
                    fi
                }
            elif get_efis $device $fstype; then
                    for efi in $efis; do
                            menuentry "${finaloption_tab_str}$efi" "$device" {
                                    efi_device="$2"
                                    efi="$1"
                                    if [ "$grub_platform" = "efi" ]; then
                                            root="$efi_device"
                                            chainloader "$efi"
                                    else
                                            echo $"Sorry, but we are booted via 
BIOS and can not load this OS."
                                            echo $"Please try booting SG2D via 
UEFI."
                                            echo $"Press escape to return to 
the menu"
                                            sleep --interruptible 9999
                                    fi
                            }
                    done
            else
                set root=$device
                for file in /boot/vmlinuz-* /boot/linux-* 
/boot/kernel-genkernel-*; do
                    if test -f $file; then
                        regexp -s version '/boot/vmlinuz-(.*)' $file
                        regexp -s version '/boot/linux-(.*)' $file
                        regexp -s version '/boot/kernel-genkernel-(.*)' $file

                        menuentry "${finaloption_tab_str}Linux $file" $device 
$uuid $file $version {
                            set root=$2
                            set uuid=$3
                            set kernel=$4
                            set version=$5

                            linux $kernel root=UUID=$uuid ro
                            if test -f /boot/initrd-$version.img; then
                                initrd /boot/initrd-$version.img
                            elif test -f /boot/initrd.img-$version; then
                                initrd /boot/initrd.img-$version
                            elif test -f /boot/initrd-$version; then
                                initrd /boot/initrd-$version
                            elif test -f /boot/initramfs-genkernel-$version; 
then
                                initrd /boot/initramfs-genkernel-$version
                            fi
                        }

                        menuentry "${finaloption_tab_str}Linux $file (single)" 
$device $uuid $file $version {
                            set root=$2
                            set uuid=$3
                            set kernel=$4
                            set version=$5

                            linux $kernel root=UUID=$uuid ro single
                            if test -f /boot/initrd-$version.img; then
                                initrd /boot/initrd-$version.img
                            elif test -f /boot/initrd.img-$version; then
                                initrd /boot/initrd.img-$version
                            elif test -f /boot/initrd-$version; then
                                initrd /boot/initrd-$version
                            elif test -f /boot/initramfs-genkernel-$version; 
then
                                initrd /boot/initramfs-genkernel-$version
                            fi
                        }
                    fi
                done
            fi
        fi
    done

    set root=$saved_root


}
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to