Files
Deshab-OS/docs/上下文/260729/规划项目开发工作.md
T
2026-08-05 13:58:13 +08:00

2.4 KiB
Raw Blame History

规划项目开发工作

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 服务、实现调度与并发。