安装 jailhouse.ko 后,会给系统注册jailhouse 命令。jailhouse 虚拟化都需要用jailhouse 命令来操作。
scilogyhunter@ubuntu1804:~/jailhouse$ sudo insmod /lib/modules/5.3.0-28-generic/extra/driver/jailhouse.ko
scilogyhunter@ubuntu1804:~/jailhouse$ jailhouse
Usage: jailhouse { COMMAND | --help | --version }
Available commands:
enable SYSCONFIG
disable
console [-f | --follow]
cell create CELLCONFIG
cell list
cell load { ID | [--name] NAME } { IMAGE | { -s | --string } "STRING" }
[-a | --address ADDRESS] ...
cell start { ID | [--name] NAME }
cell shutdown { ID | [--name] NAME }
cell destroy { ID | [--name] NAME }
cell linux CELLCONFIG KERNEL [-i | --initrd FILE]
[-c | --cmdline "STRING"] [-w | --write-params FILE]
cell stats { ID | [--name] NAME }
config create [-h] [-g] [-r ROOT] [--mem-inmates MEM_INMATES]
[--mem-hv MEM_HV] FILE
config collect FILE.TAR
hardware check
scilogyhunter@ubuntu1804:~/jailhouse$
jailhouse 子命令说明:
子命令 | 说明 |
---|---|
hardware check | 检查硬件条件 |
cell list | 列出 cell 列表 |
config create | 创建配置文件 |
enable | 使能/启动 虚拟化模式 |
cell create | 创建 cell 虚拟机 |
cell load | 给虚拟机加载执行镜像 |
cell stats | 启动 cell |
基础操作
- 安装 内核模块
sudo insmod /lib/modules/5.10.153-phytium-embeded-v2.0/jailhouse/driver/jailhouse.ko
sudo insmod /lib/modules/4.19.246-phytium-embeded-v2.0/jailhouse/driver/jailhouse.ko
- 启动 jailhouse
sudo jailhouse enable /etc/jailhouse/e2000q.cell
- 查看 cell 列表
jailhouse cell list
- 创建非 root cell
sudo jailhouse cell create /etc/jailhouse/e2000q-inmate-demo.cell
sudo jailhouse cell create /etc/jailhouse/e2000q-inmate-rtos64.cell;
- 加载非 root cell 镜像
sudo jailhouse cell load 1 /usr/local/libexec/jailhouse/demos/gic-demo.bin
sudo jailhouse cell load 1 /usr/local/libexec/jailhouse/demos/ivshmem-demo.bin
sudo jailhouse cell load 1 /usr/local/libexec/jailhouse/demos/uart-demo.bin
sudo jailhouse cell load 1 freertos64.bin --address 0x80100000;
- 启动非 root cell
sudo jailhouse cell start 1;
scilogyhunter@ubuntu1804:~/jailhouse$ jailhouse --help
Usage: jailhouse { COMMAND | --help | --version }
Available commands:
enable SYSCONFIG
disable
console [-f | --follow]
cell create CELLCONFIG
cell list
cell load { ID | [--name] NAME } { IMAGE | { -s | --string } "STRING" }
[-a | --address ADDRESS] ...
cell start { ID | [--name] NAME }
cell shutdown { ID | [--name] NAME }
cell destroy { ID | [--name] NAME }
cell linux CELLCONFIG KERNEL [-i | --initrd FILE]
[-c | --cmdline "STRING"] [-w | --write-params FILE]
cell stats { ID | [--name] NAME }
config create [-h] [-g] [-r ROOT] [--mem-inmates MEM_INMATES]
[--mem-hv MEM_HV] FILE
config collect FILE.TAR
hardware check
scilogyhunter@ubuntu1804:~/jailhouse$
scilogyhunter@ubuntu1804:~/jailhouse$ jailhouse --version
Jailhouse management tool v0.12
scilogyhunter@ubuntu1804:~/jailhouse$
scilogyhunter@ubuntu1804:~/jailhouse$ sudo jailhouse hardware check
Feature Availability
------------------------------ ------------------
Number of CPUs > 1 ok
Long mode ok
x2APIC ok
VT-x (VMX) ok
VMX outside SMX ok
VMX inside SMX missing (optional)
IA32_TRUE_*_CLTS ok
NMI exiting ok
Preemption timer ok
I/O bitmap ok
MSR bitmap ok
Secondary controls ok
Optional CR3 interception ok
Virtualize APIC access ok
RDTSCP ok
Unrestricted guest ok
INVPCID ok
XSAVES ok
EPT ok
4-level page walk ok
EPTP write-back ok
2M pages ok
1G pages ok
INVEPT ok
Single or all-context ok
VM-exit save IA32_PAT ok
VM-exit load IA32_PAT ok
VM-exit save IA32_EFER ok
VM-exit load IA32_EFER ok
VM-entry load IA32_PAT ok
VM-entry load IA32_EFER ok
Activity state HLT ok
VT-d (IOMMU #0) ok
39-bit AGAW missing (optional)
48-bit AGAW ok
2M pages ok
1G pages ok
Queued invalidation ok
Interrupt remapping ok
Extended interrupt mode ok
VT-d (IOMMU #1) ok
39-bit AGAW missing (optional)
48-bit AGAW ok
2M pages ok
1G pages ok
Queued invalidation ok
Interrupt remapping ok
Extended interrupt mode ok
Check passed!
scilogyhunter@ubuntu1804:~/jailhouse$
scilogyhunter@ubuntu1804:~/jailhouse$ sudo jailhouse config create rootcellcfg.c
scilogyhunter@ubuntu1804:~/jailhouse$ ls
ci COPYING FAQ.md inmates Makefile pyjailhouse scripts tools
configs Documentation hypervisor Kbuild modules.order README.md setup.py VERSION
CONTRIBUTING.md driver include LICENSING.md Module.symvers rootcellcfg.c TODO.md
scilogyhunter@ubuntu1804:~/jailhouse$