要在 Linux 计算机上支持实时音频-视频功能,您必须安装 V4L2Loopback 驱动程序。实时音频-视频功能可将本地连接的网络摄像头和音频设备从客户端系统重定向到远程会话。

您必须在安装 Horizon Agent 之前或之后在 Linux 计算机上安装 V4L2Loopback 驱动程序版本 v0.12.5,具体取决于您使用的 Horizon Agent 安装程序的格式。有关更多信息,请参阅安装实时音频-视频功能

首先,从 https://github.com/umlaeute/v4l2loopback/tags 下载 V4L2Loopback 源代码包版本 v0.12.5。然后,按照 Linux 分发包的安装过程进行操作。

在 Ubuntu/Debian 计算机上安装 V4L2Loopback

  1. 安装所需的依赖项包。
    sudo apt-get install make
    sudo apt-get install gcc
    sudo apt-get install libelf-dev
  2. 从源代码包编译并安装 V4L2Loopback 驱动程序。
    unzip v0.12.5.zip
    cd v4l2loopback-0.12.5
    
    # For tarball installer, the [agent patch path] is the installer package path such as /root/VMware-horizonagent-linux-x86_64-2206-8.6.0-19639256
    # For RPM installer, the [agent patch path] is /usr/lib/vmware/viewagent
    patch -p1 < [agent patch path]/resources/v4l2loopback/v4l2loopback.patch
    make clean && make && make install
    
    # Install v4l2loopback-ctl
    make install-utils
    depmod -A
  3. (仅限 Linux 内核版本 5.15.0 及更高版本)修改配置以使用刚安装的有效 V4L2Loopback 驱动程序覆盖该计算机上默认安装的无效 V4L2Loopback 驱动程序。
    1. 将以下行附加到 /etc/depmod.d/ubuntu.conf 配置文件的末尾。
      override v4l2loopback * extra
    2. 重新生成 modules.dep 文件。
      depmod -a
    3. 要移除无效的 V4L2Loopback 驱动程序,请执行以下操作之一。
      • 重新启动计算机。
      • 运行以下命令。
        sudo rmmod v4l2loopback
  4. (仅限 Ubuntu)如果已在 Ubuntu 虚拟机上启用可扩展固件接口 (EFI) 和 UEFI 安全引导,请为 V4L2Loopback 驱动程序配置签名设置。
    1. 为 V4L2Loopback 驱动程序创建 SSL 密钥对。
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
    2. 对 V4L2Loopback 驱动程序进行签名。
      sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der  /lib/modules/$(uname -r)/extra/v4l2loopback.ko
    3. 注册用于 UEFI 安全引导的密钥。
      sudo mokutil --import MOK.der
      注: 此命令会发出一个为 UEFI 安全引导设置计算机所有者密钥 (Machine Owner Key, MOK) 密码的请求。
    4. 要在 vSphere 控制台中设置 UEFI 安全引导,请重新引导系统。有关更多信息,请参阅 https://sourceware.org/systemtap/wiki/SecureBoot

在 RHEL 计算机上安装 V4L2Loopback

  1. 安装所需的依赖项包。
    sudo yum install gcc-c++
    sudo yum install kernel-devel-$(uname -r)
    sudo yum install kernel-headers-$(uname -r)
    sudo yum install patch
    sudo yum install elfutils-libelf-devel
  2. 从源代码包编译并安装 V4L2Loopback 驱动程序。
    unzip v0.12.5.zip
    cd v4l2loopback-0.12.5
    
    # For tarball installer, the [agent patch path] is the installer package such as /root/VMware-horizonagent-linux-x86_64-2206-8.6.0-19639256
    # For RPM installer, the [agent patch path] is /usr/lib/vmware/viewagent
    patch -p1 < [agent patch path]/resources/v4l2loopback/v4l2loopback.patch
    make clean && make && make install
    
    # Install v4l2loopback-ctl
    make install-utils
    depmod -A
  3. (RHEL 9.x/8.x) 为 V4L2Loopback 驱动程序配置签名设置。
    1. 为 V4L2Loopback 驱动程序创建 SSL 密钥对。
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
      
    2. 对 V4L2Loopback 驱动程序进行签名。
      sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/extra/v4l2loopback.ko
    3. 注册用于 UEFI 安全引导的密钥。
      sudo mokutil --import MOK.der
      注: 此命令会发出一个为 UEFI 安全引导设置计算机所有者密钥 (Machine Owner Key, MOK) 密码的请求。
    4. 要在 vSphere 控制台中设置 UEFI 安全引导,请重新引导系统。有关更多信息,请参阅 https://sourceware.org/systemtap/wiki/SecureBoot

在 SLED/SLES 计算机上安装 V4L2Loopback

  1. 查找当前内核软件包的版本。
    rpm -qa | grep kernel-default-$(echo $(uname -r) | cut -d '-' -f 1,2)

    输出为当前安装的内核软件包的名称。例如,如果软件包名称为 kernel-default-4.4.21-90.1,那么,当前内核软件包的版本为 4.4.21-90.1。

  2. 安装 kernel-develkernel-default-develkernel-macrospatch 软件包。例如,如果内核软件包版本为 4.4.21-90.1,请使用以下命令。
    zypper install --oldpackage kernel-devel-4.4.21-90.1 kernel-default-devel-4.4.21-90.1 kernel-macros-4.4.21-90.1 patch
  3. 从源代码包编译并安装 V4L2Loopback 驱动程序。
    unzip v0.12.5.zip
    cd v4l2loopback-0.12.5
    
    # For tarball installer, the [agent patch path] is the installer package such as /root/VMware-horizonagent-linux-x86_64-2206-8.6.0-19639256
    # For RPM installer, the [agent patch path] is /usr/lib/vmware/viewagent
    patch -p1 < [agent patch path]/resources/v4l2loopback/v4l2loopback.patch
    make clean && make && make install
    
    # Install v4l2loopback-ctl
    make install-utils
    depmod -A
  4. 为 V4L2Loopback 驱动程序配置签名设置。
    1. 为 V4L2Loopback 驱动程序创建 SSL 密钥对。
      openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" -addext extendedKeyUsage=1.3.6.1.5.5.7.3.3
      
    2. 查找 V4L2Loopback 驱动程序的签名文件的路径。
      sudo find / -name sign-file

      此命令将返回系统上所有签名文件的路径。V4L2Loopback 驱动程序的签名文件路径类似于以下示例。

      /usr/src/linux-5.3.18-24.9-obj/x86_64/default/scripts/
    3. 对 V4L2Loopback 驱动程序进行签名。在以下命令序列中,<sign-file-path> 是您之前找到的签名文件路径。
      sudo /<sign-file-path>/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/extra/v4l2loopback.ko
    4. 注册用于 UEFI 安全引导的密钥。
      sudo mokutil --import MOK.der
      注: 此命令会发出一个为 UEFI 安全引导设置计算机所有者密钥 (Machine Owner Key, MOK) 密码的请求。
    5. 要在 vSphere 控制台中设置 UEFI 安全引导,请重新引导系统。有关更多信息,请参阅 https://sourceware.org/systemtap/wiki/SecureBoot