Linux 主机
本页说明在 Linux 主机上原生构建和运行联合仿真的依赖、KVM 权限和发行版差异。 使用容器时看 开发容器。
适用场景
主机满足以下条件时直接原生运行,性能最好,也便于连接真实硬件与调试:
Linux x86_64,且
/dev/kvm对当前用户可读写;已安装
scripts/host/Dockerfile.dev列出的 gem5、QEMU 与 Rust 构建依赖;Docker 守护进程可用(开发容器与 GPU 应用构建使用);
磁盘与内存满足 环境与前置条件 的下限。
缺少构建依赖或使用其他发行版时,可以只把构建放进开发容器,见 开发容器。
系统依赖
完整软件包列表以 scripts/host/Dockerfile.dev 为准,主要分为以下几类:
类别 |
典型软件包 |
用途 |
|---|---|---|
编译工具链 |
|
编译 QEMU 与 gem5 |
gem5 依赖 |
|
gem5 构建与 Python 脚本 |
QEMU 依赖 |
|
QEMU softmmu 与 vfio-user 后端 |
测试依赖 |
|
QEMU 单元测试与 Python 虚拟环境 |
镜像构建 |
|
Packer/Ansible 客户机镜像构建 |
Rust |
Rust 1.95 及以上与 Cargo |
构建 |
gem5 二进制链接 Ubuntu 24.04 的库,建议在与该发行版兼容的环境中构建; 发行版差异较大时使用开发容器。
KVM 与权限
ls -l /dev/kvm
test -r /dev/kvm && test -w /dev/kvm && echo kvm-ok
/dev/kvm 通常属于 root:kvm、权限 0660。把当前用户加入 kvm
组后重新登录:
sudo usermod -aG kvm "$USER"
Docker 也需要当前用户可访问:确认用户在 docker 组且守护进程正在运行。
WSL2 与嵌套虚拟化
WSL2 内需要开启嵌套虚拟化,并让
/dev/kvm在发行版内可见;源码与构建产物放在 ext4 文件系统上,不要放在
/mnt/c等挂载盘;内存与 CPU 按 环境与前置条件 的下限分配,gem5 链接阶段尤其需要内存;
容器路径同样需要把
/dev/kvm透传给容器。
验证环境
git submodule status
just --list
docker info >/dev/null && echo docker-ok
ls -l /dev/kvm
qemu-img --version