On 2/16/24 09:25, Trevor Woerner wrote:
On Thu 2024-02-15 @ 06:45:59 PM, Quentin Schulz wrote:
Hi Trevor,

On 2/12/24 21:23, Trevor Woerner via lists.yoctoproject.org wrote:
[...]
+UBOOT_EXTLINUX_KERNEL_IMAGE ?= "/boot/${KERNEL_IMAGETYPE}"

FWIW, I don't think /boot is required. bootstd/bootmeth in U-Boot (upstream
at the very least) will check for / and then /boot prefix for the paths in
extlinux.conf. Not providing /boot means if someone still wants to use a
separate boot partition, they wouldn't have to update this variable. But
since it's overridable, this is basically up to your preference.

This is a good example of working ahead. The next thing I have queued up is
a meta-rauc-rockchip example that works generically on all (most?) rockchip
boards. As part of the U-Boot script I need to make the A/B logic work, it
needs the "/boot" in there otherwise it doesn't work; therefore it's best to
set it up properly now.


Mmmm I'm interested to see why it fails without the /boot thing? Let's see when we get patches :)

+UBOOT_EXTLINUX_LABELS ?= "default"
+UBOOT_EXTLINUX_MENU_DESCRIPTION:default ?= "${MACHINE}"
+
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "u-boot-extlinux"

Is the image actually bootable if we do NOT have u-boot-extlinux installed?
I'm challenging the RRECOMMENDS basically. And wondering whether
MACHINE_ESSENTIAL_EXTRA_* is always included (it seems like RDEPENDS one is
part of packagegroup-core-boot which is virtually installed in all images).

I can double-check, but I'm pretty sure that line was added explicitly after
testing and noticing that it was needed. If we remove the extlinux artifacts
from the image, what boot method is U-Boot supposed to use?


I'm not saying it is not needed, I'm thinking _RRECOMMENDS is too weak and it should be _RDEPENDS instead?

I'm not sure the wic image (or rather the rootfs) is proper basically if u-boot-extlinux is not installed.

As for what U-Boot does if it doesn't find an extlinux.conf, it depends on what U-Boot is configured to do. If I rememebr correctly, most (all) Rockchip boards now use bootflow by default.

You can check the content of the bootcmd environment variable, that's what's started when the user does nothing to interrupt the boot.

For me on Jaguar RK3588:
"""
> printenv bootcmd
bootcmd=bootflow scan -lb
"""

remove the -b flag so it doesn't boot and you should have something reasonable.

