Quoting Daniel Kiper (2023-08-11 18:13:57)
Hi,
Sorry for late reply but I was on vacation...
On Tue, Jul 18, 2023 at 02:34:08PM +0200, Tobias Powalowski via Grub-devel
wrote:
Hi,
I tried to add the bli module to my standalone grub for my project. In qemu
testing all is fine, if trying to boot it on real hardware gives me just a
blank screen and game over.
Sorry to hear that.
I just tried it again on a Lenovo T14s (x86_64) and I can reach the menu
and the grub shell without problems. What hardware are you using?
Used grub version is 2.12rc1.
Any ideas?
You could apply following patch. It adds debug prints to the bli modue.
Then enable debug output in your grub.cfg by setting
set debug=bli
set pager=1
I recommend adding
sleep 10 --verbose --interruptible
just after the line loading the bli module. This is to keep the
messages visible for a moment before the menu clears the screen (should
it get to there).
This might give us a hint where it goes wrong.
From cda95baaf0a3c0f277a5e37aff399574627b2263 Mon Sep 17 00:00:00 2001
From: Oliver Steffen <ostef...@redhat.com>
Date: Sat, 12 Aug 2023 14:23:31 +0200
Subject: [PATCH] bli dprint
---
grub-core/commands/bli.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/grub-core/commands/bli.c b/grub-core/commands/bli.c
index e0d8a54f7..95caa4feb 100644
--- a/grub-core/commands/bli.c
+++ b/grub-core/commands/bli.c
@@ -89,23 +89,30 @@ set_loader_device_part_uuid (void)
grub_err_t status = GRUB_ERR_NONE;
char *part_uuid = NULL;
+ grub_dprintf ("bli", "getting loaded image\n");
image = grub_efi_get_loaded_image (grub_efi_image_handle);
if (image == NULL)
return grub_error (GRUB_ERR_BAD_DEVICE, N_("unable to find boot
device"));
+ grub_dprintf ("bli", "getting boot disk\n");
device_name = grub_efidisk_get_device_name (image->device_handle);
if (device_name == NULL)
return grub_error (GRUB_ERR_BAD_DEVICE, N_("unable to find boot
device"));
+ grub_dprintf ("bli", "getting uuid\n");
status = get_part_uuid (device_name, &part_uuid);
if (status == GRUB_ERR_NONE)
- status = grub_efi_set_variable_to_string ("LoaderDevicePartUUID",
&bli_vendor_guid, part_uuid,
- GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS |
- GRUB_EFI_VARIABLE_RUNTIME_ACCESS);
+ {
+ grub_dprintf ("bli", "setting var\n");
+ status = grub_efi_set_variable_to_string
("LoaderDevicePartUUID", &bli_vendor_guid, part_uuid,
+
GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS |
+ GRUB_EFI_VARIABLE_RUNTIME_ACCESS);
+ }
else
grub_error (status, N_("unable to determine partition UUID of
boot device"));
+ grub_dprintf ("bli", "cleanup\n");
grub_free (part_uuid);
grub_free (device_name);
return status;
@@ -113,8 +120,10 @@ set_loader_device_part_uuid (void)
GRUB_MOD_INIT (bli)
{
+ grub_dprintf ("bli", "init start\n");
grub_efi_set_variable_to_string ("LoaderInfo", &bli_vendor_guid,
PACKAGE_STRING,
GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS |
GRUB_EFI_VARIABLE_RUNTIME_ACCESS);
set_loader_device_part_uuid ();
+ grub_dprintf ("bli", "init end\n");
}