基于Linux的Armv8 Rust Hypervisor,部分借鉴了RVM1.5和jailhouse。
- Architecture: aarch64
- Platform: Qemu virt aarch64
- Exception
- Gicv3
- Memory
- Enable non root linux
- VirtIO device: block, net
- Architecture: riscv64
- Platform: nxp
详细的配置和运行教程,包括配置开发环境、制作根文件系统等,请参考:详细配置流程。
为了降低入门开发难度,云盘(提取码:sysH)提供了已经编译好的Linux内核Image
和根文件系统ubuntu-20.04-rootfs_ext4.img
,用户名为arm64,密码为一个空格。其主目录下的目录组织如下:
├── home
├── arm64
├── images: 包含一个Linux Image和内存文件系统
├── hvisor: 运行hvisor所需要的文件
├── jailhouse: 运行jailhouse所需要的文件
下面介绍基于ubuntu-20.04-rootfs_ext4.img
,在jailhouse/hvisor上运行一个non-root-linux的方法:
-
在本项目目录下构建
rvmarm.bin
:make all
并将
target/aarch64/debug/rvmarm.bin
复制到ubuntu-20.04-rootfs_ext4.img
中的hvisor
目录下。 -
在本项目目录下启动qemu
sudo qemu-system-aarch64 \ -machine virt,gic_version=3 \ -machine virtualization=true \ -cpu cortex-a57 \ -machine type=virt \ -nographic \ -smp 16 \ -m 1024 \ -kernel your-linux-Image-path/Image \ -append "console=ttyAMA0 root=/dev/vda rw mem=768m" \ -drive if=none,file=your-rootfs-path/ubuntu-20.04-rootfs_ext4.img,id=hd0,format=raw \ -device virtio-blk-device,drive=hd0 \ -net nic \ -net user,hostfwd=tcp::2333-:22
-
启动后输入用户名
arm64
,密码为一个空格。 -
进入主目录,启动non-root-linux:
-
hvisor:进入hvisor文件夹,依次执行:
./setup.sh ./linux.sh
-
jailhouse:进入jailhouse文件夹,执行:
./linux.sh
-
如果希望non-root-linux和root-linux处于两个不同的终端中,可以在qemu启动命令的最后加入:
-device virtio-serial-device -chardev pty,id=serial3 -device virtconsole,chardev=serial3
启动qemu后,观察到终端输出的char device redirected to /dev/pts/num (label serial3)
信息,在另一个终端中执行:
sudo screen /dev/pts/num
其中num为一个具体的数字。