NanoPi R5S - Boot from NVMe

Would this work with a SATA SSD too? Having Boot on emmc and root on a SATA device.
Also @dsouza @Kn0 have you tried that debian image with kernel 6.5? That’s when hw accel for RK went mainline

Hi, I’m unclear about this topic has r5s succeed to boot from nvme? Try to run plex with dietpi on my new r5s

I did not have success booting DietPi from NVMe with R5S. While I was able to do this with Armbian, I was not sucessfull in doing the same with DietPi.

I just booted the DietPi 9.3.0 from an SD card with R5S. dietpi-config option β€œUpdate MMC bootloader” does not seem to work, since it is pointing the wrong block device, see below. mmcblk0 is the SD card, and MMC is actually mmcblk1.

I will try to do this manually to see if I have a different result this time.

root@DietPi:~# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk1      179:0    0  14.6G  0 disk 
`-mmcblk1p1  179:1    0  14.4G  0 part 
mmcblk1boot0 179:32   0     4M  1 disk 
mmcblk1boot1 179:64   0     4M  1 disk 
mmcblk0      179:96   0  28.8G  0 disk 
`-mmcblk0p1  179:97   0  28.8G  0 part /
nvme0n1      259:0    0 232.9G  0 disk 
|-nvme0n1p1  259:1    0   1.1G  0 part 
`-nvme0n1p2  259:2    0     1M  0 part 

Update: reinstalling Armbian from scratch, then I will try dietpi-install on top of Armbian booted from NVMe. BTW, it would be really nice if DietPi could have an option like this one below from Armbian:

I’d dm-ed you for a little enquiry, would you take a look, please?

Hi There, I’m just discovering this interesting thread.
Where are you on it ?
I tried to install Armbian on NVME on my Nanopi R5S, which worked well but I’m unable to run the dietpi-install script. Any chance to provide me with the actual way to achieve it ?

What exactly is the issue with running our conversation script?

I have reach the same point as @dsouza described a few messages above

and I tried to run the few commands provided by @MichaIng and run the dietpi-installer script again but it failed again

@MichaIng can you have a look again?

Just started over the whole process to make sure I was not wrong.
Long story short, I believed I faced an issue when using the /etc/fstab modification script, but I was wrong. The script throws an error, but actually works

root@nanopi-r5s:~# umount /boot
mv /media/mmcboot/boot/{,.??,.[^.]}* /media/mmcboot/
rmdir /media/mmcboot/boot
umount /media/mmcboot
sed -i '/[[:blank:]]\/boot[[:blank:]]/d' /etc/fstab
sed -i 's|/media/mmcboot|/boot|' /etc/fstab
systemctl daemon-reload
mount /boot
mv: cannot stat '/media/mmcboot/boot/.next': No such file or directory
root@nanopi-r5s:~# cat /etc/fstab
# <file system>					<mount point>	<type>	<options>							<dump>	<pass>
tmpfs						/tmp		tmpfs	defaults,nosuid							0	0
UUID=ac61bab6-e028-4982-bc50-a8cc7f7da7be	/boot	ext4    defaults,noatime,commit=120,errors=remount-ro,x-gvfs-hide	0	1
UUID=4cf76fa6-73b3-4fe5-8cc0-f2614d0fa175	/		ext4	defaults,noatime,commit=120,errors=remount-ro,x-gvfs-hide	0	1
root@nanopi-r5s:~#

Well, now the dietpi-install script is starting and working until the end with no issue.
Only problem is that after that, the system has to reboot and I’m left with a dietpi system with disabled NICs. I checked the file /boot/dietpi.txt, and the option was enabled as per AUTO_SETUP_NET_ETHERNET_ENABLED=1

Now I checked using a screen, and I’m sure dietpi has booted, as I can see it starting, and offering a login banner, but I have no keyboard to plug as I’m only using laptop since about 15 years now, and so I cannot enable the interfaces by logging in.
Would you by chance provide me with a solution to allow an ssh connection on any port after rebooting, please ?
:sweat_smile:
Thanks again for the help !
Full install log are attached here if needed
dietpi-Nanopi-R5S.txt (115,1 Ko)

Well without Ethernet, no way to login via SSh. Best would be to use a serial UART adapter in this case and to check why Ethernet is missing.

I’m afraid I don’t have any serial adapter.
:cry:

than you would need a keyboard :smiley:

Okay we figured out the following:

Flash DietPi to an SD card, and boot it the R5S, finish first run setup, or cancel via CTRL+C

cd /tmp
wget https://dietpi.com/downloads/images/DietPi_NanoPiR5S-ARMv8-Bookworm.img.xz
apt install xz-utils
xz -d DietPi_NanoPiR5S-ARMv8-Bookworm.img.xz
dd if=DietPi_NanoPiR5S-ARMv8-Bookworm.img of=/dev/nvme0n1 bs=1M status=progress
parted /dev/mmcblk0 rm 1

Confirm the last command with i for ignore. Then reboot.

Similar to the solution armbian-install provides, the SD card is still needed, as it contains the bootloader. But U-Boot loads kernel, boot script etc from the NVMe already, as we deleted the partition on the SD card. That way, the dedicated /boot mount as hassle is not needed anymore, thanks to clever generic automatic U-Boot boot device selection.

To assure the root filesystem is now on NVMe, you can use e.g. lsblk.

1 Like

Can the bootloader be flashed to internal eMMC (instead of SD) to then load the rest from NVMe, this way avoiding the need to have an SD card? If I have time I will try it this weekend.

1 Like

That works as well, and indeed is the much better solution if there is an eMMC. Yesterday I was basically aiming to verify a most generic method that can enable USB and NVMe boot on almost any SBC. Did not think about the eMMC here :smile:.

Do this, after booting the SD card image:

/boot/dietpi/func/dietpi-set_hardware flash-u-boot-mmc /dev/mmcblk2
1 Like

@MichaIng

On my demo system it looks like this (without TF card)

root@DietPiR5S:~# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk2      179:0    0   7.3G  0 disk
β”œβ”€mmcblk2p1  179:1    0     4M  0 part
β”œβ”€mmcblk2p2  179:2    0     4M  0 part
β”œβ”€mmcblk2p3  179:3    0     4M  0 part
β”œβ”€mmcblk2p4  179:4    0    16M  0 part
β”œβ”€mmcblk2p5  179:5    0    40M  0 part
β”œβ”€mmcblk2p6  179:6    0    32M  0 part
β”œβ”€mmcblk2p7  179:7    0    32M  0 part
└─mmcblk2p8  179:8    0   7.1G  0 part /
mmcblk2boot0 179:32   0     4M  1 disk
mmcblk2boot1 179:64   0     4M  1 disk
nvme0n1      259:0    0 232.9G  0 disk
root@DietPiR5S:~#

eMMC is mmcblk2 :slight_smile:

1 Like

Ah thanks, why ever mmcblk1 is left unused then. You have a bootable system on your eMMC, which would then have priority. I guess in case of OP this is not the case. Otherwise the eMMC would need to be formatted first, or just the partition(s) removed.

Bingo! Worked like a charm! See details below.

BTW, an offtopic: since kernel was upgraded to 6.6, even when idling my R5S is getting somewhat warm (both with DietPi and Armbian). Previously in this same situation it remained quite cool at room temperature. Interesting enough my OrangePi 5 with the same kernel remains pretty cool when idle… If anyone is experiencing the same behavior, let me know and I will start a new topic to discuss this.

─────────────────────────────────────────────────────
 DietPi v9.8.0 : 17:04 - Fri 10/18/24
 ─────────────────────────────────────────────────────
 - Device model : NanoPi R5S/R5C (aarch64)
 - CPU temp : 41 Β°C / 105 Β°F : Optimal temperature
 - LAN IP : 192.168.1.183 (eth0)
 - MOTD : DietPi v9.8 is here. Check out all changes:
          https://dietpi.com/docs/releases/v9_8/
 ─────────────────────────────────────────────────────

 DietPi Team     : https://github.com/MichaIng/DietPi#the-dietpi-project-team
 Patreon Legends : Chris Gelatt, ADSB.im
 Website         : https://dietpi.com/ | https://twitter.com/DietPi_
 Contribute      : https://dietpi.com/contribute.html
 Web Hosting by  : https://myvirtualserver.com

 dietpi-launcher : All the DietPi programs in one place
 dietpi-config   : Feature rich configuration tool for your device
 dietpi-software : Select optimised software for installation
 htop            : Resource monitor
 cpu             : Shows CPU information and stats

root@r5s:~# 
root@r5s:~# 
root@r5s:~# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk1      179:0    0  14.6G  0 disk 
mmcblk1boot0 179:32   0     4M  1 disk 
mmcblk1boot1 179:64   0     4M  1 disk 
nvme0n1      259:0    0 232.9G  0 disk 
`-nvme0n1p1  259:1    0 232.9G  0 part /
root@r5s:~# 

1 Like

@MichaIng I continued to play with the R5S and it seems device name of eMMC depends on image used.

If you are using one of our old multi partition images or an official FriendlyElec Debian image, device name is mmcblk2. see NanoPi R5S - FriendlyELEC WiKi

The SD/TF Card device node: /dev/mmcblk0
The eMMC device node: /dev/mmcblk2

However, using our single partition image, device name is changed into mmcblk1 :rofl:

1 Like