For me:
"""
=> bootflow scan -lae
Scanning for bootflows in all bootdevs
Seq  Method       State   Uclass    Part  Name                      Filename
--- ----------- ------ -------- ---- ------------------------ ----------------
Scanning global bootmeth 'efi_mgr':
  0  efi_mgr      ready   (none)       0  <NULL>
Scanning bootdev 'mmc@fe2e0000.bootdev':
  1  extlinux     media   mmc          0  m...@fe2e0000.bootdev.whol
     ** No partition found, err=-2: No such file or directory
  2  script       media   mmc          0  m...@fe2e0000.bootdev.whol
     ** No partition found, err=-2: No such file or directory
  3  efi          media   mmc          0  m...@fe2e0000.bootdev.whol
     ** No partition found, err=-2: No such file or directory
  4  pxe          base    mmc          0  m...@fe2e0000.bootdev.whol
     ** No media/partition found, err=-524: Unknown error
  5  extlinux     media   mmc          1  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  6  script       media   mmc          1  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  7  efi          media   mmc          1  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  8  pxe          base    mmc          1  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
  9  extlinux     media   mmc          2  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  a  script       media   mmc          2  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  b  efi          media   mmc          2  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  c  pxe          base    mmc          2  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
  d  extlinux     media   mmc          3  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  e  script       media   mmc          3  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
  f  efi          media   mmc          3  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 10  pxe          base    mmc          3  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 11  extlinux     media   mmc          4  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 12  script       media   mmc          4  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 13  efi          media   mmc          4  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 14  pxe          base    mmc          4  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 15  extlinux     media   mmc          5  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 16  script       media   mmc          5  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 17  efi          media   mmc          5  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 18  pxe          base    mmc          5  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
19 extlinux ready mmc 6 m...@fe2e0000.bootdev.part /extlinux/extlinux.conf 1a script fs mmc 6 m...@fe2e0000.bootdev.part /boot/boot.scr
     ** File not found, err=-2: No such file or directory
1b efi fs mmc 6 m...@fe2e0000.bootdev.part efi/boot/bootaa64.efi
     ** File not found, err=-2: No such file or directory
 1c  pxe          base    mmc          6  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 1d  extlinux     media   mmc          7  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 1e  script       media   mmc          7  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 1f  efi          media   mmc          7  m...@fe2e0000.bootdev.part
     ** No partition found, err=-22: Invalid argument
 20  pxe          base    mmc          7  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 21  extlinux     media   mmc          8  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 22  script       media   mmc          8  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 23  efi          media   mmc          8  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 24  pxe          base    mmc          8  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 25  extlinux     media   mmc          9  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 26  script       media   mmc          9  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 27  efi          media   mmc          9  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 28  pxe          base    mmc          9  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 29  extlinux     media   mmc          a  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 2a  script       media   mmc          a  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 2b  efi          media   mmc          a  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 2c  pxe          base    mmc          a  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 2d  extlinux     media   mmc          b  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 2e  script       media   mmc          b  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 2f  efi          media   mmc          b  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 30  pxe          base    mmc          b  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 31  extlinux     media   mmc          c  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 32  script       media   mmc          c  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 33  efi          media   mmc          c  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 34  pxe          base    mmc          c  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 35  extlinux     media   mmc          d  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 36  script       media   mmc          d  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 37  efi          media   mmc          d  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 38  pxe          base    mmc          d  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 39  extlinux     media   mmc          e  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 3a  script       media   mmc          e  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 3b  efi          media   mmc          e  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 3c  pxe          base    mmc          e  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 3d  extlinux     media   mmc          f  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 3e  script       media   mmc          f  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 3f  efi          media   mmc          f  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 40  pxe          base    mmc          f  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 41  extlinux     media   mmc         10  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 42  script       media   mmc         10  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 43  efi          media   mmc         10  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 44  pxe          base    mmc         10  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 45  extlinux     media   mmc         11  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 46  script       media   mmc         11  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 47  efi          media   mmc         11  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 48  pxe          base    mmc         11  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 49  extlinux     media   mmc         12  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 4a  script       media   mmc         12  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 4b  efi          media   mmc         12  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 4c  pxe          base    mmc         12  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 4d  extlinux     media   mmc         13  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 4e  script       media   mmc         13  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 4f  efi          media   mmc         13  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 50  pxe          base    mmc         13  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 51  extlinux     media   mmc         14  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 52  script       media   mmc         14  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 53  efi          media   mmc         14  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 54  pxe          base    mmc         14  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 55  extlinux     media   mmc         15  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 56  script       media   mmc         15  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 57  efi          media   mmc         15  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 58  pxe          base    mmc         15  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 59  extlinux     media   mmc         16  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 5a  script       media   mmc         16  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 5b  efi          media   mmc         16  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 5c  pxe          base    mmc         16  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 5d  extlinux     media   mmc         17  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 5e  script       media   mmc         17  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 5f  efi          media   mmc         17  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 60  pxe          base    mmc         17  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 61  extlinux     media   mmc         18  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 62  script       media   mmc         18  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 63  efi          media   mmc         18  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 64  pxe          base    mmc         18  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 65  extlinux     media   mmc         19  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 66  script       media   mmc         19  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 67  efi          media   mmc         19  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 68  pxe          base    mmc         19  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 69  extlinux     media   mmc         1a  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 6a  script       media   mmc         1a  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 6b  efi          media   mmc         1a  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 6c  pxe          base    mmc         1a  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 6d  extlinux     media   mmc         1b  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 6e  script       media   mmc         1b  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 6f  efi          media   mmc         1b  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 70  pxe          base    mmc         1b  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 71  extlinux     media   mmc         1c  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 72  script       media   mmc         1c  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 73  efi          media   mmc         1c  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 74  pxe          base    mmc         1c  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
 75  extlinux     media   mmc         1d  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 76  script       media   mmc         1d  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 77  efi          media   mmc         1d  m...@fe2e0000.bootdev.part
     ** No partition found, err=-2: No such file or directory
 78  pxe          base    mmc         1d  m...@fe2e0000.bootdev.part
     ** No media/partition found, err=-524: Unknown error
Scanning bootdev 'mmc@fe2c0000.bootdev':
Card did not respond to voltage select! : -110
Unknown uclass 'nvme' in label
scanning bus for devices...
Bus usb@fc800000: USB EHCI 1.00
Bus usb@fc840000: USB OHCI 1.0
Bus usb@fc880000: USB EHCI 1.00
Bus usb@fc8c0000: USB OHCI 1.0
scanning bus usb@fc800000 for devices... 1 USB Device(s) found
scanning bus usb@fc840000 for devices... 1 USB Device(s) found
scanning bus usb@fc880000 for devices... 1 USB Device(s) found
scanning bus usb@fc8c0000 for devices... 1 USB Device(s) found
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
BOOTP broadcast 5
BOOTP broadcast 6
BOOTP broadcast 7
BOOTP broadcast 8
BOOTP broadcast 9
BOOTP broadcast 10
BOOTP broadcast 11
BOOTP broadcast 12
BOOTP broadcast 13
BOOTP broadcast 14
BOOTP broadcast 15
BOOTP broadcast 16
BOOTP broadcast 17

Retry time exceeded; starting again
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
BOOTP broadcast 5
BOOTP broadcast 6
BOOTP broadcast 7
BOOTP broadcast 8
BOOTP broadcast 9
BOOTP broadcast 10
BOOTP broadcast 11
BOOTP broadcast 12
BOOTP broadcast 13
BOOTP broadcast 14
BOOTP broadcast 15
BOOTP broadcast 16
BOOTP broadcast 17

Retry time exceeded; starting again
No more bootdevs
--- ----------- ------ -------- ---- ------------------------ ----------------
(121 bootflows, 2 valid)
"""

