Currently, EfiFs uses EFI_DEVICE_PATH_TO_TEXT_PROTOCOL to convert a DevicePath to a string, since we need an immutable element to differentiate our file system devices, and since grub_open() took a string, the obvious choice was to use the Device Path derived string.
However this protocol is not guaranteed to be available versions of the UEFI firmware, and some older UEFI firmwares (e.g. ca. 2010-2012 Dell Optiplex and Dell Laptops) don't provide it at all, which results in FSBindingStart() returning with an error.
The easiest way to solve this issue might be to drop the DevicePath string altogether in EfiFs and use a fake string pointed to a DevicePath instead...
Currently, EfiFs uses
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL
to convert a DevicePath to a string, since we need an immutable element to differentiate our file system devices, and sincegrub_open()
took a string, the obvious choice was to use the Device Path derived string.However this protocol is not guaranteed to be available versions of the UEFI firmware, and some older UEFI firmwares (e.g. ca. 2010-2012 Dell Optiplex and Dell Laptops) don't provide it at all, which results in
FSBindingStart()
returning with an error.The easiest way to solve this issue might be to drop the DevicePath string altogether in EfiFs and use a fake string pointed to a DevicePath instead...