2005 CM4 NAS(三路固态硬盘扩展板)
关键词
树莓派、CM4核心板、系统烧写、2.5G、SSD、RPiOS、Ubuntu、OpenMediaVault
一、简介
CM4_NAS扩展板基于CM4核心板设计,通过PCIe接口扩展了三路M.2 NVMe固态硬盘,其中一路支持2210尺寸,一路支持2242和2280尺寸,还有一路支持2242和2280以及2210尺寸。同时我们还通过PCIe扩展了一路2.5G以太网,以提高M.2 NVMe固态盘的读写速度(实际无法跑满2.5G,硬盘读写典型速度150MB/s,但仍远高于千兆以太网的110MB/s)。其它为CM4标准资源,包括CSI0、CSI1、DSI1、原生千兆、标准HDMI、启动用TF卡槽、40Pin扩展接口、3.3V和5V风扇插头,以及3路USB2.0-A和1路1.25mm 4pin接口USB用于内部4G设备连接。可通过USB-C接口用于eMMC烧写。扩展板采用DC5.5接口,支持7-24V电压输入。
扩展板可运行树莓派OS、Ubuntu、以及OpenWrt系统。这三个系统下均可正常使用2.5G网络和NVMe固态盘。另外支持基于树莓派OS Lite的OpenMediaVault用做NAS网络硬盘应用。
二、硬件资源
1. 一路原生千兆网口;
2. 一路由PCIE支持的2.5G以太网接口;
3. 一路支持4K分辨率的标准HDMI口;
4. 三路USB2.0主机口;
5. 一路内置USB2.0;
6. 一路USB-C烧写口;
7. 两路CSI(22PIN,0.5mm,翻盖下接);
8. 一路DSI(22PIN,0.5mm,翻盖下接);
9. 三路PCIe M-KEY接口,支持2210尺寸规格的固态硬盘;
10. TF卡座。
40pin引脚定义从左到右依次为:
5V | 5V | GND | G14 | G15 | G18 | GND | G23 | G24 | GND | G25 | G08 | G07 | IDSC | GND | G12 | GND | G16 | G20 | G21 |
3V3 | G02 | G03 | G04 | GND | G17 | G27 | G22 | 3V3 | G10 | G09 | G11 | GND | IDSD | G05 | G06 | G13 | G19 | G26 | GND |
三、系统烧写及设置
3.1 概述
本文档采用树莓派OS和Ubuntu系统进行测试。
1. 树莓派OS的版本为2024-07-04-raspios-bookworm-arm64.img.xz,树莓派OS下载地址:
https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit
2. 另外OpenMediaVault需要在32位的树莓派OS Lite下安装,32位的树莓派OS Lite下载地址:
https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-legacy
3. Ubuntu系统的版本为ubuntu-24.04-preinstalled-desktop-arm64+raspi.img.xz,下载地址:
https://ubuntu.com/download/raspberry-pi
3.2 从TF卡启动
3.2.1 使用树莓派镜像烧录器烧写
首先在Windows端安装树莓派镜像烧录器,下载地址:https://www.raspberrypi.com/software/
安装完毕后将TF卡插入读卡器,读卡器插入PC的USB口,然后打开软件:
Raspberry Pi Device:选择Raspberry Pi 4;
请选择需要写入的操作系统:选择Raspberry Pi OS(64-bit),为从树莓派官网下载系统镜像烧写(需联网);选择Use Custom,则需要自行选择硬盘上已经下载的系统镜像(无需联网);
储存卡:选择所需烧入的TF卡(即插在PC的USB接口的卡);
选择完毕后按“NEXT”,建议点击“编辑设置”,将一些参数预设置进烧写软件,之后在系统启动时就不必再次设置,便于使用。
需要使用预设置的按“是”,不需要使用预设置的按“不”,进入下一页,点击“是”,就开始烧写及验证完整性,烧写完毕后按提示取下卡即可。
以上介绍的是烧写树莓派OS,烧写Ubuntu系统或也是用类似的操作,只是在“请选择需要写入的操作系统”时,需要选择Use Custom,然后选择预先下载的镜像即可。
3.2.2 使用balenaEtcher烧写
首先在Windows端安装balenaEtcher,下载地址:https://etcher.balena.io/#download-etcher
将TF卡插入读卡器,读卡器插入PC的USB口,然后打开软件:
从文件烧录:选择预先下载的树莓派OS或者Ubuntu系统镜像;
选择目标磁盘:选择所需烧入的TF卡(即插在PC的USB接口的卡);
然后点击“现在烧录!”,就开始烧录了,等待烧录完毕即可。
3.2.3 启动系统
将TF卡从读卡器中取下,塞进树莓派开发版的TF卡卡槽,上电后即可进入系统。
3.3. 从eMMC启动
如果核心板具有板载eMMC,则系统将会忽略TF卡,而从eMMC启动。
要烧写系统到eMMC,首先需要在PC上安装驱动包,下载地址:
http://www.mcuzone.com/down/Software.asp?ID=10000623
然后使用跳线帽短接扩展板BOOT脚和GND脚(在CSI1接口旁边)。
使用USB Type C-A数据线将扩展板上的USB OTG接口(即扩展板的USB-C口)连接至电脑。
连接上电脑之后,打开计算机的设备管理器,查看是否有新的USB设备出现。在下图中的是名称为“BCM2711 Boot”的USB设备:
PC的开始菜单的所有程序下,Raspberry Pi下面有个rpiboot:
打开这个软件,计算机会将eMMC或者TF卡格式化并分区:
稍等片刻,在资源管理器中会出现一个分区(本例中的分区名为bootfs,具体名称视实际情况而不同):
接下来我们就可以使用balenaEtcher软件对这个分区进行烧写了。
打开balenaEtcher软件,第一项点击“从文件烧录”,选择你要烧录到eMMC的文件,第二项选择上面的那个bootfs分区,然后点击“现在烧录”,就开始烧录文件了:
等烧写完成后,将之前插上的跳线帽拔下来,然后重新给系统上电,待系统启动即可。
四、树莓派OS下的硬件测试
4.1 原生千兆网口测试
我们将网线插入原生千兆网口,系统会自动获取IP,打开终端,安装测速软件iperf3:
sudo apt-get install iperf3
然后我们使用iperf3进行测试:
原生千兆以太网测速结果,client模式为942Mbps左右:
server模式为946Mbps左右:
4.2 2.5G网口测试
我们将网线插入2.5G网口,系统会自动获取IP,然后我们使用iperf3进行测试:
2.5G以太网测速结果,client模式为1.84Gbps左右:
server模式为1.85Gbps左右:
4.3 固定2.5G网口的MAC地址
2.5G网口为RTL8125网卡,在使用过程中的MAC地址是不固定的,每次重新上电后MAC地址都会随机改变。下面讲解如何为RTL8125网卡设置固定MAC地址。
本讲解也适用于Ubuntu系统。
首先在树莓派终端中查看RTL8125网卡的识别信息:
ipconfig -a
这里两块RTL8125网卡分别为eth1和eth2,实际操作中可能会因为系统识别名称不同而不同。
然后输入:
sudo mousepad /etc/systemd/system/macspoof@eth1.service
或:
sudo nano /etc/systemd/system/macspoof@eth1.service
eth1为上面显示的网卡识别名称。
运行上面的命令后会新建一个文档,输入以下文本:
[Unit]
Description=MAC Address Change %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i address xx:xx:xx:xx:xx:xx
ExecStart=/usr/bin/ip link set dev %i up
[Install]
WantedBy=multi-user.target
其中“xx:xx:xx:xx:xx:xx”为想要指定的MAC地址,可以按MAC地址格式自行确定(不要和其它网络设备重复),设置完成后保存并退出。
随后输入下面的命令使能服务:
sudo systemctl enable macspoof@eth1.service
这样就完成了对eth1的固定MAC地址。
对如eth2这样的其它网卡,也是按照上述步骤进行操作。
全部操作完毕后重启系统,系统重启完毕后,执行ipconfig -a
即可看到MAC地址更改成功:
4.4 单块硬盘测试
本次测试采用三块不同的硬盘进行测试,编号及参数如下:
一号硬盘:KingSpec NE-128 128.0 GB
二号硬盘:WDC PC SN530 SDBPNPZ-256G-1002 256.0 GB
三号硬盘:INTEL MEMPEI1J016GAL 16 GB
4.4.1 硬盘识别测试
经测试,单块硬盘无论插哪个硬盘插槽都能识别,树莓派系统下需要先做授权才能进一步操作:
4.4.2 硬盘接口速度测试
安装硬盘测速软件hdparm。在树莓派终端下运行:
sudo apt install hdparm
在树莓派终端下运行df
,查看SSD分区名为nvme0n1:
运行命令,可多次运行,测试多次硬盘速度:
sudo hdparm -t /dev/nvme0n1
第一个插槽:
第二个插槽:
第三个插槽:
测试结果:该硬盘在三个插槽中的接口速度均为360MB/s左右。
4.4.3 安装SAMBA文件共享服务
安装SAMBA软件:
sudo apt install samba
在SSD路径下建立一个新文件夹用于共享文件,并修改文件夹权限:
cd /media/mcuzone/writable
sudo mkdir ssdfiles
sudo chmod +777 ssdfiles
修改SAMBA配置文件,添加共享节点:
sudo mousepad /etc/samba/smb.conf
在文件末尾加上共享节点:
[ssd]
# 共享文件夹说明
comment = /media/mcuzone/writable/ssdfiles/
# 共享文件夹目录
path = /home/pi/ssd/
# 可被其他人看到资源名称(非内容)
browseable = yes
# 可写
writable = yes
# 新建文件的权限为 777
create mask = 0777
# 新建目录的权限为 775
directory mask = 0777
# guest访问,无需密码
public = no
创建一个名为mcuzone的用户,创建后会提示输入密码:
sudo smbpasswd -a mcuzone
重启SAMBA服务:
sudo systemctl restart smbd
然后在Windows中映射一个网络驱动器,这里以Windows11为例。
打开“此电脑”,点击“映射网络驱动器”:
按下图填入相关节点信息(IP为树莓派OS的IP):
输入刚才设置的用户名和密码:
然后就会打开设置的共享文件夹了:
4.4.4 硬盘读写速度测试
通过2.5G网口进行测速,第一个插槽,第一个硬盘:
写:
读:
第一个插槽,第二个硬盘:写:
读:
第一个插槽,第三个硬盘:写:
读:
第二个插槽,第一个硬盘:
写:
读:
第二个插槽,第二个硬盘:
写:
读:
第二个插槽,第三个硬盘:
写:
41.jpg
读:
42.jpg
第三个插槽,第一个硬盘:
写:
读:
第三个插槽,第二个硬盘:
写:
读:
第三个插槽,第三个硬盘:
写:
读:
本次测试汇总如下:
读写单位:MB/s | 插槽1 | 插槽2 | 插槽3 | |||
写 | 读 | 写 | 读 | 写 | 读 | |
一号硬盘 | 164 | 207 | 151 | 201 | 161 | 208 |
二号硬盘 | 171 | 192 | 175 | 217 | 208 | 195 |
三号硬盘 | 159 | 190 | 163 | 218 | ||
通过2.5G网口 |
注:接下来的硬盘读写测速结果将以表格形式汇总,不再单独贴图。
通过原生千兆网口进行测速:
读写单位:MB/s | 插槽1 | 插槽2 | 插槽3 | |||
写 | 读 | 写 | 读 | 写 | 读 | |
二号硬盘 | 113 | 112 | 110 | 111 | 110 | 111 |
通过原生千兆网口 |
五、Ubuntu系统下使用演示
5.1 安装2.5G以太网驱动
CM4_NAS扩展板上的2.5G网口在Ubuntu系统下不能即插即用,需要安装RTL8125驱动。
使用网线连接CM4_NAS扩展板上的千兆网口。
Ubuntu系统默认不安装ifconfig工具,所以需要手动安装:
sudo apt install net-tools
输入ifconfig -a
,可见此时并没有显示2.5G网卡:
接下来我们开始安装RTL8125驱动。
首先需要更新系统:
sudo apt-get update
接着准备编译环境:
sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential dkms
然后安装驱动:
sudo apt-get install r8125-dkms
安装完成后输入:
sudo modprobe r8125
输入ifconfig -a
就可以看到一个enxxx的网卡接口,这样就安装完毕2.5G网卡驱动:
5.2 原生千兆网口测试
我们将网线插入原生千兆网口,系统会自动获取IP,然后我们使用iperf3进行测试:
原生千兆以太网测速结果,client模式为941Mbps左右:
server模式为929Mbps左右:
5.3 2.5G网口测试
我们将网线插入2.5G网口,系统会自动获取IP,然后我们使用iperf3进行测试:
2.5G以太网测速结果,client模式为2.29Gbps左右:
server模式为1.64Gbps左右:
5.4 单块硬盘测试
5.4.1 硬盘识别测试
经测试,单块硬盘无论插哪个硬盘插槽都能识别,Ubuntu系统下需要先进入一下SSD分区才能进一步操作: