Files
Deshab-OS/docs/上下文/250729/规划项目开发工作.md
T
2026-07-31 13:53:49 +08:00

44 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 规划项目开发工作
## UTSM VMM/Linux 双内核兼容层现状分析
### 各文件完成度
| 文件 | 职责 | 完成度 |
|------|------|--------|
| vmm.c | VMM 初始化、VMCS 管理、VMX 指令封装 | 已完成:vmm_init/vmm_self_test/VMCS 配置 |
| vmx.c | VMX 系统级支持 | 已完成:VMX 启用/禁用/CR 控制/MSR 读写 |
| vmexit.c | VM-Exit 分发 | 部分:HLT/CPUID/IO/EPT violation 已接线;缺 interrupt-window/preemption-timer(后已补全) |
| vmexit_asm.S | VM-Exit 汇编入口 | 已完成:16 GPR 保存/恢复 |
| linux_boot.c | Linux Guest 启动 | 已完成:VMCS 配置/vmlaunch |
| linux_loader.c | bzImage 加载 | 已完成:内核加载/页表/GDT/boot_params |
| linux_resume.c | Park-and-Resume | 已完成:vmresume 唤醒 parked guest |
| linux_compat.c | 兼容层服务 | 已完成:exec 实现(IPC + Resume) |
| hypercall.c | VMCALL 通信 | 部分:ping/hello/shm_info/console_write 已实现;cap_validate/utrw/drr 未实现 |
| ipc_shm.c | 共享内存环形队列 | 已完成:EPT 映射 + ring buffer 初始化 |
| ept.c | EPT 管理 | 已完成:初始化/GPA→HPA/按需分配 |
| virtio_mmio.c | MMIO 设备框架 | 已完成:寄存器读写 + 回调注册 + IRQ 注入 |
| virtio_blk.c | virtio-blk 模拟 | 部分:read/write 支持,缺 flush/discard |
| virtio_net.c | virtio-net 模拟 | 部分:基本 TX/RX,缺定时器驱动中断 |
### kernel_main 流程中 Linux 启动触发点
`kernel_main()` 初始化 `vmm_init()` + `vmm_self_test()` → 存在 bzImage 模块且 self_test 成功 → `linux_loader_init()` + `linux_launch()` → guest park → 返回 host → `dsk_load_and_jump()`
### 距离 Linux guest 在真机 VT-x 上跑到 shell 还差什么
| 缺失 | 说明 |
|------|------|
| VM-Exit 驱动 | interrupt window / preemption timer 模拟(后已补全) |
| 中断管理 | 自动中断注入 |
| 虚拟设备 | virtio 描述符链未完整 |
| rootfs | initramfs/rootfs 内部挂载 |
| 高级 hypercall | cap_validate / drr_checkpoint 等 |
| IO 模拟 | 部分仍为 stub |
| 真实设备接入 | guest 无法连接真实磁盘/网卡 |
| 调试支持 | 真实 guest 输出和串口日志 |
### 结论
当前系统处于 Phase 1.3,实现了基础双内核虚拟化。距真机跑起 Linux shell 还需:补全 vmexit 分发、提供真实 rootfs/initramfs、重构 virtio 驱动、补全 hypercall 服务、实现调度与并发。