summaryrefslogtreecommitdiffstats
path: root/docs/osdetect.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'docs/osdetect.cfg')
-rw-r--r--docs/osdetect.cfg331
1 files changed, 331 insertions, 0 deletions
diff --git a/docs/osdetect.cfg b/docs/osdetect.cfg
new file mode 100644
index 0000000..4745560
--- /dev/null
+++ b/docs/osdetect.cfg
@@ -0,0 +1,331 @@
+# Sample GRUB script to autodetect operating systems
+#
+# Copyright (C) 2010 Free Software Foundation, Inc.
+#
+# 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 saved_root=$root
+
+function freebsd_ufs_variants {
+ set device=$1
+ set fstype=$2
+ set uuid=$3
+
+ menuentry "FreeBSD (on $fstype $device)" $device $uuid {
+ set root=$2
+ set uuid=$3
+
+ freebsd /boot/kernel/kernel
+ set FreeBSD.acpi_load=YES
+ set FreeBSD.hint.acpi.0.disabled=0
+ set FreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
+ frebsd_loadenv /boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (single)" $device $uuid {
+ set root=$2
+ set uuid=$3
+
+ freebsd /boot/kernel/kernel --single
+ set FreeBSD.acpi_load=YES
+ set FreeBSD.hint.acpi.0.disabled=0
+ set FreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
+ frebsd_loadenv /boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (verbose)" $device $uuid {
+ set root=$2
+ set uuid=$3
+
+ freebsd /boot/kernel/kernel --verbose
+ set FreeBSD.acpi_load=YES
+ set FreeBSD.hint.acpi.0.disabled=0
+ set FreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
+ frebsd_loadenv /boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (without ACPI)" $device $uuid {
+ set root=$2
+ set uuid=$3
+
+ freebsd /boot/kernel/kernel --verbose
+ unset FreeBSD.acpi_load
+ set FreeBSD.hint.acpi.0.disabled=1
+ set FreeBSD.loader.acpi_disabled_by_user=1
+ set FreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
+ frebsd_loadenv /boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (safe mode)" $device $uuid {
+ set root=$2
+ set uuid=$3
+
+ freebsd /boot/kernel/kernel --verbose
+ unset FreeBSD.acpi_load
+ set FreeBSD.hint.acpi.0.disabled=1
+ set FreeBSD.loader.acpi_disabled_by_user=1
+ set FreeBSD.hint.apic.0.disabled=1
+ set FreeBSD.hw.ata.ata_dma=0
+ set FreeBSD.hw.ata.atapi_dma=0
+ set FreeBSD.hw.ata.wc=0
+ set FreeBSD.hw.eisa_slots=0
+ set FreeBSD.hint.kbdmux.0.disabled=1
+ set FreeBSD.vfs.root.mountfrom=ufs:ufsid/$uuid
+ frebsd_loadenv /boot/device.hints
+ }
+}
+
+function freebsd_zfs_variants {
+ set device=$1
+ set fstype=zfs
+
+ menuentry "FreeBSD (on $fstype $device)" $device {
+ set root=$2
+
+ freebsd /@/boot/kernel/kernel
+ set FreeBSD.acpi_load=YES
+ set FreeBSD.hint.acpi.0.disabled=0
+ freebsd_module_elf /@/boot/kernel/opensolaris.ko
+ freebsd_module_elf /@/boot/kernel/zfs.ko
+ freebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
+ probe -l -s name $root
+ set FreeBSD.vfs.root.mountfrom=zfs:$name
+ freebsd_loadenv /@/boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (single)" $device {
+ set root=$2
+
+ freebsd /@/boot/kernel/kernel --single
+ set FreeBSD.acpi_load=YES
+ set FreeBSD.hint.acpi.0.disabled=0
+ freebsd_module_elf /@/boot/kernel/opensolaris.ko
+ freebsd_module_elf /@/boot/kernel/zfs.ko
+ freebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
+ probe -l -s name $root
+ set FreeBSD.vfs.root.mountfrom=zfs:$name
+ freebsd_loadenv /@/boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (verbose)" $device {
+ set root=$2
+
+ freebsd /@/boot/kernel/kernel --verbose
+ set FreeBSD.acpi_load=YES
+ set FreeBSD.hint.acpi.0.disabled=0
+ freebsd_module_elf /@/boot/kernel/opensolaris.ko
+ freebsd_module_elf /@/boot/kernel/zfs.ko
+ freebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
+ probe -l -s name $root
+ set FreeBSD.vfs.root.mountfrom=zfs:$name
+ freebsd_loadenv /@/boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (without ACPI)" $device {
+ set root=$2
+
+ freebsd /@/boot/kernel/kernel --verbose
+ unset FreeBSD.acpi_load
+ set FreeBSD.hint.acpi.0.disabled=1
+ set FreeBSD.loader.acpi_disabled_by_user=1
+ freebsd_module_elf /@/boot/kernel/opensolaris.ko
+ freebsd_module_elf /@/boot/kernel/zfs.ko
+ freebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
+ probe -l -s name $root
+ set FreeBSD.vfs.root.mountfrom=zfs:$name
+ freebsd_loadenv /@/boot/device.hints
+ }
+
+ menuentry "FreeBSD (on $fstype $device) (safe mode)" $device {
+ set root=$2
+
+ freebsd /@/boot/kernel/kernel --verbose
+ unset FreeBSD.acpi_load
+ set FreeBSD.hint.acpi.0.disabled=1
+ set FreeBSD.loader.acpi_disabled_by_user=1
+ set FreeBSD.hint.apic.0.disabled=1
+ set FreeBSD.hw.ata.ata_dma=0
+ set FreeBSD.hw.ata.atapi_dma=0
+ set FreeBSD.hw.ata.wc=0
+ set FreeBSD.hw.eisa_slots=0
+ set FreeBSD.hint.kbdmux.0.disabled=1
+ freebsd_module_elf /@/boot/kernel/opensolaris.ko
+ freebsd_module_elf /@/boot/kernel/zfs.ko
+ freebsd_module /@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
+ probe -l -s name $root
+ set FreeBSD.vfs.root.mountfrom=zfs:$name
+ freebsd_loadenv /@/boot/device.hints
+ }
+}
+
+insmod regexp
+for dev in (*); do
+ # $device: parenthesis removed from $dev
+ regexp -s device '\((.*)\)' $dev
+ # $fstype: filesystem type identified
+ probe -s fstype -f $dev
+ # uuid: filesystem UUID
+ probe -s uuid -u $dev
+
+ if test -f ($device)/isolinux/isolinux.cfg ; then
+ menuentry "ISOLINUX config (on $device)" $device {
+ set root=$2
+ syslinux_configfile -i /isolinux/isolinux.cfg
+ }
+ fi
+ if test -f ($device)/bootmgr -a -f ($device)/boot/bcd; then
+ menuentry "Windows Vista bootmgr (on $device)" $device {
+ set root=$2
+ chainloader +1
+ }
+ elif test -f ($device)/ntldr -a \
+ -e ($device)/ntdetect.com -a -f ($device)/boot.ini; then
+ menuentry "Windows NT/2000/XP loader (on $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 "Windows 98/ME (on $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 "MS-DOS (on $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 "FreeDOS (on $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 "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
+ }
+ else
+ set root=$device
+ for file in /boot/vmlinuz-* /boot/linux-*; do
+ if test -f $file; then
+ regexp -s version '/boot/vmlinuz-(.*)' $file
+ regexp -s version '/boot/linux-(.*)' $file
+
+ menuentry "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
+ fi
+ }
+
+ menuentry "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
+ fi
+ }
+ fi
+ done
+ fi
+done
+
+set root=$saved_root