mirror of
git://slackware.nl/current.git
synced 2024-12-27 09:59:16 +01:00
76fc4757ac
Mon Nov 4 17:08:47 UTC 2013 Slackware 14.1 x86_64 stable is released! It's been another interesting release cycle here at Slackware bringing new features like support for UEFI machines, updated compilers and development tools, the switch from MySQL to MariaDB, and many more improvements throughout the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-)
390 lines
10 KiB
INI
390 lines
10 KiB
INI
# 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/>.
|
|
|
|
source "${prefix}/tools.cfg"
|
|
|
|
set saved_root=$root
|
|
|
|
function freebsd_ufs_variants {
|
|
set device=$1
|
|
set fstype=$2
|
|
set uuid=$3
|
|
|
|
menuentry "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "$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-*; 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
|
|
elif test -f /boot/initrd.gz; then
|
|
initrd /boot/initrd.gz
|
|
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
|
|
elif test -f /boot/initrd.gz; then
|
|
initrd /boot/initrd.gz
|
|
fi
|
|
}
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
done
|
|
|
|
set root=$saved_root
|