From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1WP24z-00089N-Qj for mharc-grub-devel@gnu.org; Sat, 15 Mar 2014 23:49:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41979) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WP24u-000893-26 for grub-devel@gnu.org; Sat, 15 Mar 2014 23:49:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WP24p-0007Sf-Jl for grub-devel@gnu.org; Sat, 15 Mar 2014 23:49:36 -0400 Received: from mail-wi0-x229.google.com ([2a00:1450:400c:c05::229]:61585) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WP24p-0007SZ-4H for grub-devel@gnu.org; Sat, 15 Mar 2014 23:49:31 -0400 Received: by mail-wi0-f169.google.com with SMTP id hm4so1042312wib.4 for ; Sat, 15 Mar 2014 20:49:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; bh=W2xCRbtR42O+SCsuJHetaU1FiFEXLyFDBOKJzj+qjrE=; b=t6DITcW5nox5xtXjdBD1RpoeQMjhC8K5ktTQNuqIYBNvVfUdQb73jCilavrBuuc8+4 /oAh8gT/aHk02X+MI3z44IGjIZEhiQNkdFJl2aVlxtqYeJvWmjD7mrhDhN7nhaNqHrj7 G9gZG5prv71j5E1eCmn6U1SgSTplwwBVv3svqoDS8tjPfhsxg4xu6FojXHJ2V98Ky4cg AhwaZ1+AZ6mF9fF80NqI2GlDdwm4eCWSWupq7iSaTPPmcyszGMj1+OSeU0T78SIcJ5vN VjAYGBwl3o87Ma7r5JDSBbykaZ4Lm0JVKkgswzARKaGzOd+nSD6YapxHuKErq+O59u7s 9qbw== X-Received: by 10.180.91.164 with SMTP id cf4mr4319084wib.37.1394941769997; Sat, 15 Mar 2014 20:49:29 -0700 (PDT) Received: from [192.168.10.45] (136.Red-88-21-16.staticIP.rima-tde.net. [88.21.16.136]) by mx.google.com with ESMTPSA id uq2sm26269428wjc.5.2014.03.15.20.49.27 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 15 Mar 2014 20:49:28 -0700 (PDT) Message-ID: <53251F44.3000505@gmail.com> Date: Sun, 16 Mar 2014 04:49:24 +0100 From: adrian15 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Icedove/24.3.0 MIME-Version: 1.0 To: grub-devel@gnu.org Subject: How one is supposed to write kind-of-library cfg files? Content-Type: multipart/mixed; boundary="------------030506090004070700060209" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c05::229 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Mar 2014 03:49:40 -0000 This is a multi-part message in MIME format. --------------030506090004070700060209 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit ( 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/ --------------030506090004070700060209 Content-Type: text/plain; charset=UTF-8; name="main.cfg" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="main.cfg" # 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 . # 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 --------------030506090004070700060209 Content-Type: text/plain; charset=UTF-8; name="osdetect.cfg" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="osdetect.cfg" # 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 . 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 } --------------030506090004070700060209--