NVMe cannot be booted. (It cannot contain u-boot or tow-boot or ANY boot code.) It's not in the boot path.
See the Pine64 wiki at https://wiki.pine64.org/index.php/Pinebook_Pro#Using_as_OS_root_drive
The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the U-Boot update script from the mrfixit2001 Debian or Arglebargle's modified script, and the modified u-boot images provided by forum user pcm720, you can now add support to boot from an NVMe drive.
and quoted from https://wiki.pine64.org/index.php/Pinebook_Pro#Boot_devices
Please note that PCIe, the interface used for NVMe SSD on the Pinebook Pro, is not bootable on the RK3399 and therefore is not a part of the boot hierarchy. It is possible to run the desired OS from NVMe by pointing extlinux on the eMMC to rootfs on the SSD. This requires uboot, the Kernel image, DTB, and extlinux.conf in a /boot partition on the eMMC.
Also, wherever you put this boot code, the target kernel and /boot files must support it too and the subsequent boot priority that it provides is at the whim and discretion of its author!
So, if you want to ditch both eMMC and SD memory as part of the boot chain and boot a system on NVMe (/ and boot), you must use SPI. Sadly, it might not work for all operating systems due to bugs or lack of kernel support:
https://wiki.pine64.org/index.php/Pinebook_Pro#Using_the_SPI_flash_device
Here is some information on using the SPI flash device:
You need the kernel built with SPI flash device support, which will supply a device similar to: code>/dev/mtd0
Unfortunately, at this time, Armbian seems to have problems when the Armbian system resides on media other than the SD card! I don't know if the problem occurs when Armbian relies on a non-Armbian u-boot (eMMC u-boot) and/or even if the Armbian supplied u-boot doesn't work when it and the Armbian system are flashed to eMMC.
I also don't know if Armbian would work with u-boot or tow-boot or something else flashed to the SPI NOR memory. My guess is it's a poor wager!
I think I might try to copy the Armbian / system (copy files--not an image) from my Armbian SD card to my eMMC (or maybe try using my NVMe SSD too, which has been proven to be accessible when booting Armbian from the SD card). The Armbian /boot files don't look anything like the /boot files I've seen in other distros. I have "armbianENV.txt":
verbosity=1
bootlogo=true
extraargs=systemd.unified_cgroup_hierarchy=0
overlay_prefix=rockchip
fdtfile=rockchip/rk3399-pinebook-pro.dtb
rootdev=UUID=f57dd6bf-3737-40f9-95b0-376895bc2055
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
I wonder if it (the Armbian SD card /boot code) would load and run the system from eMMC or NVMe, if I simply change the rootdev=UUID entry to match the desired target. (and also change the fstab entry in the target).
Again, I don't know how this file works. What does "usbstoragequirks" do? That's a scary label!
The Slackware PBP aarch64 distro only supports booting a system on NVMe from an SD card. (Slackware devs don't even officially support eMMC, which they freely admit they don't trust as reliable hardware, because it's cheap NAND memory.) This usage model would be fine with me with my Armbian system! Once booted, the SD card can be unmounted and removed.