]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-10-26 Robert Millan <rmh.grub@aybabtu.com>
authorrobertmh <robertmh@localhost>
Mon, 26 Oct 2009 00:41:54 +0000 (00:41 +0000)
committerrobertmh <robertmh@localhost>
Mon, 26 Oct 2009 00:41:54 +0000 (00:41 +0000)
        * util/grub.d/10_freebsd.in: Remove.
        * util/grub.d/10_kfreebsd.in: New file (based on 10_linux.in).
        * configure.ac: Set host_kernel=kfreebsd for FreeBSD and GNU/kFreeBSD.

ChangeLog
configure.ac
util/grub.d/10_kfreebsd.in [new file with mode: 0644]

index 8a3c0dcb7614a1e495083e963f1555412b3f5e5b..6ca49a0e2896dae2e5f61d156f4bba66ccbf899b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-26  Robert Millan  <rmh.grub@aybabtu.com>
+
+       * util/grub.d/10_freebsd.in: Remove.
+       * util/grub.d/10_kfreebsd.in: New file (based on 10_linux.in).
+       * configure.ac: Set host_kernel=kfreebsd for FreeBSD and GNU/kFreeBSD.
+
 2009-10-26  Robert Millan  <rmh.grub@aybabtu.com>
 
        * docs/grub.cfg: Fix example usage of *BSD loaders.
index 048333ba550f8d8d4e3d859d39fbdce0cae70768..4bd28f2e86fc05d41d573bf83f552cb22de44c2f 100644 (file)
@@ -107,7 +107,7 @@ esac
 case "$host_os" in
   gnu*)                                host_kernel=hurd ;;
   linux*)                      host_kernel=linux ;;
-  freebsd* | kfreebsd*-gnu)    host_kernel=freebsd ;;
+  freebsd* | kfreebsd*-gnu)    host_kernel=kfreebsd ;;
   cygwin)                      host_kernel=windows ;;
 esac
 
diff --git a/util/grub.d/10_kfreebsd.in b/util/grub.d/10_kfreebsd.in
new file mode 100644 (file)
index 0000000..1473a42
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,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 <http://www.gnu.org/licenses/>.
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+. ${libdir}/grub/grub-mkconfig_lib
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+  OS=GNU/Linux
+else
+  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+  /dev/loop/*|/dev/loop[0-9])
+    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+  ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+    || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ; then
+  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+linux_entry ()
+{
+  cat << EOF
+menuentry "$1" {
+EOF
+  prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/"
+  cat << EOF
+       linux   ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro $2
+EOF
+  if test -n "${initrd}" ; then
+    cat << EOF
+       initrd  ${rel_dirname}/${initrd}
+EOF
+  fi
+  cat << EOF
+}
+EOF
+}
+
+list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* ; do
+        if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+      done`
+
+while [ "x$list" != "x" ] ; do
+  linux=`version_find_latest $list`
+  echo "Found linux image: $linux" >&2
+  basename=`basename $linux`
+  dirname=`dirname $linux`
+  rel_dirname=`make_system_path_relative_to_its_root $dirname`
+  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+  alt_version=`echo $version | sed -e "s,\.old$,,g"`
+  linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+  initrd=
+  for i in "initrd.img-${version}" "initrd-${version}.img" \
+          "initrd-${version}" "initrd.img-${alt_version}" \
+          "initrd-${alt_version}.img" "initrd-${alt_version}"; do
+    if test -e "${dirname}/${i}" ; then
+      initrd="$i"
+      break
+    fi
+  done
+  if test -n "${initrd}" ; then
+    echo "Found initrd image: ${dirname}/${initrd}" >&2
+  else
+    # "UUID=" magic is parsed by initrds.  Since there's no initrd, it can't work here.
+    linux_root_device_thisversion=${GRUB_DEVICE}
+  fi
+
+  linux_entry "${OS}, with Linux ${version}" \
+      "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+  if [ "x${GRUB_DISABLE_LINUX_RECOVERY}" != "xtrue" ]; then
+    linux_entry "${OS}, with Linux ${version} (recovery mode)" \
+       "single ${GRUB_CMDLINE_LINUX}"
+  fi
+
+  list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+done