# 规划项目开发工作 ## 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 服务、实现调度与并发。