#! /bin/sh -e # grub-mkconfig helper script. # Copyright (C) 2008,2009 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 . prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ . ${libdir}/grub/grub-mkconfig_lib case "${GRUB_DISTRIBUTOR}" in Debian) OS="${GRUB_DISTRIBUTOR} GNU/kFreeBSD" ;; *) OS="FreeBSD" ;; esac if test -e /boot/devices.hints ; then devices=/boot/devices.hints fi if test -e /boot/kernel/kernel ; then kfreebsd=/boot/kernel/kernel fi if test -e /boot/kernel/kernel.gz ; then kfreebsd=/boot/kernel/kernel.gz fi if [ "x$kfreebsd" != "x" ] ; then echo "Found kernel of FreeBSD: $kfreebsd" >&2 kfreebsd_basename=`basename $kfreebsd` kfreebsd_dirname=`dirname $kfreebsd` kfreebsd_rel_dirname=`make_system_path_relative_to_its_root $kfreebsd_dirname` if [ x"$devices" != "x" ] ; then devices_basename=`basename $devices` devices_dirname=`dirname $devices` devices_rel_dirname=`make_system_path_relative_to_its_root $devices_dirname` fi root_device=`basename ${GRUB_DEVICE}` # For "ufs" it's the same. Do we care about the others? kfreebsd_fs=${GRUB_FS} cat << EOF menuentry "${OS}" { EOF prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/" cat << EOF freebsd ${kfreebsd_rel_dirname}/${kfreebsd_basename} EOF if [ x"$devices" != "x" ] ; then cat << EOF freebsd_loadenv ${devices_rel_dirname}/${devices_basename} EOF fi cat << EOF set FreeBSD.vfs.root.mountfrom=${kfreebsd_fs}:${root_device} } EOF fi