鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

使能设备直通

使能设备直通包括启用virtCCA和SMMU安全特性、编译定制内核。适用于构建机密虚拟化或需要安全隔离的场景。

  • 当前virtCCA设备直通不支持stage1 SMMU。
  • 当前virtCCA设备直通功能暂不支持设备认证。

使能virtCCA和SMMU安全态初始化

  1. 打开grub.cfg文件。
    vim /boot/efi/EFI/openEuler/grub.cfg
  2. “i”进入编辑模式,在HOST OS对应的位置添加如下参数。
    virtcca_cvm_host=1 arm_smmu_v3.disable_ecmdq=1 vfio_pci.disable_idle_d3=1 

  3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。

BIOS使能SMMU

  1. 请参见《TaiShan 服务器 BIOS 参数参考(鲲鹏920处理器)》中“进入BIOS界面”的相关内容,进入BIOS界面。
  2. 依次进入Advanced > MISC Config > Support Smmu
  3. “Support Smmu”设置为“Enabled”,按“F10”保存退出。

编译GUEST OS(可选)

  1. 虚拟机内参考获取链接安装编译依赖以及获取Guest OS源码。
  2. 生成默认配置。
    1. 进入“kernel”目录并修改defconfig。
      cd /usr/src/linux-6.6.0-98.0.0.103.oe2403sp2.aarch64/
      vim arch/arm64/configs/openeuler_defconfig

      内核版本号取决于用户kernel-source的安装版本,因此这里的Kernel目录应参考用户实际安装的版本所在目录。

    2. “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
    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
    4. 修改Kconfig。
      1. 修改“/block/Kconfig”文件。
        1. 打开“drivers/block/Kconfig”文件。
          vim drivers/block/Kconfig
        2. “i”进入编辑模式,修改tristate“Virtio block driver”为如下。
          bool "Virtio block driver"

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

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

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

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

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

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

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

    6. 打开依赖选项后开启了BLK_DEV_NVME。

    7. 打开所有的编译选项,保存设置后,使用如下命令编译。编译完成后重启虚拟机生效。
      export LOCALVERSION="-$(uname -r | cut -d- -f2-)"
      make include/config/kernel.release
      make -j$(nproc)
      make modules_install
      make install
      sync