• Bug#1091979: u-boot-menu: Fails to add fdt or fdtdir entries

    From Johannes Schauer Marin Rodrigues@21:1/5 to All on Fri Jan 3 00:00:01 2025
    Package: u-boot-menu
    Version: 4.2.3
    Severity: normal

    Hi,

    I installed Debian Trixie on my MNT Reform with imx8mq with separate /boot partition and a snippet from the resulting /boot/extlinux/extlinux.conf looks like this:

    default l0
    menu title U-Boot menu
    prompt 1
    timeout 50


    label l0
    menu label Debian GNU/Linux trixie/sid 6.12.6-mnt-reform-arm64
    linux /vmlinuz-6.12.6-mnt-reform-arm64
    initrd /initrd.img-6.12.6-mnt-reform-arm64


    append ro no_console_suspend cryptomgr.notests loglevel=3 ${bootargs} console=tty1


    The lines that should contain an fdt or fdtdir entry are missing. Lets look at the sh -x output to figure out why they were not generated:

    1 P: Writing config for vmlinuz-6.12.6-mnt-reform-arm64...
    2 + _NUMBER=0
    3 + _ENTRY=1
    4 + [ -e /boot/initrd.img-6.12.6-mnt-reform-arm64 ]
    5 + _INITRD=initrd /initrd.img-6.12.6-mnt-reform-arm64
    6 + [ -e ]
    7 + [ -e /boot6.12.6-mnt-reform-arm64/ ]
    8 + [ -d /boot6.12.6-mnt-reform-arm64/ ]
    9 + [ -f /boot/dtb-6.12.6-mnt-reform-arm64 ]
    10 + [ /usr/lib/linux-image- = ]
    11 + _FDT=

    Line 6 checks an empty value because U_BOOT_FDT is unset. Line 7 and 8 cannot work because there is a missing slash between ${_BOOT_PATH} and ${U_BOOT_FDT_DIR}. Line 9 finds /boot/dtb-6.12.6-mnt-reform-arm64 but the check in line 10 fails because {U_BOOT_FDT_DIR} is unset. Why is it unset? Because even though read-config found a separate /boot partition in has_separate_boot(), U_BOOT_SYNC_DTBS was set to false, so _FDT_DIR was never set to "/dtb-" and even if it were set to that, the check in line 10 would still fail because "/usr/lib/linux-image-" is not equal to "/dtb-". So to summarize:

    1. why is a fdt or fdtdir line not added by default?
    2. why are there missing slashes in line 7 and 8?
    3. why do i have to enable U_BOOT_SYNC_DTBS? I already use flash-kernel for that
    4. why is there a check for "/usr/lib/linux-image-" if _FDT_DIR gets set to "/dtb-"?

    One workaround is to set:

    U_BOOT_FDT_DIR="/dtbs/"

    which will then add fdtdir entries that look correct. The slashes are critical because they are missing in the u-boot-update script.

    Thanks!

    cheers, josch

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)