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
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.