R2S 从刷机到 OpenClash:固件、TF 卡、电源、扩容,我把坑踩了一遍

老胡折腾 R2S、TF 卡和 5V/2A 电源的特色插画

封面是主题插画,非设备实拍。

本来以为给 R2S 刷个 OpenWrt,再装上 OpenClash,就能收工。结果固件、TF 卡、电源、分区、插件,我基本一关没落。别人是一路安装,我是一路补课。

现在这台 R2S 已经用了一段时间,运行比较稳定,之前断电后启动失败的问题也没有再出现。趁还记得,把踩过的坑和该怎么检查记下来,免得下次又从头交学费。

固件、TF 卡、电源,先别急着怪插件

我先踩了三个基础坑:固件/系统版本选错、TF 卡选择,还有供电。这几个坑我都踩过,排查时却得一个个看。

下载固件先认准 FriendlyARM NanoPi R2S,target 是 rockchip/armv8。R2S、R2C、R2C Plus 名字接近,镜像不能混用。普通使用选官方稳定 release,snapshot 留给愿意跟着开发版本排查问题的人。

TF 卡也别只看容量。R2S 要靠它长期跑系统,下载文件校验、写卡验证都要做;启动异常时,卡和读卡器也得查。至于哪个品牌一定好、哪个容量一定不行,我这点经历还下不了这种结论。

我后来翻了手头的电源,发现大部分是 5V/1A。以前的选法很简单:插头能插上,就算合适。现在看,多少有点草率。

R2S 官方资料标的是 5V/2A,USB-C。选能稳定输出 5V、额定电流满足 2A 的电源,线材也别凑合。设备按需取电,不是电流数字越大就越快,更不能把电压换成 9V 或 12V。

镜像我建议选稳定版 squashfs

如果是拿 R2S 正常跑路由、装插件,优先选稳定版 squashfs 镜像。它把基础系统留在只读文件系统里,安装的软件和修改放在可写的 overlay,恢复默认状态比较方便。爱折腾归爱折腾,总得给自己留条退路。

ext4 官方也提供,根文件系统直接可写,离线修改更直观,但没有 squashfs 那套只读底层加 overlay 的恢复方式。它不是不能用,只是不必为了扩容方便就默认选它。官方 SD card 文档列出了两者区别。

写稿时(2026-10-01),官方固件选择器和下载目录已提供 25.12.5,设备 Wiki 的版本栏还停在 25.12.1。这里用当前下载版本举例,以后下载仍回官方页面确认。

OpenWrt 官方固件选择器,选中 FriendlyARM NanoPi R2S、rockchip/armv8 和 25.12.5
官方固件选择器,2026-10-01 截图。查看来源,点图可放大。

选中的文件应该同时对上版本、平台、设备名和 squashfs:

下载 R2S 25.12.5 squashfs 镜像
openwrt-25.12.5-rockchip-armv8-friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz

R2S 首次写 TF 卡也用这种 sysupgrade.img.gz,不是看见 sysupgrade 就认为只能拿来升级。首次写卡是写整张磁盘镜像,LuCI 里的后续升级是另一回事。

下载后,在 Windows PowerShell 核对 SHA256:

Get-FileHash .\openwrt-25.12.5-rockchip-armv8-friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz -Algorithm SHA256

结果和官方目录中这个压缩包的值比较。别拿解压后的 .img 去比 .img.gz 的值,它俩不是同一个文件。

Windows 写卡,先认盘再动手

用支持磁盘镜像写入的工具,选镜像、选 TF 卡、写入并验证。工具支持 .img.gz 就直接选;只接受 .img 就先解压。写镜像不是把文件复制到卡里,会覆盖目标磁盘,先按容量和读卡器信息确认是哪张卡。别让 Windows 系统盘陪着一起折腾。

写完安全弹出。Windows 提示不认识分区、要格式化时,别点确认——它不认识 Linux 文件系统,不代表这张卡需要重新格式化。新手可参考官方图形化写卡方法。

首次启动,电脑用网线接 LAN。官方默认 LAN 地址是 192.168.1.1,WAN 从上级网络获取 DHCP 地址;已经改过的机器以自己的设置为准,也要留意原网络是否用了同一网段。

遇到问题,先分清是哪一层:管理页和 SSH 都进不去,查启动、供电、镜像和卡;系统能进,外部资源下不来,查 WAN、DNS、时间和下载连接;只有 OpenClash 起不来,就查插件。别一个菜单没出现,又把整张卡重刷一遍。

TF 卡挺大,系统能用的空间却挺小

卡有剩余空间,不代表 OpenWrt 已经全用上。我当时在 Windows 里用分区工具调整,第一次调错,系统直接起不来,只好重来。空间没扩好,倒是把工作量扩了一倍。

扩容时先备份,认准目标卡和承载根文件系统/可写数据的分区,用能正确识别 Linux 分区的工具,向后扩到相邻的未分配空间。保留分区起始位置和必要的启动信息,别动错启动分区,也别删除重建或格式化。操作前后都看一眼分区布局,不能只盯着容量数字。

TF 卡扩容概念示意:保留启动区和根分区起点,向后利用相邻未分配空间,再确认文件系统可用容量
扩容概念图,非实际磁盘截图,未按容量比例绘制。点图可放大。

