Jump to content

[Armbian build PR] - rk3588: experimental UEFI edk2 support


Recommended Posts

Posted

rk3588: experimental UEFI edk2 support

  • core extensions: fix: don't redefine extension_function_info when recursing
    • otherwise when there's a chain of enable_extension() we lose the original info
  • extensions: grub-with-dtb: add UMS menu entry to GRUB if initramfs ums hook is detected
    • this allows user to enter UMS mode from GRUB
    • for usage with the initramfs-usb-gadget-ums extension
    • has no effect unless initramfs-usb-gadget-ums extension is enabled together with grub-with-dtb
  • extensions: initramfs-usb-gadget-ums: kernel cmdline enables initramfs UMS of all block devices
    • this optional extension adds an initramfs script that:
      • enumerates and filters all block devices
      • exposes each device as an UMS (USB Mass Storage) in an USB Gadget
      • loops forever with info (board never boots)
    • the idea here is to compensate for UEFI's lack of "ums" or "rockusb" mode that's present in u-boot
    • it also allows to expose USB/NVMe devices that might or not be detected by bootloader, if the kernel works
  • extensions: uefi-edk2-rk3588: deploy edk2 (not u-boot) for rk3588 boards
    • this extension is 100% optional and shouldn't adversely affect any builds if not enabled
    • requires UEFI_EDK2_BOARD_ID to be set in board file, so we know which UEFI/edk2 build to use
    • it finds the latest edk2 version from GitHub automatically (currently v0.9.1)
    • it downloads (and caches) the correct edk2 build image automatically
    • if forces certain aspects of the image:
      • must use GPT partitioning
      • must NOT use a separate /boot partition
    • it disables the building and deploying of u-boot completely (thus blobs etc are from edk2)
    • it creates a GPT "uboot" partition pointing to edk2's FIT, required by SPL
    • this extension:
      • automatically enables 'grub-with-dtb'
      • automatically enable 'initramfs-usb-gadget-ums', to compensate for lack of ums/rockusb since we dont have u-boot anymore
  • rk3588: configure UEFI_EDK2_BOARD_ID for all UEFI-supported boards
    • From https://github.com/edk2-porting/edk2-rk3588/releases/tag/v0.9.1
      • For example, for rock-5b_UEFI_Release_v0.9.1.img
        • UEFI_EDK2_BOARD_ID is rock-5b
    • Important: this has no effect unless optional extension is enabled
    • to test this out:
      • make sure to read carefully the instructions at https://github.com/edk2-porting/edk2-rk3588/blob/master/README.md
      • suppose you previously built the regular u-boot version with:
        • ./compile.sh BOARD=rock-5b BRANCH=legacy RELEASE=jammy
      • now you can build the UEFI version with:
        • ./compile.sh BOARD=rock-5b BRANCH=legacy RELEASE=jammy EXT=uefi-edk2-rk3588
      • write the produced image to SD or eMMC and boot it
      • use normally, or enter "UMS" mode by selecting that option in the grub menu
        • You can write image to eMMC, boot it, enter UMS, write it again to NVMe, reboot, press in UEFI and boot from NVMe
        • Also works if .img is written to eg USB stick, and UEFI edk2 is separately deployed to SPI flash
    • Important: make absolutely sure you are able to force Maskrom mode (by shorting pins, pressing buttons, etc) before writing an UEFI image to eMMC; UEFI has no RockUSB ("Loader mode" support) at all. The new "initramfs-usb-gadget-ums" extension hopes to address this, but it is not guaranteed to work.

View the full article

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines