Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Rockpi4/Linux system runs on M.2 NVME SSD"

< Rockpi4Redirect page
(Method Two: Write image to SPI flash using mtd tool)
(Redirected page to Rockpi4/install/NVME)
 
(12 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{rockpi4_header}}
+
#REDIRECT [[Rockpi4/install/NVME]]
 
+
{{Languages|rockpi4/Linux system runs on M.2 NVME SSD}}
+
 
+
    [[rockpi4 | ROCK Pi 4]] > [[Rockpi4/Linux system runs on M.2 NVME SSD | Linux system runs on M.2 NVME SSD]]
+
 
+
__TOC__
+
 
+
It is exciting that, on ROCK Pi 4, NVME is able to boot from SPI Flash. Here is the tutorial about Linux system running on M.2 NVME SSD.
+
 
+
This tutorial applys to ROCK Pi 4A and ROCK Pi 4B.
+
 
+
== Prerequisites ==
+
 
+
To follow this tutorial, you will need:
+
 
+
* A well-running ROCK Pi with eMMC or Micro SD Card
+
 
+
* Linux system image for ROCK Pi 4
+
 
+
* SPI Flash image (ROCK Pi 4 u-boot image)
+
 
+
* SPI Flash IC on ROCK Pi 4
+
** Single power supply voltage range: '''2.7~3.6V'''
+
** Space: at least '''4MB'''
+
 
+
* M.2 NVME SSD with M.2 NVMe SSD Reader Adapter
+
** Support brand: HP (HP SSD EX900 M.2 250GB), Intel, MaxMemory, KingSpec, etc
+
 
+
== Step 1 Install ROCK Pi 4 u-boot image to SPI Flash ==
+
 
+
There are two methods for installing u-boot image to SPI Flash, but you must installed the SPI Flash IC on your ROCK Pi4 before this methods.
+
 
+
Check if there is a SPI flash on ROCK Pi 4 board. See [[rockpi4/hardware/spi_flash | SPI Flash]].
+
 
+
=== Method One: Write image to SPI flash from USB OTG port ===
+
 
+
Firstly, remove booting devices such as uSD card, eMMC, and M.2 NVME SSD from ROCK Pi 4.
+
 
