Files

44 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2026-07-31 13:53:49 +08:00
# 规划项目开发工作
## 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 服务、实现调度与并发。