前言

最近想把我的8G树莓派5拿出来做Minecraft服务器,但由于之前被便宜内存卡掉数据坑过一次,这次想起树莓派上面有一个PCIe x1接口,同时树莓派也支持加装并使用NVMe固态作为系统盘,拿出了换下来的PM981,开始折腾~

本文参考国外大佬 Jeef Geerling 的这篇文章不知道算不算翻译了(

准备

启用PCIe

首先要做的,当然是将扩展板和固态安装好,并且准备一张刷写好系统的内存卡啦~

然后,打开树莓派,进入系统,打开终端(或者SSH进来),编辑/boot/firmware/config.txt文件,添加以下内容:

# 如果使用的是 HAT+ 标准的扩展板,会自动启用 pciex1,无需手动启用
dtparam=pciex1

# 默认是 Gen2 速率,也可以添加下面一行启用 Gen3 速率
# dtparam=pciex1_gen=3

开启PCIe以后,建议找一个支持PD协议的电源供电,以保证固态正常使用。

重启树莓派后,即可使用 lspci 命令检查系统能否识别到固态。如果正常,命令会返回如下内容:

0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0000:01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0001:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge

出现 Non-Volatile memory controller 字样即说明固态已被系统识别。

设置 NVMe 优先启动

运行 sudo rpi-eeprom-config --edit 命令,找到 BOOT_ORDER 项,默认值应为 0xf41 ,即先尝试U盘启动,再尝试内存卡启动。
将其改为 0xf416 (先尝试NVMe启动,再尝试U盘启动,最后尝试内存卡启动)后,保存文件即可。

这里也可以改成自己想要的顺序,最多可设置8项,顺序从后往前,可参考树莓派官方文档

向 NVMe 刷入系统

准备工作做好后,即可向NVMe固态中刷入系统。可以通过NVMe硬盘盒在电脑上使用 Raspberry Pi Imager 刷入(这个不用教了吧),也可以使用脚本迁移内存卡中的系统。

迁移系统

这里需要用到国外大佬 Jeff Geerling 维护的 rpiclone 工具(原版不支持NVMe),直接使用以下命令即可安装:

git clone https://github.com/geerlingguy/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

安装好 rpiclone 工具后,运行 sudo rpi-clone nvme0n1 即可将内存卡中系统迁移至固态。

迁移前可使用以下命令,删除固态内所有分区(删除前请一定一定要做好备份!):

sudo umount /dev/nvme0n1p?
sudo wipefs --all --force /dev/nvme0n1p?
sudo wipefs --all --force /dev/nvme0n1
sudo dd if=/dev/zero of=/dev/nvme0n1 bs=1024 count=1

迁移系统后,就可以拔掉内存卡,测试一下系统能否从固态硬盘启动啦~

咕咕咕~
最后更新于 2024-12-20