使能设备直通
使能设备直通包括启用virtCCA和SMMU安全特性、编译定制内核。适用于构建机密虚拟化或需要安全隔离的场景。
- 当前virtCCA设备直通不支持stage1 SMMU。
- 当前virtCCA设备直通功能暂不支持设备认证。
使能virtCCA和SMMU安全态初始化
- 打开grub.cfg文件。
vim /boot/efi/EFI/openEuler/grub.cfg
- 按“i”进入编辑模式,在HOST OS对应的位置添加如下参数。
virtcca_cvm_host=1 arm_smmu_v3.disable_ecmdq=1 vfio_pci.disable_idle_d3=1

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
编译GUEST OS(可选)
- 虚拟机内参考获取链接安装编译依赖以及获取Guest OS源码。
- 生成默认配置。
- 进入“kernel”目录并修改defconfig。
cd /usr/src/linux-6.6.0-98.0.0.103.oe2403sp2.aarch64/ vim arch/arm64/configs/openeuler_defconfig
内核版本号取决于用户kernel-source的安装版本,因此这里的Kernel目录应参考用户实际安装的版本所在目录。
- 按“i”进入编辑模式,确保编译选项修改为如下形式。
CONFIG_NET_9P=y CONFIG_NET_9P_VIRTIO=y CONFIG_VIRTIO_BLK=y CONFIG_SCSI_VIRTIO=y CONFIG_VIRTIO_NET=y CONFIG_VIRTIO=y CONFIG_VIRTIO_PCI_LIB=y CONFIG_VIRTIO_PCI=y CONFIG_EXT4_FS=y # CONFIG_DEBUG_INFO_BTF is not set CONFIG_SOFTLOCKUP_DETECTOR=y CONFIG_LOCKUP_DETECTOR=y CONFIG_PREEMPT_NONE=y
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
- 修改Kconfig。
- 修改“/block/Kconfig”文件。
- 打开“drivers/block/Kconfig”文件。
vim drivers/block/Kconfig
- 按“i”进入编辑模式,修改tristate“Virtio block driver”为如下。
bool "Virtio block driver"

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开“drivers/block/Kconfig”文件。
- 修改“drivers/net/Kconfig”文件。
- 打开“drivers/net/Kconfig”文件。
vim drivers/net/Kconfig
- 按“i”进入编辑模式,修改tristate“Virtio network driver”为如下。
bool "Virtio network driver"

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开“drivers/net/Kconfig”文件。
- 修改“drivers/virtio/Kconfig”文件。
- 打开“drivers/virtio/Kconfig”文件。
vim drivers/virtio/Kconfig
- 按“i”进入编辑模式,将config VIRTIO_PCI_LIB下的“tristate”改为“bool”。

- 修改tristate“PCI driver for virtio devices”为如下。
bool "PCI driver for virtio devices"

- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
- 打开“drivers/virtio/Kconfig”文件。
- 修改“/block/Kconfig”文件。
- 生成.config配置文件。
make openeuler_defconfig
- 进入“kernel”目录并修改defconfig。
- 加入NVMe盘和网卡驱动相关的配置。开启BLK_DEV_NVME、NVME_CORE、VXLAN、MLXFW、IOMMUFD、VFIO、MLX5_VFIO_PCI和MLX5_CORE等编译选项。
- 执行以下命令打开menuconfig。
make menuconfig
- 在menuconfig界面输入"/"跳转至搜索界面,在搜索界面输入要开启的编译选项后按“Enter”键进行搜索。

- 搜索完成后,输入1打开依赖选项(此案例中的依赖选项为NVME_CORE)。

- 按“space”键将NVME_CORE的模式由"M"设置为"*"。设置完成后便开启了NVME_CORE。

- 按两次“Esc”键退出至上一级。

- 打开依赖选项后开启了BLK_DEV_NVME。
- 打开所有的编译选项,保存设置后,使用如下命令编译。编译完成后重启虚拟机生效。
export LOCALVERSION="-$(uname -r | cut -d- -f2-)" make include/config/kernel.release make -j$(nproc) make modules_install make install sync
- 执行以下命令打开menuconfig。
父主题: 使能机密设备直通