+
Secondly, get ROCK Pi 4 u-boot image from [https://dl.radxa.com/rockpi/images/loader/spi here] . Select the target files, called uboot-trust-spi.img and rk3399_loader_spinor_v1.15.114.bin .
+
 
+
Thirdly, follow [[rockpi4/dev/spi-install | Write image to SPI flash from USB OTG port]] to flash image.
+
 
+
Finally, we can see that red(or blue) led is always on.
+
 
+
=== Method Two: Write image to SPI flash using mtd tool ===
+
 
+
This method requires a running system ( [https://dl.radxa.com/rockpi/images/ubuntu/rockpi4b-ubuntu-bionic-minimal-20190104_2101-gpt.img.gz Ubuntu Server] or [https://dl.radxa.com/rockpi/images/debian/rockpi4_debian_stretch_lxde_armhf_20181105_2120-gpt.img.gz Debian Desktop] ) on ROCK Pi 4 board. So now power on the ROCK Pi 4. Maybe your ROCK Pi system is running on eMMC module or uSD card. It is OK.
+
 
+
Firstly, add Radxa APT source. The latest version of u-boot and kernel are still in testing.
+
 
+
For Debian stretch
+
 
+
  $ export DISTRO=stretch-testing # update more frequently but maybe unstable
+
  $ echo "deb http://apt.radxa.com/$DISTRO/ stretch main" | sudo tee /etc/apt/sources.list.d/apt-radxa-com.list
+
 
+
or Ubuntu server
+
  $ export DISTRO=bionic-testing # update more frequently but maybe unstable
+
  $ echo "deb http://apt.radxa.com/$DISTRO/ bionic main" | sudo tee /etc/apt/sources.list.d/apt-radxa-com.list
+
 
+
Get the pub key
+
  $ wget -O -  apt.radxa.com/$DISTRO/public.key | sudo apt-key add -
+
 
+
Update APT
+
  $ sudo apt-get update && sudo apt-get upgrade
+
 
+
Install necessary packages
+
 
+
  $ sudo apt-get install -y rockchip-fstab
+
  $ sudo apt-get install -y rockchip-overlay
+
  $ sudo apt-get install -y rockpi4-dtbo
+
  $ sudo apt-get install -y linux-4.4-latest # Will update kernel
+
 
+
Update u-boot in uSD card or eMMC:
+
 
+
  $ sudo apt-get install -y rockpi4b-rk-u-boot-latest
+
 
+
Screen shows
+
  ...
+
  You are currently running on board:
+
  ROCK PI 4B
+
  There will be two steps that you have to confirm. One is upgrading bootloader on SPI Flash.
+
  The other is upgrading bootloader on eMMC or uSD card.
+
 
+
  Step one: upgrade bootloader on SPI Flash
+
  Boot device, SPI Flash, is not found. Make sure there is one SPI Flash on board.
+
  You can install package rockpi4-dtbo later manually and uncomment three lines in file /boot/hw_intfc.conf.
+
  intfc:uart4=off
+
  intfc:spi1=on
+
  intfc:dtoverlay=spi1-flash
+
  After restarting the Pi, execute command, /usr/local/sbin/rockpi4b_upgrade_bootloader.sh.
+
+
  Step two: upgrade bootloader on uSD card or eMMC.
+
  Boot device, uSD card or eMMC, is found. Would you like to upgrade bootloader on it?
+
  If yes, type Y/y. If no, type N/n.
+
 
+
Just type '''Y''' or '''y'''.
+
  y
+
  Backup bootloader on boot device (/dev/mmcblk1p2).
+
  8192+0 records in
+
  8192+0 records out
+
  4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.107356 s, 39.1 MB/s
+
  Overwrite bootloader to boot device (/dev/mmcblk1p2).
+
  2048+0 records in
+
  2048+0 records out
+
  1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.140072 s, 7.5 MB/s
+
  Done.
+
 
+
Modify file, /boot/hw_intfc.conf. Uncomment these  lines.
+
 
+
  intfc:uart4=off
+
  intfc:spi1=on
+
  intfc:dtoverlay=spi1-flash
+
 
+
Reboot the machine.
+
 
+
After login, there is a device '''/dev/mtd0'''.
+
 
+
  $ ls /dev/mtd*
+
  /dev/mtd0  /dev/mtd0ro  /dev/mtdblock0
+
 
+
Execute command
+
 
+
  $ sudo /usr/local/sbin/rockpi4b_upgrade_bootloader.sh
+
 
+
Screen shows
+
 
+
  You are currently running on board:
+
  ROCK PI 4B
+
  There will be two steps that you have to confirm. One is upgrading bootloader on SPI Flash.
+
  The other is upgrading bootloader on eMMC or uSD card.
+
 
+
  Step one: upgrade bootloader on SPI Flash
+
  One boot device, SPI Flash, is found, would you like to upgrade bootloader on it?
+
  The installation would cost several minutes.
+
  If yes, type Y/y. If no, type N/n.
+
 
+
Just type '''Y''' or '''y'''.
+
  y
+
  Overwrite bootloader to SPI Flash device.
+
  Writing /dev/mtd0 with content of /usr/lib/u-boot-rockpi4b/spi/uboot-trust-spi.img
+
  Erasing 4 Kibyte @ 3ff000 -- 100 % complete
+
  Writing data to block 0 at offset 0x0
+
  Writing data to block 1 at offset 0x1000
+
  Writing data to block 2 at offset 0x2000
+
  Writing data to block 3 at offset 0x3000
+
  Writing data to block 4 at offset 0x4000
+
  ...
+
  Writing data to block 1020 at offset 0x3fc000
+
  Writing data to block 1021 at offset 0x3fd000
+
  Writing data to block 1022 at offset 0x3fe000
+
  Writing data to block 1023 at offset 0x3ff000
+
 
+
  Step two: upgrade bootloader on uSD card or eMMC
+
  Boot device, uSD card or eMMC, is found. Would you like to upgrade bootloader on it?
+
  If yes, type Y/y. If no, type N/n.
+
 
+
Type '''N''' or '''n'''.
+
  n
+
  Do not overwrite bootloader to uSD card or eMMC device.
+
  You can upgrade it by executing /usr/local/sbin/rockpi4b_upgrade_bootloader.sh later.
+
  Done.
+
 
+
== Step 2 Install ROCK Pi 4 system image to M.2 NVME SSD ==
+
 
+
It is convenient to install system image to M.2 NVME SSD. System images used includes [https://dl.radxa.com/rockpi/images/ubuntu/rockpi4b-ubuntu-bionic-minimal-20190104_2101-gpt.img.gz Ubuntu Server] and [https://dl.radxa.com/rockpi/images/debian/rockpi4_debian_stretch_lxde_armhf_20181105_2120-gpt.img.gz Debian Desktop].
+
 
+
Put the M.2 NVME SSD into M.2 NVMe SSD Reader Adapter, and then insert them to PC.
+
 
+
When they are ready, use tool command '''dd''' or APP '''Etcher''' to install system image to M.2 NVME SSD.
+
 
+
==== Use Etcher APP====
+
 
+
Click [https://wiki.radxa.com/Rockpi4/install/NVME here].
+
 
+
 
+
==== Use tool command "dd"====
+
 
+
Get your NVME SSD device path:
+
 
+
    sudo fdisk -l
+
 
+
You can see the out put message just like this:
+
 
+
    Disk '''/dev/nvme0n1''': 232.9 GiB, 250059350016 bytes, 488397168 sectors            #The '/dev/nvme0n1' is your NVME SSD device path
+
    Units: sectors of 1 * 512 = 512 bytes                                         
+
    Sector size (logical/physical): 512 bytes / 512 bytes                         
+
    I/O size (minimum/optimal): 512 bytes / 512 bytes
+
 
+
Write Image:
+
 
+
    sudo dd if=''''your image path'''' of=''''your NVME SSD device path'''' bs=1M           
+
    #such as: sudo dd if=rockpi4-debian-stretch-desktop-arm64-20190710_1940-gpt.img of=/dev/nvme0n1 bs=1M
+
 
+
== Step 3 Test M.2 NVME SSD booting from SPI Flash ==
+
 
+
Power off ROCK Pi 4, remove eMMC module or uSD Card from ROCK Pi 4 since there is system image in eMMC module or uSD Card.
+
 
+
Insert M.2 NVME SSD into ROCK Pi 4.
+
 
+
Power on ROCK Pi 4 and the system runs on M.2 NVME SSD. Now we need to checkout some important information.
+
 
+
lsusb to see whether the fourth partition is mounted on /boot directory. If not, just install package, rockchip-fstab, which will add the following lines in file /etc/fstab. If the contents of /etc/fstab are incorrect, just modify it. Then do '''sudo mount -a'''.
+
 
+
The contents of files /etc/fstab.
+
 
+
  # UNCONFIGURED FSTAB FOR BASE SYSTEM
+
  # /etc/fstab: static file system information.
+
  #
+
  # <file system> <mount point>  <type>  <options>      <dump>  <pass>
+
 
+
  /dev/nvme0n1p4  /boot  vfat    defaults        0      2
+
 
+
'''lsusb''' should show like this when system runs on M.2 NVMEE SSD.
+
 
+
  root@linaro-alip:/boot# lsblk
+
  NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
+
  nvme0n1    259:0    0 232.9G  0 disk
+
  ├─nvme0n1p1 259:1    0  3.9M  0 part
+
  ├─nvme0n1p2 259:2    0    4M  0 part
+
  ├─nvme0n1p3 259:3    0    4M  0 part
+
  ├─nvme0n1p4 259:4    0  112M  0 part /boot
+
  └─nvme0n1p5 259:5    0 232.8G  0 part /
+
 
+
Since the fourth partition, /dev/nvme0n1p4, is mounted on /boot directory. Now need to update necessary u-boot and kernel packages.
+
 
+
  $ sudo apt-get install -y rockchip-overlay
+
  $ sudo apt-get install -y linux-4.4-latest rockpi4-dtbo rockpi4b-rk-u-boot-latest
+
 
+
Modify file, /boot/hw_intfc.conf. Uncomment these lines. Thus we can use SPI Flash device (/dev/mtd0)
+
 
+
intfc:uart4=off
+
intfc:spi1=on
+
intfc:dtoverlay=spi1-flash
+
 
+
Reboot the Pi.
+
 
+
== FAQs ==
+
 
+
* u-boot supporting NVME booting  verison
+
** 2017.09-2676-g4490220395 (or newer)
+
 
+
* kernel version
+
** 4.4.154-87-rockchip-00029-g8216f17 (or newer)
+
 
+
* rockpi4-dtbo version
+
** 1.1 (or newer)
+
 
+
* Debug log
+
 
+
  rock@ubuntu:~$ ls /dev/mtd*
+
  /dev/mtd0  /dev/mtd0ro  /dev/mtdblock0
+
 
+
  rock@ubuntu:~$ cat /proc/mtd
+
  dev:    size  erasesize  name
+
  mtd0: 00400000 00001000 "loader"
+
 
+
  rock@ubuntu:~$ sudo dmesg | grep spi 
+
  [sudo] password for rock:
+
  [    2.227001] rockchip-spi ff1d0000.spi: Failed to request TX DMA channel
+
  [    2.227587] rockchip-spi ff1d0000.spi: Failed to request RX DMA channel
+
  [    2.228171] rockchip-spi ff1d0000.spi: no high_speed pinctrl state
+
  [    2.229257] m25p80 spi32766.0: xt25f32b (4096 Kbytes)
+
  [    2.229715] 1 ofpart partitions found on MTD device spi32766.0
+
  [    2.230273] Creating 1 MTD partitions on "spi32766.0":
+
 
+
* Verified SPI Flash
+
** W25Q64FV
+
** GD25Q127CSIG
+
** XT25F32B
+
 
+
* How to know that the image has been successfully installed to SPI Flash?
+
** For the newest version of u-boot, when it runs, the red(or blue) led is on.
+
** You can remove booting devices such as uSD card, eMMC module and so on. Power on ROCK Pi 4 with SPI Flash on board to see if the red(or blue)  led is on. If yes, it means that you make it.
+
 
+
== Troubleshooting ==
+
 
+
* If you have a issue, start a new post on the forum. https://forum.radxa.com/
+

Latest revision as of 07:43, 17 September 2020