If rootdev is set, use it as currdev.
Setting rootdev in the enviornment should specify things completely. If it is set, then have it override everything else. PR: 229770 Differential Review: https://reviews.freebsd.org/D16322
This commit is contained in:
parent
a304238bcf
commit
e39cc26762
@ -165,17 +165,22 @@ has_keyboard(void)
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void
|
||||
set_currdev(const char *devname)
|
||||
{
|
||||
|
||||
env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev, env_nounset);
|
||||
env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset);
|
||||
}
|
||||
|
||||
static void
|
||||
set_currdev_devdesc(struct devdesc *currdev)
|
||||
{
|
||||
const char *devname;
|
||||
|
||||
devname = efi_fmtdev(currdev);
|
||||
|
||||
printf("Setting currdev to %s\n", devname);
|
||||
|
||||
env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev, env_nounset);
|
||||
env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset);
|
||||
set_currdev(devname);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -279,6 +284,14 @@ find_currdev(EFI_LOADED_IMAGE *img)
|
||||
struct devsw *dev;
|
||||
int unit;
|
||||
uint64_t extra;
|
||||
char *rootdev;
|
||||
|
||||
rootdev = getenv("rootdev");
|
||||
if (rootdev != NULL) {
|
||||
printf("Setting currdev to configured rootdev %s\n", rootdev);
|
||||
set_currdev(rootdev);
|
||||
return (0);
|
||||
}
|
||||
|
||||
#ifdef EFI_ZFS_BOOT
|
||||
/*
|
||||
@ -616,7 +629,7 @@ main(int argc, CHAR16 *argv[])
|
||||
* set the env based on it.
|
||||
*/
|
||||
boot_howto_to_env(howto);
|
||||
|
||||
|
||||
if (efi_copy_init()) {
|
||||
printf("failed to allocate staging area\n");
|
||||
return (EFI_BUFFER_TOO_SMALL);
|
||||
|
Loading…
Reference in New Issue
Block a user