diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in index 3585a68..cc6065f 100644 --- a/util/grub-mkconfig_lib.in +++ b/util/grub-mkconfig_lib.in @@ -39,7 +39,7 @@ make_system_path_relative_to_its_root () fi # canonicalize - if path=`readlink -f $path` ; then : ; else + if path=`realpath $path` ; then : ; else return 1 fi @@ -50,12 +50,12 @@ make_system_path_relative_to_its_root () dir=`echo $path | sed -e "s,/[^/]*$,,g"` fi - num=`stat -c %d $dir` + num=`stat -f %d $dir` # this loop sets $dir to the root directory of the filesystem we're inspecting while : ; do - parent=`readlink -f $dir/..` - if [ "x`stat -c %d $parent`" = "x$num" ] ; then : ; else + parent=`realpath $dir/..` + if [ "x`stat -f %d $parent`" = "x$num" ] ; then : ; else # $parent is another filesystem; we found it. break fi diff --git a/util/grub.d/10_freebsd.in b/util/grub.d/10_freebsd.in index 891a20f..ce0a9a1 100644 --- a/util/grub.d/10_freebsd.in +++ b/util/grub.d/10_freebsd.in @@ -22,7 +22,7 @@ address@hidden@ . ${libdir}/grub/grub-mkconfig_lib case "${GRUB_DISTRIBUTOR}" in - Debian) OS="${GRUB_DISTRIBUTOR} GNU/kFreeBSD" ;; + Debian) OS="${GRUB_DISTRIBUTOR} GNU/kFreeBSD, kFreeBSD " ;; *) OS="FreeBSD" ;; esac @@ -49,7 +49,7 @@ EOF fi cat << EOF - set FreeBSD.vfs.root.mountfrom=${kfreebsd_fs}:${GRUB_DEVICE} + set FreeBSD.vfs.root.mountfrom=${kfreebsd_fs}:${kfreebsd_fs}id/${GRUB_DEVICE_UUID} set FreeBSD.vfs.root.mountfrom.options=rw } EOF @@ -66,7 +66,8 @@ while [ "x$list" != "x" ] ; do dirname=`dirname $kfreebsd` rel_dirname=`make_system_path_relative_to_its_root $dirname` - if [ x"$devices" != "x" ] ; then + if [ -f /boot/device.hints ] ; then + devices=/boot/device.hints devices_basename=`basename $devices` devices_dirname=`dirname $devices` devices_rel_dirname=`make_system_path_relative_to_its_root $devices_dirname` @@ -93,7 +94,7 @@ while [ "x$list" != "x" ] ; do acpi_ko_rel_dirname=`make_system_path_relative_to_its_root $acpi_ko_dirname` fi - kfreebsd_entry "${OS}, kFreeBSD ${version}" + kfreebsd_entry "${OS} ${version}" list=`echo $list | tr ' ' '\n' | grep -vx $kfreebsd | tr '\n' ' '` done