Files
cleonos/docs/stage13.md

40 lines
1.5 KiB
Markdown
Raw Normal View History

2026-04-10 21:16:22 +08:00
# CLeonOS Stage13
## Stage Goal
- Upgrade shell command framework from hardcoded commands to script-driven execution.
- Add `/shell/init.cmd` startup script support with comment/blank-line handling.
- Extend user C syscall wrappers for runtime observability commands (`stats`).
- Keep Stage12 user execution manager stable while improving shell orchestration.
## Acceptance Criteria
- Kernel boots and prints `CLEONOS STAGE13 START`.
- Userland logs include init script detection:
- `INIT SCRIPT READY /SHELL/INIT.CMD` and script size.
- Shell logs show script mode:
- `[USER][SHELL] script /shell/init.cmd`
- command lines executed from script (`$ help`, `$ stats`, etc.).
- `stats` command prints runtime counters via syscall wrappers.
- System remains stable in idle loop.
## 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
- Shell falls back to default script:
- Check `ramdisk/shell/init.cmd` exists and is packed into ramdisk.
- `stats` values not updated:
- Confirm syscall IDs and wrappers remain aligned between kernel/user headers.
- Script command ignored unexpectedly:
- Verify command is not prefixed with `#` and does not exceed line buffer.
- `cat` output truncated:
- Current stage intentionally limits `cat` output to `SHELL_CAT_MAX` bytes.
- Boot regression after Stage13 merge:
- Re-check sequence: exec init -> userland init -> scheduler/services -> interrupts.