前言:
瑞芯微 RK3588 很多项目都用到Ubuntu 22.04 系统,若是遇到进不了桌面、只能输密码进维护终端,反复登录报错,项目调试直接卡住。这种问题90% 是 userdata、oem 分区损坏 / 挂载失败导致的,系统启动时挂载校验不通过,就会强制进入安全保护模式。
今天这篇技术笔记,把我们踩过的坑复现、定位、根治方案一次性讲透,收藏备用,下次遇到直接照抄命令。
一、问题复现
1.1开发环境
主控:眺望电子 瑞芯微 RK3588 评估板
系统:Ubuntu 22.04
内核:Linux 6.1
触发原因:oem / userdata 分区文件系统损坏、分区丢失、/etc/fstab 配置错误
1.2故障现象
开机直接出现:
You areinemergency mode. After loggingin,type"journalctl -xb"to view
Login incorrect
Give root passwordformaintenance(orpress Control-D tocontinue):Login incorrect
系统拒绝进入正常桌面,只能停在维护终端。
1.3快速定位
进入紧急模式后,先输入 root 密码登录,执行:
journalctl-xb
搜索关键词:mount、fail、oem、userdata,直接定位失败的分区。
二、4种解决方案
2.1直接修复损坏分区
使用指令e2fsck、mkfs.ext4等工具进行修复或者重新格式化
用e2fsck自动修复 ext4 分区:
# 先卸载(如果提示占用可跳过)umount /dev/mmcblk0pX # X替换为你的oem/userdata分区号# 自动修复e2fsck -y /dev/mmcblk0pX# 修复完重新挂载mount /oemmount /userdata
修复完成后,执行reboot重启即可正常进系统。
若分区彻底损坏无法修复,可重新格式化:
mkfs.ext4 /dev/mmcblk0pX
2.2屏蔽 fstab,跳过错误分区
如果暂时不需要挂载oem/userdata,直接注释掉/etc/fstab:
vi /etc/fstab
注释掉这两行:
#PARTLABEL=oem /oem ext4 defaults 0 2#PARTLABEL=userdata /userdata ext4 defaults 0 2
保存重启,系统会跳过这两个分区,不再进紧急模式。
2.3合并分区,集合rootfs
适合不想维护多余分区的场景,修改parameter.txt:
CMDLINE: mtdparts=:0x00002000@0x00004000(uboot),0x00002000@0x00006000(mis c),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),-@0x00078000(rootfs:grow)
把 rootfs 设为grow自动扩容,删除 oem/userdata 分区,从根源避免挂载失败。
2.4改服务进程,挂载失败也能正常启动(硬核)
Ubuntu 是通过systemd判断挂载失败后触发紧急模式,我们直接关闭这个保护机制:
1.编辑服务文件:
vi /lib/systemd/system/local-fs.target
2.把OnFailure和OnFailureJobMode屏蔽掉释掉:
[Unit] Description=Local File Systems Documentation=man:systemd.special(7) DefaultDependencies=no Conflicts=shutdown.target After=local-fs-pre.target# OnFailure=emergency.target# OnFailureJobMode=replace-irreversibly
3.重载配置并重启,以后就算分区挂载失败,系统也正常启动,进系统后再手动修复即可。
三、思路分享
很多同学好奇:为什么是改local-fs.target?分享下定位思路:
1. 搜紧急模式依赖:
grepemergency.target -r /lib/systemd/systemgrepemergency.target -r /etc/systemd/system

2. 看服务依赖关系:
systemctllist-dependencies

能看到local-fs.target依赖oem.mount、userdata.mount,失败就触发emergency.target。
3. 手动模拟复现故障:
ddif=/dev/zero of=/dev/mmcblk0p8 bs=1count=1024seek=1024conv=notrunc
破坏分区后重启,即可复现紧急模式,用于验证修复方案。
四、总结
这套流程在眺望电子RK3588、RK3576、RK3568 等瑞芯微平台通用,无论是Ubuntu22.04还是20.04均能参考,遇到别慌,照着做就行。
希望这篇技术分享对你有帮助,关注我司公众号或者转发分享。如果有实现细节想了解或者其他开发板问题,欢迎评论区留言!
-
Ubuntu
+关注
关注
5文章
617浏览量
33664 -
瑞芯微
+关注
关注
27文章
853浏览量
54660 -
RK3588
+关注
关注
8文章
588浏览量
7554
发布评论请先 登录
瑞芯微RK3588开发板RK3588 EVB和RK3588S EVB解读
BSP调试#03:Ethernet(RK3588)
BSP调试#05:MIPI DSI(RK3588)
rk3588和rk3588s的区别
RK3588与3588s的区别
RK3588系列有多少型号?
RK3588 PCIe设备识别失败?一招避坑“非法Class”陷阱
RK3588 踩坑实录:Ubuntu分区挂载失败急救教程
评论