Hi,

On 17.04.22 11:10, Stefano Babic wrote:
Hi Mark,

On 16.04.22 12:07, Mark Jonas wrote:
Hi,

In my setup the test bootloader_ebg_defconfig is broken.

   RUN     FileNotFoundTest
   RUN     CrapFileTest
   RUN     ImgNameErrorTest
   RUN     ValidImageTest
make[1]: *** [/mnt/scripts/acceptance-tests/CheckImage.mk:115:
ValidImageTest] Error 1
make: *** [Makefile:494: acceptance-tests] Error 2

https://gitlab.com/toertel/docker-image-swupdate-contribute/-/jobs/2342017362

I bisected the problem with the following result.

There are only 'skip'ped commits left to test.
The first bad commit could be any of:
b8897ed695e1cd954859142b14ec8546d2e7994a
3a4e626b857c6f8526f0e2716e96d15955b00c79
We cannot bisect more!


This is not  due to some changes in SWUpdate or EFIBootGuard, but how the two projects are working now. Since 3a4e626b8, mostly added to help Debian's integration, the interface to the bootloader is *dynamic* instead of static. SWUpdate does not link to the bootloader interface, but loads it via dlopen() at startup. Expanding the output above, I can reproduce the issue you report, and I get :

[INFO ] : SWUPDATE running :  [print_registered_bootloaders] : Registered bootloaders: [INFO ] : SWUPDATE running :  [print_registered_bootloaders] :     uboot loaded. [INFO ] : SWUPDATE running :  [print_registered_bootloaders] : none    loaded. [INFO ] : SWUPDATE running :  [print_registered_bootloaders] : grub    loaded. [INFO ] : SWUPDATE running :  [print_registered_bootloaders] :     ebg shared lib not found. [ERROR] : SWUPDATE failed [0] ERROR core/swupdate.c : main : 778 : Default bootloader interface 'ebg' couldn't be loaded.

Reason is that the shared library "libebgenv.so" cannot be found. The test environment you have (I have not seen "make install" when efibootguard is built) have installed outside the library path.

See also Christian's :

commit cbbd7a343a0263565baeb5549c7086a63114aca0 (denx/coverity_scan, coverity_scan)
Author: Christian Storm <[email protected]>
Date:   Tue Mar 22 12:29:03 2022 +0100

     CI: Adapt EFI Boot Guard build

     Runtime-dynamic bootloader selection requires
     the libebgenv.so shared library to be available.
     Also adapt to the official installation instructions.


In fact, I can easy fix the error above if I set LD_LIBRARY_PATH to the path where the library is installed. Just be sure that the library can be found, and the issue disappears.

I had to skip b8897e because it does not compile.


Digging deeper, I have found why it this work on SWUpdate's pipeline. The issue raises if efibootguard is installed on a different path, that is running configure --prefix <>. In fact, the SONAME for the library differs form standard.

I set --prefix /usr/local, and I can easy reproduce the issue. Checking ldconfig cache, I see:

libebgenv-0.10.0.so (libc6,x86-64) => /usr/local/lib/libebgenv-0.10.0.so

compared to libubootenv:

        libubootenv.so.0 (libc6,x86-64) => /usr/local/lib/libubootenv.so.0
        libubootenv.so (libc6,x86-64) => /usr/local/lib/libubootenv.so
s

So it works just with the exact name. This fixes your build:

diff --git a/bootloader/ebg.c b/bootloader/ebg.c
index 2cd6a65..a63f5f2 100644
--- a/bootloader/ebg.c
+++ b/bootloader/ebg.c
@@ -198,7 +198,7 @@ static bootloader ebg = {

 static bootloader* probe(void)
 {
-       void* handle = dlopen("libebgenv.so", RTLD_NOW | RTLD_GLOBAL);
+ void* handle = dlopen("libebgenv-0.10.0.so", RTLD_NOW | RTLD_GLOBAL);
        if (!handle) {
                return NULL;
        }

But of course, we won't do this - the issue with SONAME should be solved inside EFIBootguard.

Regards,
Stefano

--
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: [email protected]
=====================================================================

--
You received this message because you are subscribed to the Google Groups "EFI Boot 
Guard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/efibootguard-dev/c3ce5e6c-51af-e1e9-8f9f-904798366c4f%40denx.de.

Reply via email to