两种表现:
重启后 BMC 卡死
心跳灯亮,但串口卡住,SSH 连不上,最终报:
mkdir: can't create directory 'run/initramfs/rw/work': No space left on device
overlayfs: failed to resolve 'run/initramfs/rw/work': -2
Fatal error, triggering kernel panic!
不重启时已登录终端还能用
但 root 无法登录,新 SSH 也开不了。本质是写空间满了。
原因
BMC 的读写分区 rwfs 满了。
OverlayFS 需要创建 workdir,空间不足导致创建失败,根文件系统挂载失败,启动直接 panic。
解决办法
核心:进 U-Boot,用内存小系统挂载真实分区,释放 rwfs。
1. 进 U-Boot
串口连接 BMC,上电后一直按 ESC,停在 U-Boot 命令行。
2. 改启动参数,进 debug 模式
以E2000 BMC为例
printenv 查看启动参数,根据具体指令执行第二条命令
setenv bootargs earlycon=pl011,0x2800c000 root=/dev/ram0 rw enable-initrd-debug-sh debug-init-sh
boot
3. 进入内存小系统后,删除 debug 参数
vi /run/initramfs/init-options
删除里面的:
enable-initrd-debug-sh debug-init-sh
保存退出。
4. 手动创建设备节点并挂载 rwfs
在救援 shell (~ #) 中依次执行:
确认 rwfs 对应的 mtd 设备号
cat /proc/mtd
确认 mtd5 的 name 为 "rwfs"。
手动创建 mtd5 的字符设备节点
mknod /dev/mtd5 c 90 5
如果提示已存在,忽略即可。
创建块设备节点并挂载
mknod /dev/mtdblock5 b 31 5
mkdir -p /mnt/rw
mount -t jffs2 /dev/mtdblock5 /mnt/rw
验证挂载
df -h /mnt/rw
ls /mnt/rw
5. 清除可写层 (cow 目录)
挂载成功后,就可以安全地清除 OverlayFS 的可写层了:
rm -rf /mnt/rw/cow/*
sync
umount /mnt/rw
6. reboof -f 重启
注意
-
会丢失运行时配置,相当于恢复出厂。




