目录
验证的硬件板卡使用飞腾e2000q cpu
-
Jailhouse
下载buildroot源码并编译
使用集成jailhouse的buildroot根文件系统(参考文档Phytium-Linux-buildroot: Buildroot是一种简单、高效且易于使用的工具,可以通过交叉编译生成嵌入式Linux系统。Buildroot的用户手册位于docs/manual/manual.pdf。phytium-linux-buildroot基于Buildroot,适配了E2000,飞腾派等飞腾CPU,支持ubuntu/Debian文件系统、initrd文件系统、最小文件系统的编译。):
git clone https://gitee.com/phytium_embedded/phytium-linux-buildroot
cd phytium-linux-buildroot
./support/kconfig/merge_config.sh configs/phytium_defconfig configs/jailhouse.config
make -j$(nproc)
编译成功后在phytium-linux-buildroot/output/images目录下生成rootfs.tar、Image、*.dtb等文件。
测试板卡使用U盘作为系统盘启动,U盘格式为ext4,把rootfs.tar解压到U盘根,并在U盘新建boot目录,把Image、*.dtb文件复制该目录下。
运行buildroot并测试Jailhouse
uboot下加载linux内核并且启动根文件系统:
setenv bootargs console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/sda1 rootwait rw mem=1G
usb start;ext4load usb 0:1 ${kernel_addr} boot/Image;ext4load usb 0:1 ${ft_fdt_addr} boot/e2000q-come-board.dtb;booti ${kernel_addr} - ${ft_fdt_addr}
顺利进入系统,运行简单Jailhouse测试。
因为jailhouse分配资源时会占用uart1调试串口,导致串口控制台不能输入,使用网络ssh登录,使用ssh控制台输入jailhouse命令(参考文档Phytium-Jailhouse: 基于飞腾CPU移植的Jailhouse demo示例。):
insmod /lib/modules/5.10.209-phytium-embedded-v2.2/jailhouse/driver/jailhouse.ko
/usr/local/sbin/jailhouse enable /etc/jailhouse/e2000q.cell
/usr/local/sbin/jailhouse cell create /etc/jailhouse/e2000q-inmate-demo.cell
/usr/local/sbin/jailhouse cell load 1 /usr/local/libexec/jailhouse/demos/uart-demo.bin
/usr/local/sbin/jailhouse cell start 1
成功执行结果如下:
# [ 239.279305] jailhouse: loading out-of-tree module taints kernel.
Initializing Jailhouse hypervisor on CPU 1
Code location: 0x0000ffffc0200800
Page pool usage after early setup: mem 45/4066, remap 0/131072
Initializing processors:
CPU 1... OK
CPU 0... OK
CPU 2... OK
CPU 3... OK
Initializing unit: irqchip
Initializing unit: ARM SMMU v3
Initializing unit: ARM SMMU
Initializing unit: PVU IOMMU
Initializing unit: PCI
Adding virtual PCI device 00:00.0 to cell "e2000q"
Page pool usage after late setup: mem 385/4066, remap 65680/131072
Activating hypervisor
[ 244.982054] The Jailhouse is opening.
[ 258.187482] CPU0: shutdown
[ 258.190270] psci: CPU0 killed (polled 0 ms)
Adding virtual PCI device 00:00.0 to cell "inmate-demo"
Shared memory connection established, peer cells:
"e2000q"
Created cell "inmate-demo"
Page pool usage after cell creation: mem 399/4066, remap 65680/131072
[ 258.217722] Created Jailhouse cell "inmate-demo"
Cell "inmate-demo" can be loaded
Started cell "inmate-demo"
Hello 1 from cell!
Hello 2 from cell!
Hello 3 from cell!
Hello 4 from cell!
Hell