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;
|
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
|
static void
|
||||||
set_currdev_devdesc(struct devdesc *currdev)
|
set_currdev_devdesc(struct devdesc *currdev)
|
||||||
{
|
{
|
||||||
const char *devname;
|
const char *devname;
|
||||||
|
|
||||||
devname = efi_fmtdev(currdev);
|
devname = efi_fmtdev(currdev);
|
||||||
|
|
||||||
printf("Setting currdev to %s\n", devname);
|
printf("Setting currdev to %s\n", devname);
|
||||||
|
set_currdev(devname);
|
||||||
env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev, env_nounset);
|
|
||||||
env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -279,6 +284,14 @@ find_currdev(EFI_LOADED_IMAGE *img)
|
|||||||
struct devsw *dev;
|
struct devsw *dev;
|
||||||
int unit;
|
int unit;
|
||||||
uint64_t extra;
|
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
|
#ifdef EFI_ZFS_BOOT
|
||||||
/*
|
/*
|
||||||
@ -616,7 +629,7 @@ main(int argc, CHAR16 *argv[])
|
|||||||
* set the env based on it.
|
* set the env based on it.
|
||||||
*/
|
*/
|
||||||
boot_howto_to_env(howto);
|
boot_howto_to_env(howto);
|
||||||
|
|
||||||
if (efi_copy_init()) {
|
if (efi_copy_init()) {
|
||||||
printf("failed to allocate staging area\n");
|
printf("failed to allocate staging area\n");
|
||||||
return (EFI_BUFFER_TOO_SMALL);
|
return (EFI_BUFFER_TOO_SMALL);
|
||||||
|
Loading…
Reference in New Issue
Block a user