The ROC-RK3328-CC Firefly “Renegade” by Libre Computers is a $50 single board computer. You actually get USB 3.0 with the “Renegade” which is going to make it even more worth it to use a SSD with than the “Le Potato”.
This method requires a sacrificial SD card to serve as the bootloader. After booting though it will use your SSD for the system’s root filesystem. We will then benchmark it to measure the improvement/gains.
In this guide I’ll walk you through the process. Let’s get started!
The ROC-RK3328-CC Firefly “Renegade” from Libre Computers is a very powerful RockChip based single board computer. The “Renegade” features 2G of DDR4 RAM, USB 3.0, a quad-core ARM Cortex-A53 CPU, a Mali-450 GPU and 1 USB 3.0 port!
The StarTech USB 3.1 to 2.5″ SATA adapter is one I have recommended for many years for use with all kinds of devices including the Raspberry Pi, Orange Pi, ODROID, Libre “Renegade” and Tinker Board. It’s widely compatible and works with gaming consoles as well.
The Sabrent powered USB hub delivers a whopping 2.5A of dedicated power for your USB attached devices. It will easily power the most thirsty of setups such as NVMe enclosures.
Note: Make sure Amazon doesn’t try to take you to the non-powered version and that it’s the one with the AC adapter that plugs in to provide extra power
Preparing SD Card
First you should have a completely working installation on a SD card of the OS that you would like to use. I used Armbian for this guide (recommended) so if your partitions are different it may be your flavor of Linux and need slightly altered instructions.
If you have an already working installation you want to move to your SSD you can use this as well most likely.
You should completely update first with:
sudo apt update && sudo apt full-upgrade
If you are using a different package manager then update the image however you need to for your distribution.
Now we are going to connect your SSD to the “Renegade”. First we are going to completely remove all partitions from the drive so it’s completely blank. If you only have one drive plugged into the “Renegade” (and nothing else) this should be /dev/sda.
sudo fdisk /dev/sda
Now remove all partitions from the device. If you press “p” it will print out the partitions. Here’s an example on mine:
root@renegade:~# sudo fdisk /dev/sda Welcome to fdisk (util-linux 2.37.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors Disk model: CT250MX200SSD1 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x39524a4b Device Boot Start End Sectors Size Id Type /dev/sda1 8192 123469824 123461633 58.9G 83 Linux Command (m for help): d Selected partition 1 Partition 1 has been deleted. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
If you get an error that the device was busy don’t worry. After unplugging and replugging the SSD the partition table will be clear.
Once the drive is all cleared off you’re ready for the next step.
Cloning Installation to SSD
We’re now ready to clone your installation to the SSD. If you don’t have the eMMC attached your current root filesystem should be /dev/mmcblk0p1 (or /dev/mmcblk1p1 on some operating systems, check ls /dev or blkid).
We can now copy your drive to the SSD with the following command:
cat /dev/mmcblk0 > /dev/sda
Wait for the operation to complete (there won’t be any output but you will have a cursor again and be able to type new commands). It may take several minutes or longer. You are copying an entire drive from one to another basically with that one command.
Mine took about 30-40 minutes (although I was using a 64GB SD card and the larger SD card you use the longer it will take to copy the whole drive).
If you are having any trouble with permissions try becoming “root” first with:
Now try running the command again and as the superuser you should not encounter any permission errors.
Change SD card’s UUID
Now unplug the SSD and plug it back in. We need to change our SD card’s UUID so that it doesn’t try to boot from that partition. We can set it to a random one with the following command:
sudo tune2fs -U random /dev/mmcblk0p1
We can verify that it has changed with blkid like this:
root@renegade:~# sudo blkid /dev/mmcblk0p1: LABEL="armbian_root" UUID="c2a8cffc-9d4a-4629-b408-6f56332e03f6" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="910ca03c-01" /dev/sda1: LABEL="armbian_root" UUID="72f42008-24a6-466f-bc3b-1690902fd466" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="910ca03c-01" /dev/zram0: UUID="12a7b136-4351-4fff-bc39-956516fb2ae1" TYPE="swap" /dev/zram1: LABEL="log2ram" UUID="d5ec015b-2be5-4877-8d01-128563a2eb1e" BLOCK_SIZE="4096" TYPE="ext4"
Notice that /dev/sda1 and /dev/mmcblk0p1 no longer have matching UUIDs. This is exactly what we want.
Before we reboot run e2fsck on the drive like this:
sudo e2fsck -yf /dev/sda1
This will prevent you from having to run fsck on the CLI the first time you try to boot.
Reboot and Verify
Now reboot the “Renegade” with:
With any luck you should be booted using your SSD! We can verify this with the mount command like this:
root@renegade:~# mount /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro,commit=600) /dev/sda1 on /var/log.hdd type ext4 (rw,noatime,errors=remount-ro,commit=600) /dev/zram1 on /var/log type ext4 (rw,relatime,discard)
Here we can see that our root partition (/) is indeed on /dev/sda1 and not /dev/mmcblk0p1. Success!
You can verify the performance of your SSD on Pi Benchmarks using the following command:
sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
SD Card Test
To show the improvement between having a SD card rootfs and having a SSD rootfs I did a before test here with the SD card:
Category Test Result HDParm Disk Read 64.24 MB/s HDParm Cached Disk Read 57.55 MB/s DD Disk Write 22.3 MB/s FIO 4k random read 3574 IOPS (14299 KB/s) FIO 4k random write 261 IOPS (1047 KB/s) IOZone 4k read 12437 KB/s IOZone 4k write 2926 KB/s IOZone 4k random read 12402 KB/s IOZone 4k random write 3148 KB/s Score: 1,361
Category Test Result HDParm Disk Read 305.13 MB/s HDParm Cached Disk Read 239.02 MB/s DD Disk Write 115 MB/s FIO 4k random read 23432 IOPS (93729 KB/s) FIO 4k random write 12190 IOPS (48761 KB/s) IOZone 4k read 20588 KB/s IOZone 4k write 25046 KB/s IOZone 4k random read 16739 KB/s IOZone 4k random write 31967 KB/s Score: 7,656
Wow, that’s quite a dramatic improvement. We went from 1,361 to 7,656. That’s nearly a 5x increase! You can also look at the raw IOPS and MB/s numbers on HDParm and the various test categories if you are more familiar with those to see the improvement.
Even though we are limited to USB 2.0 bus speeds we can still achieve about 3.5x the performance of the SD card using a SSD with a USB to 2.5″ SATA adapter. This is definitely worthwhile as it was on boards like the Raspberry Pi 3 that had USB 2.0 as well.
I haven’t tested the eMMC modules for the “Renegade” yet because they are currently out of stock on Amazon. I do plan on testing these when they become available.
Using a SSD is the best upgrade you can give your single board computer. With the USB 3.0 ports available on this board it’s extra worth it!
If you are moving from a Raspberry Pi to a “Renegade” see my Raspbian Portability Tool for Libre Boards Guide
Definitely don’t miss my full “Renegade” ROC-RK3328-CC Firefly SBC review here
You may also be interested to see my Libre Computers “Le Potato” Review
Make sure to check out my ODROID XU4Q review which includes eMMC tests and benchmarking