Edited on 27.03.2020 - due to Manjaro not using boot.scr anymore.
I have taken below steps to achieve booting from NVME. It can be probably mirrored on Debian with some small changes since Manjaro is using boot.scr and Debian extlinux.conf.
First download a package: uboot-pinebookpro-2017.09-2-aarch64.pkg.tar.xz. It has uboot files with @pcm720 patches included. Current Manjaro uboot package does not have nvme support enabled. This is subject to change.
1. Extract the files from the package: idbloader.img, trust.img, uboot.img.
2. Write uboot files (pay attention to your device - it has to be eMMC !!! In my case /dev/mmcblk2):
"dd if=idbloader.img of=/dev/mmcblk2 bs=32k seek=1 conv=fsync"
"dd if=uboot.img of=/dev/mmcblk2 bs=64k seek=128 conv=fsync"
"dd if=trust.img of=/dev/mmcblk2 bs=64k seek=192 conv=fsync"
3. Create partition on your NVME drive to rsync filesystem from eMMC.
4. Mount the partition - lets say in /mnt
5. "cd /mnt"
6. "mkdir dev proc sys mnt"
7. "rsync -aHxv --numeric-ids --progress /* /mnt --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/mnt"
8. chroot to your newly synced partition "chroot /mnt".
9. "cd /boot/extlinux"
9. Edit extlinux.conf and change "root=LABEL=ROOT" to "root=/dev/nvme0n1p1" (if your new partition is first on disk).
10. Exit chroot "exit".
11. On eMMC !!! Rename extlinux directory to something else eg. extlinux.old.
12. Reboot machine - you should boot from NVME.
13. After sucessful reboot check "lsblk" it should be something like:
[root@pbp ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk2 179:0 0 58.2G 0 disk
└─mmcblk2p1 179:1 0 58.2G 0 part
mmcblk2boot0 179:32 0 4M 1 disk
mmcblk2boot1 179:64 0 4M 1 disk
nvme0n1 259:0 0 894.3G 0 disk
└─nvme0n1p1 259:1 0 20G 0 part /
In case you want to start the system from eMMC just rename extlinux.old to extlinux on eMMC. Opposite to what has been done in step 11.
Enjoy !
I have taken below steps to achieve booting from NVME. It can be probably mirrored on Debian with some small changes since Manjaro is using boot.scr and Debian extlinux.conf.
First download a package: uboot-pinebookpro-2017.09-2-aarch64.pkg.tar.xz. It has uboot files with @pcm720 patches included. Current Manjaro uboot package does not have nvme support enabled. This is subject to change.
1. Extract the files from the package: idbloader.img, trust.img, uboot.img.
2. Write uboot files (pay attention to your device - it has to be eMMC !!! In my case /dev/mmcblk2):
"dd if=idbloader.img of=/dev/mmcblk2 bs=32k seek=1 conv=fsync"
"dd if=uboot.img of=/dev/mmcblk2 bs=64k seek=128 conv=fsync"
"dd if=trust.img of=/dev/mmcblk2 bs=64k seek=192 conv=fsync"
3. Create partition on your NVME drive to rsync filesystem from eMMC.
4. Mount the partition - lets say in /mnt
5. "cd /mnt"
6. "mkdir dev proc sys mnt"
7. "rsync -aHxv --numeric-ids --progress /* /mnt --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/mnt"
8. chroot to your newly synced partition "chroot /mnt".
9. "cd /boot/extlinux"
9. Edit extlinux.conf and change "root=LABEL=ROOT" to "root=/dev/nvme0n1p1" (if your new partition is first on disk).
10. Exit chroot "exit".
11. On eMMC !!! Rename extlinux directory to something else eg. extlinux.old.
12. Reboot machine - you should boot from NVME.
13. After sucessful reboot check "lsblk" it should be something like:
[root@pbp ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk2 179:0 0 58.2G 0 disk
└─mmcblk2p1 179:1 0 58.2G 0 part
mmcblk2boot0 179:32 0 4M 1 disk
mmcblk2boot1 179:64 0 4M 1 disk
nvme0n1 259:0 0 894.3G 0 disk
└─nvme0n1p1 259:1 0 20G 0 part /
In case you want to start the system from eMMC just rename extlinux.old to extlinux on eMMC. Opposite to what has been done in step 11.
Enjoy !