The media tested seems to be located in boot_targets, which defaults for that board to:

"""
> printenv boot_targets
boot_targets=mmc0 mmc1 nvme scsi usb pxe dhcp spi
"""

So it tries to boot from mmc0 (eMMC usually), mmc1 (SD card usually), nvme, scsi, usb, pxe (glorified TFTP?), dhcp, spi.

So if nothing works/exists before scsi, then it'll try to boot from that, then USB, then from the network and finally maybe from spi but that is very likely to fail as well since SPI flashes are typically very small and wouldn't be able to contain even the kernel Image?

This is actually quite nice, I was wondering also if there was a way to
create as many entries as there are Device Trees supported for the machine
(and maybe even device tree overlays? but this one's difficult because we
need knowledge of which device tree overlay can apply on top of which device
tree(s) :) ). But I don't think we can have anonymous python in conf file?
Or maybe we should do this in u-boot bbappend?

Yes. The bbclass has logic to generate as many entries as user-supplied labels
in UBOOT_EXTLINUX_LABELS:

https://git.openembedded.org/openembedded-core/tree/meta/classes-recipe/uboot-extlinux-config.bbclass#n114

I actually hint at the mechanism my providing the superfluous ":default"
entry.


I'm actually more discussing how to *feed* this to this part of the code. Right now, this is manual because we need to define labels and for each variable a label override.

I was wondering if we could have something that automatically creates labels for the non fitimage usecase, based on the KERNEL_DEVICETREE variable.

in pseudo code:

UBOOT_EXTLINUX_LABELS ?= ""

python __anonymous() {
    UBOOT_EXTLINUX_DEFAULT_LABEL = first(KERNEL_DEVICETREE)
    for devicetree in KERNEL_DEVICETREE:
        UBOOT_EXTLINUX_LABELS += basename(devicetree)
        UBOOT_EXTLINUX_FDT:basename(devicetree) = devicetree
}

diff --git a/conf/machine/include/rockchip-wic.inc 
b/conf/machine/include/rockchip-wic.inc
index 67a8310f7d6a..cae14c90e1db 100644
--- a/conf/machine/include/rockchip-wic.inc
+++ b/conf/machine/include/rockchip-wic.inc
@@ -1,5 +1,7 @@
   # common meta-rockchip wic/wks items
+require conf/machine/include/rockchip-extlinux.inc
+
   SPL_BINARY ?= "idbloader.img"
   IMAGE_FSTYPES += "wic wic.bmap"
@@ -11,23 +13,8 @@ WKS_FILE_DEPENDS ?= " \
        virtual/bootloader \
        virtual/kernel \
        "

Does the WKS file still really depend on virtual/kernel or is it rather a
misplaced dependency now?

Great catch! Also, since all the partitions now have explicit fstypes, and the
fact we no longer have a vfat-formatted /boot partition, the mtools-native and
dosfstools-native dependencies can also be removed.

It will probably get rejected, but I think I'm going to create a patch for wic
that assumes unspecified partitions are "none" instead of "vfat". I wonder how
many BSP layers are copy&past'ing the mtools and dosfstools dependencies that
aren't using vfat-based partitions and wondering why?


And a nice catch from you there too :)

Cheers,
Quentin
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#62517): https://lists.yoctoproject.org/g/yocto/message/62517
Mute This Topic: https://lists.yoctoproject.org/mt/104319696/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to