Files
cleonos/docs/stage22.md
2026-04-11 21:20:48 +08:00

2.3 KiB

CLeonOS Stage22

Stage Goal

  • Add shell-side observability and diagnostics while keeping ELF path unchanged.
  • Introduce in-kernel log journal so shell can inspect boot/runtime logs.
  • Extend /temp workflow with copy/move utilities and command execution metrics.

What Was Implemented

  • Kernel log journal (ring buffer):
    • Added log journal storage in clks/kernel/log.c.
    • Added APIs:
      • clks_log_journal_count()
      • clks_log_journal_read(index_from_oldest, out_line, out_size)
  • Shell command expansion:
    • dmesg [n] (reads recent journal lines)
    • shstat (shell command counters)
    • memstat (PMM + heap snapshot)
    • fsstat (VFS node and directory child counts)
    • taskstat (scheduler/task runtime snapshot)
    • cp <src> <dst>
    • mv <src> <dst>
  • Command accounting:
    • Tracks total/ok/fail/unknown command counts.
  • Safety policy:
    • cp destination must be under /temp.
    • mv source and destination must both be under /temp.
  • Stage banner updated to:
    • CLEONOS Stage22 START

Acceptance Criteria

  • Boot completes and shell remains interactive.
  • help lists new Stage22 commands.
  • dmesg prints recent log lines from kernel journal.
  • shstat shows changing counters after running commands.
  • memstat/fsstat/taskstat print non-empty statistics.
  • /temp copy/move flow works:
    • cp succeeds to /temp destination.
    • mv succeeds when both paths are in /temp.
    • invalid policy paths are rejected with message.

Suggested Validation Script (Manual)

  • help
  • dmesg 20
  • memstat
  • fsstat
  • taskstat
  • cd /temp
  • mkdir s22
  • write /temp/s22/a.txt alpha
  • cp /temp/s22/a.txt /temp/s22/b.txt
  • cat /temp/s22/b.txt
  • mv /temp/s22/b.txt /temp/s22/c.txt
  • ls /temp/s22
  • shstat

Build Targets

  • make setup
  • make userapps
  • make iso
  • make run
  • make debug

QEMU Command

  • qemu-system-x86_64 -M q35 -m 1024M -cdrom build/CLeonOS-x86_64.iso -serial stdio

Common Bugs and Debugging

  • dmesg output empty:
    • Ensure command is run after boot logs are produced.
  • cp fails unexpectedly:
    • Check destination path is under /temp.
    • Verify source is a regular file.
  • mv fails after copy:
    • Stage22 requires source path under /temp for removal.
  • taskstat missing details:
    • Confirm scheduler task count is non-zero and system reached idle loop.