Hi Alper, On Thu, 3 Aug 2023 at 15:31, Alper Nebi Yasak <alpernebiya...@gmail.com> wrote: > > 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)
How do you know which ones hold kernels, and which root disks correspond to each kernel? > - Fixup the ramdisk addr/size in x86 setup info after reading the kernel But ChromeOS doesn't use ramdisk, right? > - Replace %U with chromeos_kernel PARTUUID (you probably already do?) Yes. > - Prepend cros_secure to kernel cmdline Does it have to be at the start of the cmdline? Also, the cmdline comes from cros at present, so does include that normally. I think the best way is for you to give it a try and see what is needed. > > 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/ I see the installer, but how do I actually run it on bob, say? > > > 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? Ah OK I haven't tried that. > > 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! Great! I hope that the bootmeth can expand to be more useful over time. Regards, Simon > > > 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 > >