boot-from-nvme

From Vivid Unit
This is the approved revision of this page, as well as being the most recent.

Vivid Unit comes with an M.2 connector and you can connect an NVME SSD to it.

SSD will give you much bigger storage space (Vivid Unit has 32GB eMMC storage) and better read/write speed. However the advantage of booting from SSD instead of eMMC is rather limited -- you will only see one or two seconds faster on boot. It is usually acceptable to let the device boot from eMMC while using NVME SSD as extra storage.

First you need to connect your NVME SSD to the M.2 connector on the back of VIvid Unit, use an M2 screw to seure it, and then you can boot up the system. Run "lsblk" to confirm the name of SSD device.

vivid@vivid-unit:~$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mtdblock0     31:0    0     8M  0 disk
mmcblk0      179:0    0  29.1G  0 disk
├─mmcblk0p1  179:1    0     4M  0 part
├─mmcblk0p2  179:2    0     4M  0 part
├─mmcblk0p3  179:3    0     4M  0 part
├─mmcblk0p4  179:4    0    64M  0 part
├─mmcblk0p5  179:5    0   128M  0 part
├─mmcblk0p6  179:6    0    32M  0 part
└─mmcblk0p7  179:7    0  28.9G  0 part /
mmcblk0boot0 179:32   0     4M  1 disk
mmcblk0boot1 179:64   0     4M  1 disk
nvme0n1      259:0    0 232.9G  0 disk
└─nvme0n1p1  259:1    0 230.5G  0 part 

In the example above, the SSD is /dev/nvme0n1p1 and is currently not mounted.

If you do want the device to boot from NVME SSD, you can migrate the root file system to SSD. Below are the instructions.

sudo gdisk /dev/nvme0n1p1

Type 'o' to create a new empty GUID partition table (GPT). It will say "This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N)", type 'y' and ENTER to proceed.

Type 'n' to add a new partition. It will ask for some sector parameters, type ENTER 4 times to use default setor parameters (this will create one partition for the whole NVME SSD).

Type 'w', then 'y' and then ENTER to save the partition data.

Run this command to format the newly created partition to ext4:

sudo mkfs.ext4 /dev/nvme0n1p1

Now you can migrate the root file system to SSD. Run this command in your Vivid Unit to download the script:

wget https://www.vividunit.com/download/scripts/change-rootfs-storage.sh

Make it executable:

chmod +x change-rootfs-storage.sh

Install the rsync package, which will be used by this script:

sudo apt install rsync

Now run the script:

sudo ./change-rootfs-storage.sh /dev/nvme0n1p1

After the script finish running, you can reboot the device. Run command "lsblk" you will see the NVME SSD is mounted to '/', which means the root file system has been migrated to the SSD.

vivid@vivid-unit:~$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mtdblock0     31:0    0     8M  0 disk
mmcblk0      179:0    0  29.1G  0 disk
├─mmcblk0p1  179:1    0     4M  0 part
├─mmcblk0p2  179:2    0     4M  0 part
├─mmcblk0p3  179:3    0     4M  0 part
├─mmcblk0p4  179:4    0    64M  0 part
├─mmcblk0p5  179:5    0   128M  0 part
├─mmcblk0p6  179:6    0    32M  0 part
└─mmcblk0p7  179:7    0  28.9G  0 part
mmcblk0boot0 179:32   0     4M  1 disk
mmcblk0boot1 179:64   0     4M  1 disk
nvme0n1      259:0    0 232.9G  0 disk
└─nvme0n1p1  259:1    0 230.5G  0 part /

By default the eMMC is no longer mounted. However the eMMC is still onboard and you can still use it as an extra 32GB storage. You just need to mount eMMC again. The command below is to mount eMMC to '/mnt':

sudo mount /dev/mmcblk0p7 /mnt

This eMMC still keeps its data. If you remove the NVME SSD, your Vivid Unit can still boot from its eMMC. However if you erase the data on eMMC, it will become un-bootable and you need to re-install OS to eMMC if you remove the SSD.