Opening a disk can fail for two reasons: 1. the device does not exist; 2. the device exists but cannot be accessed for some reason.
The current error message assumes always 1. and this can misled users when they look for the actual cause of the failure. So, reuse the error message from grub_disk_open() instead of always saying "disk does not exist". https://savannah.gnu.org/bugs/?42409 --- util/getroot.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/util/getroot.c b/util/getroot.c index 92c0d70..066d564 100644 --- a/util/getroot.c +++ b/util/getroot.c @@ -391,16 +391,19 @@ grub_util_biosdisk_get_grub_dev (const char *os_dev) { /* We already know that the partition exists. Given that we already checked the device map above, we can only get - GRUB_ERR_UNKNOWN_DEVICE at this point if the disk does not exist. - This can happen on Xen, where disk images in the host can be - assigned to devices that have partition-like names in the guest - but are really more like disks. */ + GRUB_ERR_UNKNOWN_DEVICE at this point if the disk does not exist, + or cannot be opened for some reason (e.g. insufficient + permissions). + The first case (the disk does not exist) can happen on Xen, where + disk images in the host can be assigned to devices that have + partition-like names in the guest but are really more like disks. + */ if (grub_errno == GRUB_ERR_UNKNOWN_DEVICE) { char *canon; grub_util_warn - (_("disk does not exist, so falling back to partition device %s"), - os_dev); + (_("%s, so falling back to partition device %s"), + grub_errmsg, os_dev); grub_errno = GRUB_ERR_NONE; canon = grub_canonicalize_file_name (os_dev); -- 2.9.3 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel