前言瑞芯微 RK3588 很多项目都用到Ubuntu 22.04 系统若是遇到进不了桌面、只能输密码进维护终端反复登录报错项目调试直接卡住。这种问题90% 是 userdata、oem 分区损坏 / 挂载失败导致的系统启动时挂载校验不通过就会强制进入安全保护模式。今天这篇技术笔记把我们踩过的坑复现、定位、根治方案一次性讲透收藏备用下次遇到直接照抄命令。一、问题复现1.1开发环境主控眺望电子 瑞芯微 RK3588 评估板系统Ubuntu 22.04内核Linux 6.1触发原因oem / userdata 分区文件系统损坏、分区丢失、/etc/fstab 配置错误1.2故障现象开机直接出现You are in emergency mode. After logging in, type journalctl -xb to view Login incorrect Give root password for maintenance (or press Control-D to continue): 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 /oem mount /userdata修复完成后执行reboot重启即可正常进系统。若分区彻底损坏无法修复可重新格式化mkfs.ext4 /dev/mmcblk0pX2.2屏蔽 fstab跳过错误分区如果暂时不需要挂载oem/userdata直接注释掉/etc/fstabvi /etc/fstab注释掉这两行# PARTLABELoem /oem ext4 defaults 0 2 # PARTLABELuserdata /userdata ext4 defaults 0 2保存重启系统会跳过这两个分区不再进紧急模式。2.3合并分区集合rootfs适合不想维护多余分区的场景修改parameter.txtCMDLINE: mtdparts:0x000020000x00004000(uboot),0x000020000x00006000(mis c),0x000200000x00008000(boot),0x000400000x00028000(recovery),0x000100000 x00068000(backup),-0x00078000(rootfs:grow)把 rootfs 设为grow自动扩容删除 oem/userdata 分区从根源避免挂载失败。2.4改服务进程挂载失败也能正常启动硬核Ubuntu 是通过systemd判断挂载失败后触发紧急模式我们直接关闭这个保护机制1.编辑服务文件vi /lib/systemd/system/local-fs.target2.把OnFailure和OnFailureJobMode屏蔽掉释掉[Unit] DescriptionLocal File Systems Documentationman:systemd.special(7) DefaultDependenciesno Conflictsshutdown.target Afterlocal-fs-pre.target # OnFailureemergency.target # OnFailureJobModereplace-irreversibly3.重载配置并重启以后就算分区挂载失败系统也正常启动进系统后再手动修复即可。三、思路分享很多同学好奇为什么是改local-fs.target分享下定位思路1. 搜紧急模式依赖​​​​​​​grep emergency.target -r /lib/systemd/system grep emergency.target -r /etc/systemd/system2. 看服务依赖关系systemctl list-dependencies能看到local-fs.target依赖oem.mount、userdata.mount失败就触发emergency.target。3. 手动模拟复现故障dd if/dev/zero of/dev/mmcblk0p8 bs1 count1024 seek1024 convnotrunc破坏分区后重启即可复现紧急模式用于验证修复方案。四、总结这套流程在眺望电子RK3588、RK3576、RK3568 等瑞芯微平台通用无论是Ubuntu22.04还是20.04均能参考遇到别慌照着做就行。希望这篇技术分享对你有帮助关注我司公众号或者转发分享。如果有实现细节想了解或者其他开发板问题欢迎评论区留言