2009-08-23 Vladimir Serbinenko <phcoder@gmail.com>

* commands/search.c (search_fs): Try searching without autoload first.
	* util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load
	filesystem module explicitly for faster booting.
This commit is contained in:
phcoder 2009-08-23 15:27:07 +00:00
parent 5174302b55
commit e9a925da69
3 changed files with 28 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2009-08-23 Vladimir Serbinenko <phcoder@gmail.com>
* commands/search.c (search_fs): Try searching without autoload first.
* util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load
filesystem module explicitly for faster booting.
2009-08-23 Colin Watson <cjwatson@ubuntu.com> 2009-08-23 Colin Watson <cjwatson@ubuntu.com>
* util/grub-mkconfig.in: Export GRUB_DISABLE_OS_PROBER. * util/grub-mkconfig.in: Export GRUB_DISABLE_OS_PROBER.

View file

@ -51,6 +51,7 @@ search_fs (const char *key, const char *var, int no_floppy, enum options type)
{ {
int count = 0; int count = 0;
char *buf = NULL; char *buf = NULL;
grub_fs_autoload_hook_t saved_autoload;
auto int iterate_device (const char *name); auto int iterate_device (const char *name);
int iterate_device (const char *name) int iterate_device (const char *name)
@ -131,6 +132,21 @@ search_fs (const char *key, const char *var, int no_floppy, enum options type)
return (found && var); return (found && var);
} }
/* First try without autoloading if we're setting variable. */
if (var)
{
saved_autoload = grub_fs_autoload_hook;
grub_fs_autoload_hook = 0;
grub_device_iterate (iterate_device);
/* Restore autoload hook. */
grub_fs_autoload_hook = saved_autoload;
/* Retry with autoload if nothing found. */
if (grub_errno == GRUB_ERR_NONE && count == 0)
grub_device_iterate (iterate_device);
}
else
grub_device_iterate (iterate_device); grub_device_iterate (iterate_device);
grub_free (buf); grub_free (buf);

View file

@ -140,6 +140,11 @@ prepare_grub_to_access_device ()
echo "insmod ${module}" echo "insmod ${module}"
done done
fs="`${grub_probe} --device ${device} --target=fs`"
for module in ${fs} ; do
echo "insmod ${module}"
done
# If there's a filesystem UUID that GRUB is capable of identifying, use it; # If there's a filesystem UUID that GRUB is capable of identifying, use it;
# otherwise set root as per value in device.map. # otherwise set root as per value in device.map.
echo "set root=`${grub_probe} --device ${device} --target=drive`" echo "set root=`${grub_probe} --device ${device} --target=drive`"