42
load_kfreebsd_module ()
47
if ! test -e "${module_dir}/${mod}.ko" ; then
48
if [ "${allow_fail}" = "true" ] ; then
52
# Print an error and fail.
53
ls "${module_dir}/${mod}.ko" > /dev/null
57
if [ -z "${prepare_module_dir_cache}" ]; then
58
prepare_module_dir_cache="$(prepare_grub_to_access_device $(grub-probe -t device "${module_dir}") | sed -e "s/^/\t/")"
61
printf '%s\n' "${prepare_module_dir_cache}"
63
kfreebsd_module_elf ${module_dir_rel}/${mod}.ko
46
recovery="$3" # not used yet
47
args="$4" # not used yet
48
title="$(gettext_quoted "%s, with kFreeBSD %s")"
74
title="$(gettext_quoted "%s, with kFreeBSD %s (recovery mode)")"
76
title="$(gettext_quoted "%s, with kFreeBSD %s")"
49
78
printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
50
save_default_entry | sed -e "s/^/\t/"
79
if ! ${recovery} ; then
80
save_default_entry | sed -e "s/^/\t/"
51
82
if [ -z "${prepare_boot_cache}" ]; then
52
83
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
54
if [ -z "${prepare_module_dir_cache}" ]; then
55
prepare_module_dir_cache="$(prepare_grub_to_access_device $(grub-probe -t device "${module_dir}") | sed -e "s/^/\t/")"
58
86
printf '%s\n' "${prepare_boot_cache}"
60
88
echo '$(printf "$(gettext_quoted "Loading kernel of FreeBSD %s ...")" ${version})'
61
kfreebsd ${rel_dirname}/${basename}
89
kfreebsd ${rel_dirname}/${basename} ${args}
64
92
if test -n "${devices}" ; then
70
if test -e "${module_dir}/acpi.ko" ; then
71
printf '%s\n' "${prepare_module_dir_cache}"
73
kfreebsd_module_elf ${module_dir_rel}/acpi.ko
98
load_kfreebsd_module acpi true
77
100
case "${kfreebsd_fs}" in
79
test -e "${module_dir}/opensolaris.ko"
80
test -e "${module_dir}/zfs.ko"
81
test -e "${dirname}/zfs/zpool.cache"
83
printf '%s\n' "${prepare_module_dir_cache}"
85
kfreebsd_module_elf ${module_dir_rel}/opensolaris.ko
86
kfreebsd_module_elf ${module_dir_rel}/zfs.ko
102
load_kfreebsd_module opensolaris false
104
ls "${dirname}/zfs/zpool.cache" > /dev/null
89
105
printf '%s\n' "${prepare_boot_cache}"
91
107
kfreebsd_module ${rel_dirname}/zfs/zpool.cache type=/boot/zfs/zpool.cache
122
140
case ${GRUB_FS} in
123
ufs1 | ufs2) kfreebsd_fs=ufs ;;
124
*) kfreebsd_fs=${GRUB_FS} ;;
141
ufs1 | ufs2) kfreebsd_fs=ufs ;;
142
ext2) kfreebsd_fs=ext2fs ;;
143
*) kfreebsd_fs=${GRUB_FS} ;;
127
146
case ${GRUB_FS} in
128
zfs) kfreebsd_device=$(grub-probe -t label --device ${GRUB_DEVICE}) ;;
129
*) kfreebsd_device=${GRUB_DEVICE} ;;
149
kfreebsd_device=$(grub-probe -t fs_label --device ${GRUB_DEVICE})
150
# filesystem name (empty string for the main filesystem)
151
kfreebsd_device="${kfreebsd_device}$(grub-mkrelpath / | sed -e "s,/*@$,,")"
154
kfreebsd_device=${kfreebsd_fs}id/${GRUB_DEVICE_UUID}
155
# Debian GNU/kFreeBSD can't remount root if it's supplied as UUID but
157
if [ "x${GRUB_DISTRIBUTOR}" = "xDebian" ] \
158
&& ! (cat /etc/fstab | awk '!/^[[:space:]]*#/ && $2=="/" { print $1; }' \
159
| grep "${kfreebsd_fs}id/${GRUB_DEVICE_UUID}" > /dev/null); then
160
kfreebsd_device=${GRUB_DEVICE}
132
165
version=`echo $basename | sed -e "s,^[^0-9]*-,,g;s/\.gz$//g"`
145
178
module_dir_rel=$(make_system_path_relative_to_its_root $module_dir)
148
kfreebsd_entry "${OS}" "${version}"
181
kfreebsd_entry "${OS}" "${version}" false
182
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
183
kfreebsd_entry "${OS}" "${version}" true "-s"
150
186
list=`echo $list | tr ' ' '\n' | grep -vx $kfreebsd | tr '\n' ' '`