Hi Simon, On 2023-07-30 20:16 +03:00, Simon Glass wrote: > The ChromiumOS bootmeth is fairly basic at present. It is able to boot > only x86 kernels and contains quite a few hard-coded offsets. > > This series tidies it up by bringing in some vboot structures and adding > support for ARM. > > It adds a few more features to bootstd, including display of x86 setup > information.
Can't do a detailed review or test for a while, but had a cursory look now and wanted to reply. I'm not sure if you heard of it, but I maintain an alternate implementation of ChromiumOS verified boot userspace called depthcharge-tools [1]. Its main purpose is booting ordinary distros on Chromebooks, but it would be nice if your U-Boot implementation was also compatible with images produced from that. I guess it boils down to: - Enable booting from any chromeos_kernel partition (not just 2 & 4) - Fixup the ramdisk addr/size in x86 setup info after reading the kernel - Replace %U with chromeos_kernel PARTUUID (you probably already do?) - Prepend cros_secure to kernel cmdline There's a ready made debian-installer image if you want to test [2]. Has a partitioning bug defaulting to MBR, but otherwise can install for CrOS verified boot as well. (It's what took my last year away from U-Boot). [1] depthcharge-tools -- Tools to manage the Chrome OS bootloader https://github.com/alpernebbi/depthcharge-tools [2] Debian Installer netboot image for amd64 Chromebooks https://d-i.debian.org/daily-images/amd64/daily/netboot/depthcharge/ > So far this does not actually boot correctly on any ARM Chromebook: > > jerry - hangs when booting kernel > bob - Bad Linux ARM64 Image magic! with lz4-compressed kernel > > Further work can address these issues. I haven't been able to boot recent kernels with extlinux.conf on my pre-bootstd kevin U-Boot builds which I remember were working with older kernels. And I've heard people not being boot with extlinux.conf on veyrons as well. Might be the same, maybe try an older kernel for jerry? Again, there's a debian-installer arm64 image if you want to test [3], which could work fine on bob (not with depthcharge's size limit though), but kernel support is missing for anything else. Oh, and postmarketOS also supports CrOS verified boot [4] via depthcharge-tools, but they don't have pre-built images and it's a bit of a hassle. [3] Debian Installer netboot image for arm64 Chromebooks https://d-i.debian.org/daily-images/arm64/daily/netboot/depthcharge/ [4] postmarketOS Wiki - Chrome OS devices https://wiki.postmarketos.org/wiki/Chrome_OS_devices Anyway, I'm glad you're working on this, looking forward to testing it myself when I get the chance! > Simon Glass (16): > bootstd: cros: Correct reporting of I/O errors > bootstd: cros: Move partition reading into a function > bootstd: cros: Bring in some ChromiumOS structures > bootstd: cros: Support a kernel on either partition > bootstd: cros: Decode some kernel preamble fields > bootstd: cros: Simplify setup and cmdline expressions > bootstd: Move common zimage functions to bootm.h > bootstd: cros: Add docs for the kernel layout > bootstd: cros: Add private info for ChromiumOS > bootstd: Add private bootmeth data to the bootflow > bootstd: cros: Add a function to read info from partition > bootstd: cros: Add a function to read a kernel > bootstd: cros: Split up reading info and kernel > bootstd: Allow display of the x86 setup information > bootstd: Add a command to read all files for a bootflow > bootstd: cros: Add ARM support > > arch/x86/include/asm/zimage.h | 37 ---- > arch/x86/lib/zimage.c | 8 +- > boot/Kconfig | 4 +- > boot/bootflow.c | 15 ++ > boot/bootm.c | 37 ++++ > boot/bootmeth-uclass.c | 10 + > boot/bootmeth_cros.c | 363 ++++++++++++++++++++++++++++------ > boot/bootmeth_cros.h | 197 ++++++++++++++++++ > cmd/bootflow.c | 47 ++++- > doc/usage/cmd/bootflow.rst | 139 ++++++++++++- > include/bootflow.h | 15 +- > include/bootm.h | 47 +++++ > include/bootmeth.h | 23 +++ > 13 files changed, 836 insertions(+), 106 deletions(-) > create mode 100644 boot/bootmeth_cros.h >