这里尤其要分清 squashfs 的首次启动前和启动后:

  • 还没启动过:按官方 SD card 文档扩展对应分区,首次启动时才会创建利用剩余空间的 overlay。
  • 已经启动过:小容量的 overlay 已经建好,只拉大分区还不够,还得扩它的文件系统。可写层可能是 F2FS,不能照抄 ext4 的 resize2fs 命令。

如果选的是 ext4,也要确认工具是否同时扩了文件系统。分区变大和系统可用空间增加,是两件事。Windows 工具显示一大块,不等于插件就能装进去。

回到 OpenWrt,SSH 登录后可以用下面几条只读命令检查:

cat /etc/openwrt_release
cat /proc/partitions
mount
df -h

/proc/partitions 看分区大小,mount 看挂载和文件系统,df -h 看可用空间。squashfs 重点看可写 overlay;只读 /rom 和通常放在内存里的 /tmp,都不能拿来当插件安装容量。ext4 则看实际承载 / 的文件系统。

我当时使用的 Windows 工具和具体调错项目,旧记录还没找全,暂时只能讲到这里。现在这台已经稳定,我也不会为了补图再给它安排一次事故。

PowerShell 就能 SSH,密码没显示别慌

Windows 已装好 OpenSSH Client 时,打开 PowerShell 就能连。把“路由器IP”换成 R2S 的实际管理地址:

ssh root@路由器IP

第一次连接会询问是否信任主机密钥,先核对地址和主机指纹再确认。以后突然提示密钥变了,也先想想是否重刷过、是否连错机器,别见提示就删记录。

输密码时通常不显示字符,也没有星号,键盘没坏。登录以后,命令是在 R2S 上执行;退出 SSH 才回到 Windows PowerShell。

Windows Terminal 常见默认操作是:有选区时右键复制,没有选区时右键粘贴。改过“选择时自动复制”或快捷键,行为也会变,微软文档有说明。粘贴多行命令前先看清,别把说明文字也一并执行了。

OpenClash,别从三篇旧教程凑一套命令

我遇到过空间不足、依赖/安装错误,还有装上了却运行不起来。下载 GitHub 和相关资源,在我的网络环境里也会卡住。电脑能打开 GitHub,不等于 R2S 自己能下载,SSH 进去以后用的是它的网络。

先看本机的时间、可用空间、包管理器和防火墙:

date
df -h
command -v apk
command -v opkg
command -v fw4
command -v fw3

OpenWrt 25.12 系列使用 apk,24.10 等旧版本使用 opkg。软件列表更新只选符合本机的那一条:

# apk 系统
apk update

# opkg 系统
opkg update

若已经有 curl,再试试本机获取 GitHub Release 信息:

curl -fL --connect-timeout 10 --max-time 30 \
  https://api.github.com/repos/vernesong/OpenClash/releases/latest

DNS、证书、超时、限流报错,先处理下载这一层;缺 curl 则先解决软件源和工具。API 能访问以后,插件包和内核的实际地址也要能下载。直连正常就直接用,不必为了照教程额外配代理,更别靠关闭证书校验蒙混过去。

写稿时官方 Release 是 v0.47.156,提供 ipk/apk × iptables/nftables 四组命令。认准本机包管理器和防火墙,选对应的一组;25.12 官方新装系统通常是 apk + fw4/nftables。这里的包格式,和固件的 squashfs/ext4 没关系。

OpenClash v0.47.156 官方 Release 页面,包含按包格式和防火墙区分的安装命令
OpenClash 官方 Release,2026-10-01 截图。安装命令请看原页面,不要照着缩略图抄。

按官方当前命令的顺序,更新软件列表、装依赖、下载并安装插件。每一步看完结果再往下走,别一次全粘进去,最后只知道“反正没装好”。

依赖包括 dnsmasq-full。碰到包冲突,先看具体日志、现有包和替换影响,不要遇事就加强制覆盖。官方依赖说明和对应包管理器的说明,比旧教程里的一串万能参数可靠。下载包也要确认是真正的 ipk/apk,不是错误页面。

装完后重新登录 LuCI,打开“服务 → OpenClash”。菜单出来了,只能算插件装上,还不代表内核已经运行。

启动前,到版本更新页选与机器架构匹配的内核编译版本,准备好 Mihomo/Clash Meta 内核。R2S 是 ARM,别拿 x86 的内核来用。官方 Release也提供手动放到 /etc/openclash/core/、命名为 clash_meta 的方法。

接着在“配置管理”导入可用且兼容 Mihomo 的配置,选为当前配置,再启动、看状态和日志。配置引用的代理集、规则集也要下载成功。软件源更新 → 依赖 → 插件 → LuCI 菜单 → 内核 → 配置与启动 → 实际流量,是哪一步没过,就停在那一步查。

空间不足看可写文件系统;下载失败看本机网络和地址;安装失败看包和依赖;启动失败看内核、配置和日志。报错先留完整,才知道下一步该查什么。

能稳定用起来,就先收工

以前写过小米 R3P 刷 OpenWrt 和恢复官方固件,换到 R2S,以为自己多少算有点经验。折腾完发现,经验主要用来提醒我:别再跳过这些基础检查。

现在 R2S 已经稳定用了一段时间,之前的问题没再出现。这就够了,好不容易能用了,先别手痒。

下一篇再讲 OpenClash 怎么设置、哪些选项没必要全开,以及从我的 v10 配置里整理出来的通用配置。DNS、Fake-IP、TUN、嗅探这些留到下一篇,这篇先收工。

接着看看这些记录

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注