PINE64

Full Version: How to boot Manjaro from NVME with uboot on eMMC
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5
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 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 ! Cool
Are you seeing any performance increases?
Not in everyday use. But if I have to move some bigger amount of data between partitions definitely yes.
(01-16-2020, 12:10 PM)as400 Wrote: [ -> ]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 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"
9. Edit boot.txt and change "root=PARTUUID=${uuid}" to "root=/dev/nvme0n1p1" (if your new partition is first on disk).
10. Run "./mkscr" (you might have to chmod +x if it's not executable).
11. Exit chroot "exit".
12. On eMMC !!! Rename boot directory to something else eg. boot.old.
13. Reboot machine - you should boot from NVME.
14. 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 boot.old to boot on eMMC. Opposite to what has been done in step 12.

Enjoy ! Cool

I have got this working.  Thanks for the tutorial!  Does boot from SD work with this?  I'm having some issues booting from SD.  The PBP boots, then I get a black sreen when the SD card is inserted.  I'm trying to use the Chromium image from the PBP wiki.

Thanks again!
-Josh
(01-16-2020, 12:10 PM)as400 Wrote: [ -> ]First download a package: uboot-pinebookpro-2017.09-2-aarch64.pkg.tar.xz. It has uboot files with patches included. Current Manjaro uboot package does not have nvme support enabled. This is subject to change.

I'm curious, is this your own modified u-boot, or is the package included by any of the current OS options? Also, what's its boot priority?
I have no problems booting from sd card whatsoever with this uboot.

this package was offered once by Manjaro team. Patches are by . So all credits go to them. Sd card has priority on boot.
(01-29-2020, 10:32 AM)as400 Wrote: [ -> ] I have no problems booting from sd card whatsoever with this uboot.

this package was offered once by Manjaro team. Patches are by . So all credits go to them. Sd card has priority on boot.

Oh, is this the one they used right before switching to the latest u-boot that has USB boot?

Was the boot priority ever changed from SD>NVMe>eMMC?
(01-29-2020, 10:49 AM)tophneal Wrote: [ -> ]Oh, is this the one they used right before switching to the latest u-boot that has USB boot?

Was the boot priority ever changed from SD>NVMe>eMMC?

Yes. The one from the first post is last before they switched to mainline uboot.

Actually, right now I am using the one from and booting off SPI flash.
(01-29-2020, 11:27 AM)as400 Wrote: [ -> ]
(01-29-2020, 10:49 AM)tophneal Wrote: [ -> ]Oh, is this the one they used right before switching to the latest u-boot that has USB boot?

Was the boot priority ever changed from SD>NVMe>eMMC?

Yes. The one from the first post is last before they switched to mainline uboot.

Actually, right now I am using the one from and booting off SPI flash.

I had to write it back to my CrOS install last night, and noticed for SPI its a simple one line command now. Freaking awesome sauce!I think I might mess around and flash it on mine, since I'm about to get an ANSI. That u-boot would be a nice little surprise to someone if I sell the ISO.
(01-29-2020, 11:32 AM)tophneal Wrote: [ -> ]I had to write it back to my CrOS install last night, and noticed for SPI its a simple one line command now. Freaking awesome sauce!I think I might mess around and flash it on mine, since I'm about to get an ANSI. That u-boot would be a nice little surprise to someone if I sell the ISO.

I suggest using rkdeveloptool to write it to SPI. I tried dd method on Manjaro (which is recommended) but it didn't work.
Check out this thread ----> https://forum.pine64.org/showthread.php?tid=8927. Note my little correction at the end. It's kind of important Smile

Edit: and it's not needed to press power button fro 10 seconds. It's enough to remove sd card, turn off eMMC and just press power button to get into maskrom mode.
Pages: 1 2 3 4 5