欢迎光临
我们一直在努力

OpenBMC 空间满导致的启动失败或无法登录

两种表现:

  • 重启后 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 重启

    注意

    • 会丢失运行时配置,相当于恢复出厂。

    赞(0)
    未经允许不得转载:171主机测评 » OpenBMC 空间满导致的启动失败或无法登录
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址