Repository navigation
Recovery
Z User edited this page Oct 23, 2026
·
2 revisions
语言:简体中文 | Recovery-EN
Open Cube OS 就是恢复环境。Windows 将 WinRE 隐藏在启动故障之后,而这里的 oc> Shell 是主要接口——并且它同时也是运行所在机器的救援工具包。
- 即使完全没有磁盘,系统也能启动到 Shell(ISO 是自包含的)。
- 任何诊断都只需一条 Shell 命令——无需构建单独的救援介质,无需进入特殊模式。
- 崩溃产物会持久化到 /etc 卷,因此经历 panic 后重启的机器仍携带自己的证据。
当内核发生 panic(受保护自测之外未处理的异常)时:
- 异常帧(寄存器、故障地址)转储到串口——你可以通过
-serial file:log.txt查看。 - 一条崩溃日志条目被写入 /etc 卷。
- 机器停止运行(或根据看门狗策略重启)。
重启后:
oc> dumpinfo (inspect the saved crash dump)
oc> dmesg (kernel ring buffer from the current boot)
oc> logcat (follow the persistent kernel log live)
oc> ls /etc (crashlog files live here)
oc> crashtest (deliberate kernel panic - safe on a scratch
system, everything not on /etc is lost)
crashtest 完整验证了转储路径:panic → 串口转储 → /etc 崩溃日志 → dumpinfo 读取回来。
典型救援场景及其对应命令:
| 场景 | 操作 |
|---|---|
| 系统启动,然后行为异常 |
dmesg、logcat、health、health export 获取 JSON 快照 |
| 用户程序挂起 | 通过进程命令列出任务并终止;watchdog 策略会终止饿死进程 |
| 磁盘可疑 |
dskstat、fsck <dev>、以只读方式挂载检查 |
| 启动标志指向错误槽位 | GRUB 菜单 → 强制使用另一个槽位;然后执行 update rollback
|
| 网络配置丢失 |
config restore(恢复默认)然后重新运行 dhcp
|
| 日志溢出 |
logctl(级别 + 过滤器),轮转是自动的(kernel.log → kernel.log.1) |
kernel/core/core_watchdog.c 会启用真实硬件看门狗(如果平台有的话):
-
Intel TCO(LPC 总线):在 QEMU q35 上动态发现——端到端测试套件显示
Intel TCO found: PMBASE=0x600 TCOBASE=0x660,启用它、使其饥饿,机器确实硬重启并再次启动。 - ACPI WDAT:表项被编程;启用和重置以相同方式验证。
oc> watchdog (status: hardware support + monitored slots)
oc> watchdog feed (feed the active watchdog)
oc> watchdog start/stop/timeout ... (see the command page)
被监控的槽位额外实现了策略看门狗:必须定期为其槽位"喂食"的任务会被终止(原因记录在日志中),而不会导致内核崩溃——内核存活,违规进程不存活。
oc> health (CPU / memory / tasks / IO at a glance)
oc> health watch (live monitor, 1 s refresh)
oc> health export (JSON snapshot to /var/log/health.json)
阈值会向内核日志发出警报(当某个循环程序锁定核心时显示 CPU-LOCKED、内存压力、IO 阻塞)——这些警报行正是端到端测试套件断言的内容。
(本段含 4 个 ⟪OC-…⟫ 占位标记,必须全部原样保留在原位置。)