summaryrefslogtreecommitdiff
path: root/sysutils/grub2-pcbsd/files/30_os-prober.in
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/grub2-pcbsd/files/30_os-prober.in')
-rw-r--r--sysutils/grub2-pcbsd/files/30_os-prober.in140
1 files changed, 0 insertions, 140 deletions
diff --git a/sysutils/grub2-pcbsd/files/30_os-prober.in b/sysutils/grub2-pcbsd/files/30_os-prober.in
deleted file mode 100644
index 4a58fdecd57f..000000000000
--- a/sysutils/grub2-pcbsd/files/30_os-prober.in
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2015 iXsystems (Kris Moore)
-# All rights reserved
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted providing that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-# Check if we have beadm installed, if not skip this file
-if [ ! -e "/usr/local/sbin/beadm" ] ; then exit 0; fi
-
-# Script to detect other NON BSD OS's and add to grub.cfg
-
-check_ntfs_part()
-{
- local disk="$1"
-
- fs_uuid=`grub-probe --device /dev/${disk} --target=fs_uuid 2>/dev/null`
- if [ -z "$fs_uuid" ] ; then
- echo "Warning: Could not get fs_uuid for $disk"
- return
- fi
-
- cat << EOF
-menuentry "Microsoft Windows ($disk)" {
- search --no-floppy --fs-uuid --set=root $fs_uuid
- chainloader +1
-}
-EOF
-}
-
-print_uefichain() {
- cat << EOF
-menuentry "Chainload Disk (hd${hdnum} - $1)" {
- set root=('hd${hdnum},${rootpre}1')
- chainloader $1
-}
-
-EOF
-}
-
-if [ -e "/usr/local/etc/default/grub" ] ; then
- . /usr/local/etc/default/grub
-fi
-if [ -n "$GRUB_NODUALBOOT" ] ; then
- exit 0
-fi
-
-# Look for file-systems on the zpool disk
-for disk in `zpool status | grep ONLINE | grep -v "state:" | awk '{print $1}'`
-do
- disk="`echo $disk | sed 's|.eli||g'`"
- if [ ! -e "/dev/$disk" ] ; then continue ; fi
-
- # Get the parent disk name
- parentdisk=`grub-probe --target=disk --device /dev/$disk 2>/dev/null`
- parentdisk="`echo $parentdisk | sed 's|/dev/||g'`"
- if [ ! -e "/dev/$parentdisk" ] ; then continue ; fi
-
- for ldisk in `cd /dev/ && ls ${parentdisk}s[0-9] ${parentdisk}p[0-99] 2>/dev/null`
- do
- fs_type=`grub-probe --device /dev/${ldisk} --target=fs 2>/dev/null`
- case $fs_type in
- ntfs) check_ntfs_part "$ldisk" ;; # Start checking for NTFS
- *) ;; # Unknown for now, add more!
- esac
- done
-done
-
-# Look for other disks to chainload
-hdnum=0
-for disk in `cd /dev/ && ls ada[0-9] da[0-9] 2>/dev/null`
-do
- # Skip disks apart of zpool
- zpool status | grep ONLINE | grep -v "state:" | grep -q "$disk"
- if [ $? -eq 0 ] ; then
- hdnum=`expr $hdnum + 1`
- continue
- fi
-
- # Check if the first partition on this disk is EFI
- if [ -e "/dev/${disk}s1" ] ; then
- fp="/dev/${disk}s1"
- rootpre=""
- else
- fp="/dev/${disk}p1"
- rootpre="gpt"
- fi
-
- # Add UEFI chainloader
- if [ "`grub-probe --device -t fs $fp 2>/dev/null`" = "fat" ] ; then
-
- # Lets mount the FAT partition and look for UEFI boots
- uefimnt="/tmp/.grub-uefi.$$"
- if [ ! -d "$uefimnt" ] ; then mkdir $uefimnt; fi
- mount_msdosfs $fp $uefimnt
- if [ $? -eq 0 ] ; then
- if [ -e "${uefimnt}/EFI/Boot/bootx64.efi" ] ; then
- print_uefichain "/EFI/Boot/bootx64.efi"
- fi
- cd $uefimnt
- for i in `find . | grep \.efi$ | grep -v "./EFI/Boot/bootx64.efi"`
- do
- i="`echo $i | sed 's|\./|/|g'`"
- print_uefichain "$i"
- done
- cd /dev
- umount $uefimnt
- rmdir $uefimnt
- fi
-
- else
- # Add BIOS chainloader
- cat << EOF
-menuentry "Chainload Disk (hd${hdnum})" {
- set root=(hd${hdnum})
- chainloader +1
-}
-EOF
- fi
- hdnum=`expr $hdnum + 1`
-done