前言
之前网上买了个rk3588板子,到手发现是拆机板,结果为了折腾把系统搞坏了,资料又没有,只知道原版使用的ophub维护的6.1.141内核,并且有保存这个板子之前运行的dtb
关于他的资料,在官网只能找到数据手册

下载rk官方的刷机软件和对应的驱动

安装驱动
不做赘述
下载完整的镜像文件
ophub制作的基于debian12的armbian镜像,内核为6.1.141
下载uboot相关
当前其实只用spl_loader就好了
https://github.com/ophub/u-boot/blob/main/u-boot/rockchip/rock5b/rk3588_spl_loader_v1.08.111.bin

解压
将解压后的镜像文件和spl_loader放到某个文件夹内
烧录
打开rkdevtool,板子的otg口接到电脑,然后按住recover按键,再给板子通电,然后会显示发现maskrom设备,将Loader行设为刚刚的spl_loader路径,第二行设置为下载的解压后的镜像路径,然后勾选强制执行,点击执行

启动
下载完后,板子重新上电,连接调试串口,发现内核启动失败,猜测是因为设备树原因
替换设备树
将镜像文件拷贝到ubuntu虚拟机
bash
sudo apt install libguestfs-tools
mkdir change_dtb
cd change_dtb/
cp /mnt/hgfs/win_linux_share/Armbian_rock5b/Armbian_26.08.0_rockchip_rock5b_bookworm_6.1.141_server_2026.07.01.img ./
cp /mnt/hgfs/win_linux_share/Armbian_rock5b/rk3588-ad-c58.dtb ./
# 挂载镜像,拿到armbianEnv.txt
sudo guestfish -a ./Armbian_26.08.0_rockchip_rock5b_bookworm_6.1.141_server_2026.07.01.img <<EOF
run
mount /dev/sda1 /
download /armbianEnv.txt ./armbianEnv.tmp
EOF
# 修改armbianEnv.txt
sed -i 's/^fdtfile=.*/fdtfile=rockchip\/rk3588-ad-c58.dtb/' ./armbianEnv.tmp
# 更新到镜像
sudo guestfish -a ./Armbian_26.08.0_rockchip_rock5b_bookworm_6.1.141_server_2026.07.01.img <<EOF
run
mount /dev/sda1 /
copy-in ./rk3588-ad-c58.dtb /dtb/rockchip/
upload ./armbianEnv.tmp /armbianEnv.txt
EOF
再次启动
将修改后的镜像拷贝到windows,再次maskrom模式烧录,成功进入系统,但是帐号密码怎么输入都不对
原因 :ophub‑armbian第一次开机必须走完初始化向导(设置密码、新建普通用户),你直接 maskrom 烧写 eMMC,第一次初始化脚本被触发但没交互完成,账号密码状态错乱。
AI方案1
操作:U‑Boot 串口进入单用户模式重置 root 密码(直接复制粘贴)
- 板子重启,串口盯着输出,快速按空格 / 回车打断自动启动,进入 U‑Boot> 提示符。
- 在 U‑Boot 输入下面这一整行,不要换行:
plaintext
setenv bootargs "${bootargs} init=/bin/sh"
- 启动内核:
plaintext
run distro_bootcmd板子会启动,直接落到 # root shell(不需要密码)
- 现在根文件系统是只读,重新挂载为可读写:
bash
mount -o remount,rw /
- 设置 root 新密码,比如
123456:bash
passwd root输入两遍新密码。
- 删除首次登录标记,避免下次开机又乱触发初始化:
bash
rm -f /root/.not_logged_in_yet rm -f /etc/firstrun sync
- 重启:
bash
exec /sbin/init板子正常启动,现在用
root,密码填你刚刚设置的(123456)就可以登录。
AI方案2
问题根源
Ophub‑RK3588 的
distro_bootcmd会从armbianEnv.txt重新加载、覆盖你 U‑Boot 手动设置的bootargs,所以你setenv bootargs init=/bin/sh写完,一跑distro_bootcmd直接被冲掉,依旧走到登录界面Armbian。不能靠 U‑Boot 命令行临时加参数。有两条现实路径:
方案 1:修改镜像,把
init=/bin/bash写进镜像内armbianEnv.txt的 extraargs(推荐)回到你的虚拟机本地修改 img:
- download 镜像里
armbianEnv.txt到本地bash
guestfish -a ./你的修改好.img <<EOF run mount /dev/sda1 / download /armbianEnv.txt ./env.tmp EOF
- 在虚拟机本地,给
extraargs追加init=/bin/bashbash
# 如果原来extraargs=rw rootwait sed -i 's/^extraargs=.*/extraargs=rw rootwait init=\/bin\/bash/' env.tmp
- 写回镜像
bash
guestfish -a ./你的修改好.img <<EOF run mount /dev/sda1 / upload ./env.tmp /armbianEnv.txt EOF。
开机直接落到
#root shell,不需要密码。执行:
bash
mount -o remount,rw / passwd root rm -f /root/.not_logged_in_yet sync # 非常关键:删掉init参数,不然下次开机还进shell! sed -i 's/ init=\/bin\/bash//' /boot/armbianEnv.txt exec /sbin/init
AI方案3
U‑Boot 里面先看有哪些 mmc 控制器
plaintext
mmc list输出类似:
plaintext
mmc@fe2c0000: 1 (SD卡) mmc@fe2e0000: 0 (eMMC板载)eMMC 是 dev 0,不是 dev1。
手动拉起内核完整命令(复制粘贴,不要 run distro_bootcmd)
plaintext
mmc dev 0 fatload mmc 0:1 0x08080000 Image fatload mmc 0:1 0x0a000000 dtb/rk3588-ad-c58.dtb setenv bootargs "root=UUID=1f1630d2-2c28-4de4-9c13-236e7b80a2ca rootfstype=ext4 rootwait console=ttyFIQ0,1500000n8 init=/bin/bash" booti 0x08080000 - 0x0a000000
mmc 0:1:mmc0 (eMMC) 的第 1 分区就是 boot (FAT) 分区。执行
booti之后,直接进入#root shell,不需要密码。shell 里面全套操作
bash
mount -o remount,rw / passwd root rm -f /root/.not_logged_in_yet rm -f /etc/firstrun sync exec /sbin/init之后系统正常启动,root 用你刚设置的密码登录。
全部困境汇总
- 板子无 SD 卡插槽,只有 eMMC。
- maskrom 烧完整 raw‑img,可以走到 ttyFIQ0 登录,但密码失效(首次初始化没跑完)。
- U‑Boot:
run distro_bootcmd会加载 boot.scr,内部读取armbianEnv.txt,直接覆盖 U‑Boot 命令行 setenv 的 bootargs ,所以 U‑Boot 临时设置init=/bin/bash完全无效。 - U‑Boot 手动
fatload mmc 0:1 ...→Unrecognized filesystem type(GPT 分区表导致 U‑Boot FAT 驱动解析失败,手动读文件不可用)。 - ❌不能在
armbianEnv.txt的extraargs写init=/bin/bash→ bookworm 内核直接 panic,起不来。 - boot 分区没有 extlinux.conf;boot.scr 是二进制,不能直接改。
现在:不能从引导层注入 init=/bin/bash。只能去修改 rootfs 根文件系统里面的 shadow 密码文件。
最终有效方案
bash
# 挂载镜像,从rootfs分区获取shadow文件
sudo guestfish -a Armbian_26.08.0_rockchip_rock5b_bookworm_6.1.141_server_2026.07.01.img <<EOF
run
mount /dev/sda2 /
download /etc/shadow ./shadow.tmp
EOF
# 修改
chmod 777 ./shadow.tmp
vim shadow.tmp // 删除加密字段
chmod 644 ./shadow.tmp
# 写入镜像
sudo guestfish -a Armbian_26.08.0_rockchip_rock5b_bookworm_6.1.141_server_2026.07.01.img <<EOF
run
mount /dev/sda2 /
upload ./shadow.tmp /etc/shadow
EOF
删掉这部分,就表示不要密码

将改后的镜像传到windows,重新使用maskrom模式烧录,重新启动,成功进入系统,无需密码
