[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
Stratovirt 的 RISC-V 虚拟化支持(一):环境配置
Corrector: TinyCorrect v0.2-rc2 - [spaces] Author: Sunts stsmail163@163.com Date: 2024/08/30 Revisor: Falcon falcon@tinylab.org Project: RISC-V Linux 内核剖析 Sponsor: PLCT Lab, ISCAS
前言
StratoVirt 是一种基于 Linux 内核虚拟化(KVM)的开源轻量级虚拟化技术。Stratovirt 的运行环境必须要有 RISC-V 的 H 扩展以及在其之上运行的 Linux 提供 KVM 支持。本文采用 QEMU + Ubuntu 22.04 的环境。
准备 Ubuntu 镜像
打开终端,执行以下命令,下载镜像。
wget https://cdimage.ubuntu.com/releases/jammy/release/ubuntu-22.04.4-preinstalled-server-riscv64+unmatched.img.xz
解压缩系统镜像文件
xz -d ubuntu-22.04.4-preinstalled-server-riscv64+unmatched.img.xz
编译 QEMU
考虑到直接使用 apt 命令安装的 QEMU 可能不支持 RISC-V 虚拟化扩展。所以直接下载源码编译。
安装编译前所需工具
sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \
gawk build-essential bison flex texinfo gperf libtool patchutils bc \
zlib1g-dev libexpat-dev git ninja-build \
libglib2.0-dev libfdt-dev libpixman-1-dev
# 根据 python 版本调整版本号
sudo apt-get install python3.12-venv
QEMU 的 user 用户模式网络配置需要 libslirp 的支持
下载 libslirp 源码和编译所需工具
git clone https://gitlab.freedesktop.org/slirp/libslirp.git
sudo apt install meson
libslirp 编译,安装
meson build
ninja -C build install
下载 QEMU 源码
git clone https://github.com/qemu/qemu.git
编译 RV64 架构下的 QEMU:qemu-system-riscv64
cd qemu && ./configure --target-list=riscv64-softmmu --enable-slirp && make
用 QEMU 引导 Linux
安装 U-boot 和 Opensbi
sudo apt install u-boot-qemu opensbi
启动 Linux
./qemu/build/qemu-system-riscv64 -machine virt -nographic -m 8192 -smp 6 -bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.bin -kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf -device virtio-net-device,netdev=eth0 -netdev user,id=eth0,hostfwd=tcp::6666-:22 -device virtio-rng-pci -drive file=./ubuntu-22.04.4-preinstalled-server-riscv64+unmatched.img,format=raw,if=virtio
登录到 Linux,系统会立即要求更改密码
# 默认用户名和密码
username: ubuntu
password: ubuntu
加载 kvm 模块,并验证
sudo modprobe kvm
ls /dev/
/dev 目录下观察到文件 kvm 即可。
RUST 环境安装
按照官方提供的命令直接安装最新的 RUST 即可。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
看到提示信息:Rust is installed now. Great!
即安装完成。
小结
环境配置过程中的源码下载或 RUST 安装等过程难免要从 github 等外网下载内容,请配置解决。
参考资料
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |
Read Album:
- Stratovirt 的 RISC-V 虚拟化支持(四):内存模型和 CPU 模型
- Stratovirt 的 RISC-V 虚拟化支持(三):KVM 模型
- Stratovirt 的 RISC-V 虚拟化支持(二):库的 RISC-V 适配
- TinyBPT 和面向 buildroot 的二进制包管理服务(3):服务端说明
- TinyBPT 和面向 buildroot 的二进制包管理服务(2):客户端说明