操作步骤:
一、ESXi 8开启核显直通
自从VMware vSphere(ESXi)升级到7.0以后,改进了一个功能,就是硬件直通以后不需要重启就可以直接添加给虚拟机使用。可是偏偏有不少人会遇到以下情况:直通核显给虚拟机可以正常使用,但是ESXi重启后直通列表里面的核显会变成再次需要直通才能使用,这样的话设置的虚拟机自动启动就无效了。
有人说这是BUG,有人认为这个是ESXi的管理机制:每次ESXi重启后,宿主会直接忽视核显直通然后获得核显的使用权,应该是为了防止在直通核显以后又误将管理口网卡直通出去造成ESXI无法进入管理界面的尴尬。这个可以关掉的:
1、在电脑浏览器打开ESXi,在菜单中开启SSH;
2、在电脑上打开MobaXterm或者Putty等软件,用root账号登录到ESXi的SSH下;
3、输入一条命令(须注意英文的大小写和空格),回车:
esxcli system settings kernel set -s vga -v FALSE
4、重启ESXi生效。
N6000 BIOS 版本 : V5.19
N6000 核心显卡的 Device ID : 0x4e71
二、安装Debian 11 / Ubuntu 22(推荐Ubuntu)
在ESXi 8里新建一台虚拟机,建议分配4核CPU和2G~4G内存。我这里的启动设置是EFI启动,成功添加直通核显。先不要添加核显,用默认的虚拟显卡安装好Debian 11或者Ubuntu 22.04(推荐安装Ubuntu 22.04,因为不用自己折腾non-free的linux 固件),选择安装组件时不要选择任何GUI图形化桌面(如果安装了图形界面,后面直通核显时大概率死机),仅勾选安装SSH Server和基础组件,Ubuntu 要用 ubuntu-22.04-live-server-amd64.iso
这个安装包,选最小化安装,其他组件可以等安装完成后再apt install。
我在这里就先预留了所有内存,因为后面直通显卡设备有这个要求。也可以等直通显卡时再修改此项配置。
注意:不要选择任何GUI图形化桌面
三、开启Debian 11 / Ubuntu 22 SSH登录
如果安装时没安装SSH服务,请先安装:
apt -y install openssh-server
检查状态:
systemctl status ssh
确认SSH服务是enabled状态,可以开机自启动:
修改sshd_config文件允许root用户远程登录:
这一步操作会减弱Debian / Ubuntu主机的安全性,不过家用一般也不用太在意,特别在意的可以设置为SSH公钥/私钥免密登录,具体方法网上有教程,也可以看这里SSH无密码登录及WinSCP和PuTTY设置。
nano /etc/ssh/sshd_config
找到以下几行并去掉前面的注释标记#号,并修改后面的设定值:
PermitRootLogin yes
PasswordAuthentication yes
Ubuntu还需要手动为root用户设置密码:
sudo passwd root
重启SSH服务:
systemctl restart ssh
打开MobaXterm或者Putty等软件,用root账号和密码尝试连接运行在Debian / Ubuntu 的IP 22端口上的SSH服务,确定可以正常登录和输入命令。
四、升级Debian 11 / Ubuntu 22 内核到5.18
升级Debian 11 内核到5.18
Debian 11安装好默认是5.10内核,根据Jellyfin中国特供版作者nyanmisaka等各位大佬的研究,想要让N6000核显开启硬件转码需要升级Linux内核到5.17以上,开启低功耗编码HuC和GuC。
到这里下载Debian 5.18内核二进制安装包,手动安装之。
下载已编译的5.18内核二进制安装包,并安装:
mkdir kernel
cd kernel
wget http://ftp.debian.org/debian/pool/main/l/linux-signed-amd64/linux-image-5.18.0-2-amd64_5.18.5-1_amd64.deb
dpkg -i *.deb
查看已安装的内核:
dpkg --list | grep linux-image
返回:
ii linux-image-5.10.0-16-amd64 | 5.10.127-1 | amd64 | Linux 5.10 for 64-bit PCs (signed) |
ii linux-image-5.18.0-2-amd64 | 5.18.5-1 | amd64 | Linux 5.18 for 64-bit PCs (signed) |
ii linux-image-amd64 | 5.10.127-1 | amd64 | Linux for 64-bit PCs (meta-package) |
重启:
reboot
重启后查看新内核生效了没有:
uname -r
正常情况应该返回:
Linux debian 5.18.0-2-amd64**
升级Ubuntu 22 内核到5.18
Ubuntu 22.04安装好以后是5.15内核,我们把它升级到5.18内核:
下载ubuntu-mainline-kernel脚本:
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
将脚本放在可执行路径中:
install ubuntu-mainline-kernel.sh /usr/local/bin/
检查当前可以下载安装的内核版本:
ubuntu-mainline-kernel.sh -r
返回:
v5.18.0
v5.18.1
v5.18.2
v5.18.3
v5.18.4
v5.18.5
v5.18.6
v5.18.7
v5.18.8
v5.18.9
v5.18.10
v5.18.11
v5.18.12
v5.18.13
v5.18.14
v5.18.15
v5.18.16
v5.18.17
v5.18.18
v5.18.19
下载安装指定版本内核v5.18.19:
ubuntu-mainline-kernel.sh -i v5.18.19
返回:
Downloading index from kernel.ubuntu.com
Will download 6 files from kernel.ubuntu.com:
Downloading amd64/linux-headers-5.18.19-051819-generic_5.18.19-051819.202208211443_amd64.deb: 100%
Downloading amd64/linux-headers-5.18.19-051819_5.18.19-051819.202208211443_all.deb: 100%
Downloading amd64/linux-image-unsigned-5.18.19-051819-generic_5.18.19-051819.202208211443_amd64.deb: 100%
Downloading amd64/linux-modules-5.18.19-051819-generic_5.18.19-051819.202208211443_amd64.deb: 100%
Downloading amd64/CHECKSUMS: 100%
Downloading amd64/CHECKSUMS.gpg: 100%
Signature of checksum file has been successfully verified
Checksums of deb files have been successfully verified with sha256sum
Installing 4 packages
Cleaning up work folder
查看当前已通过该脚本安装的内核版本:
ubuntu-mainline-kernel.sh -l
返回:
v5.18.19-051819
重启:
reboot
重启后查看新内核生效了没有:
uname -r
返回:
5.18.19-051819-generic
代表新内核成功启用。
五、直通核显到Debian 11 / Ubuntu 22
添加核显PCI设备成为虚拟机硬件
现在关闭Debian 11 / Ubuntu 22 虚拟机,在ESXi 8里将核显PCI设备添加到虚拟机的硬件里:
【虚拟机添加核显图,后续补】
禁用虚拟显卡
然后在虚拟机选项-高级-配置参数-编辑配置里,将svga.present由 TRUE
改为 FALSE
,保存并启动虚拟机。
开机后虚拟机控制台将一直呈现灰色而不可用,稍等片刻可以尝试SSH连接设置好的静态IP的22端口。如果不出意外,应该可以用root用户直接远程登录继续执行下面的操作。
验证核显是否已经加载:
ls -al /dev/dri
返回 | |||||||||
---|---|---|---|---|---|---|---|---|---|
total | 0 | 表格 | 表格 | 表格 | 表格 | 表格 | 表格 | 表格 | |
drwxr-xr-x | 3 | root | root | 100 | Jul | 15 | 22:07 | . | |
drwxr-xr-x | 17 | root | root | 3200 | Jul | 15 | 22:07 | .. | |
drwxr-xr-x | 2 | root | root | 80 | Jul | 15 | 22:07 | by-path | |
crw-rw---- | 1 | root | video 226 | 0 | Jul | 15 | 22:07 | card0 | |
crw-rw---- | 1 | root | render 226 | 128 | Jul | 15 | 22:07 | renderD128 |
说明核显已经正常识别加载。
(以下内容主要来自 N5105 PVE docker-compose 安装Jellyfin 并实现 硬解码 、 N5015使用心得 、软路由N5105硬解方案归纳、 司波图 / 通用PVE AIO安装教程 和 N5105 jasper lake 开启硬件转码方法) 。
安装缺失固件
Debian 11 安装缺失固件
因为开启核显开启HuC和GuC功能需要用到Intel提供的闭源已编译二进制固件,但是Debian默认的安装ISO镜像并不带这些non-free的Linux固件,虽然也可以从Debian官方下载下载包含non-free Linux固件的ISO镜像来进行安装,或者手动下载最新的20220718版non-free Linux固件安装包解压后安装,但经过测试,这两种方式安装的Intel核显i915 GuC固件版本还是偏低,需要到这里下载三个最新版本的固件:
固件 | 文件大小(Byte) | 下载链接 | MD5 |
---|---|---|---|
ehl_guc_69.0.3.bin | 343360 | https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/ehl_guc_69.0.3.bin | 83dc91c3b5388066affc7bce49be96d8 |
ehl_huc_9.0.0.bin | 498880 | https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/ehl_huc_9.0.0.bin | 6438c08bef2e784a99837b9d1cb60989 |
icl_dmc_ver1_09.bin | 25952 | https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/icl_dmc_ver1_09.bin | 930d28514a198ca0eb39d9dfb743a194 |
然后上传到/lib/firmware/i915,如果i915目录不存在就先创建它:
mkdir /lib/firmware/i915
也可以直接在Debian里下载:
mkdir /lib/firmware/i915
cd /lib/firmware/i915
完成后注意核对文件大小和权限:
ls -l /lib/firmware/i915
返回:
-rw-r--r-- 1 root root 343360 Jul 14 21:56 ehl_guc_69.0.3.bin
-rw-r--r-- 1 root root 498880 Jul 14 22:03 ehl_huc_9.0.0.bin
-rw-r--r-- 1 root root 25952 Jul 14 21:55 icl_dmc_ver1_09.bin
在WinSCP里看是这样的:
补充:(可选,非必须)如果想安装完整版的最新固件,可以从这里下载(压缩包文件大小达近400MB,解压后更大,浪费硬盘空间,非必要情况不建议下载),以下命令供参考:
mkdir firmware & cd firmware
tar -zxf linux-firmware-20220708.tar.gz
mkdir /lib/firmware/i915
cp linux-firmware-20220708/i915/* /lib/firmware/i915/
rm -rf linux-firmware-20220708/
Ubuntu 22 检查固件
相比之下,Ubuntu 22.04就省事多了,已安装的固件包比较全,已经包含最新的i915固件,可以列一下看看:
ls -l /lib/firmware/i915/ehl_guc_69*
ls -l /lib/firmware/i915/ehl_huc_9*
ls -l /lib/firmware/i915/icl_dmc_ver1_09*
返回:
-rw-r--r-- 1 root root 343360 May 13 11:44 /lib/firmware/i915/ehl_guc_69.0.3.bin
-rw-r--r-- 1 root root 498880 May 13 11:44 /lib/firmware/i915/ehl_huc_9.0.0.bin
-rw-r--r-- 1 root root 25952 May 13 11:44 /lib/firmware/i915/icl_dmc_ver1_09.bin
开启核显低功耗编码 HuC 和 GuC
编辑grub配置文件,强制开启 HuC 和 GuC:
nano /etc/default/grub
找到并修改 GRUB_CMDLINE_LINUX_DEFAULT="" 为:
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=3 quiet"
然后更新grub菜单:
update-grub
或者:
grub-mkconfig -o /boot/grub/grub.cfg
重启:
reboot
补充说明:guc引导项不同的参数不同的作用,具体如下:
i915.enable_guc=1 ## 启用GuC提交和电源管理
i915.enable_guc=2 ## 只启用HuC认证
i915.enable_guc=3 ## 将两个功能结合在一起
在内核4.16之前,HuC认证是通过设置:
i915.enable_guc_loading=1 ##4.16之前使用此参数开启huc认证
经过测试,如果/etc/default/grub这里设置i915.enable_guc=2,GuC submission会是disabled,不确定是否会影响硬件转码,就还是设置为3吧。
至此,核显设置就安装完成了。
重启后,验证低功耗编码HuC和GuC是否开启:
journalctl -b -o short-monotonic -k | egrep -i "i915|dmr|dmc|guc|huc"
返回:
[ 0.000000] debian kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-5.18.0-2-amd64 root=UUID=1ac9bedb-49b8-4a86-b4e5-72b33eb78abd ro intel_iommu=on i915.enable_guc=3 quiet
[ 0.043744] debian kernel: Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.18.0-2-amd64 root=UUID=1ac9bedb-49b8-4a86-b4e5-72b33eb78abd ro intel_iommu=on i915.enable_guc=3 quiet
[ 3.509988] debian kernel: Setting dangerous option enable_guc - tainting kernel
[ 3.509991] debian kernel: Setting dangerous option enable_guc - tainting kernel
[ 3.511534] debian kernel: i915 0000:0b:00.0: [drm] VT-d active for gfx access
[ 3.511543] debian kernel: i915 0000:0b:00.0: vgaarb: deactivate vga console
[ 3.511906] debian kernel: i915 0000:0b:00.0: [drm] Transparent Hugepage mode 'huge=within_size'
[ 3.514195] debian kernel: i915 0000:0b:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
[ 3.514202] debian kernel: i915 0000:0b:00.0: [drm] Failed to find VBIOS tables (VBT)
[ 3.514250] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 3.525794] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 3.525952] debian kernel: i915 0000:0b:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 3.527603] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/icl_dmc_ver1_09.bin
[ 3.528081] debian kernel: i915 0000:0b:00.0: [drm] Finished loading DMC firmware i915/icl_dmc_ver1_09.bin (v1.9)
[ 4.531068] debian kernel: i915 0000:0b:00.0: [drm] failed to retrieve link info, disabling eDP
[ 4.532486] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/ehl_guc_69.0.3.bin
[ 4.533796] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/ehl_huc_9.0.0.bin
[ 4.695205] debian kernel: i915 0000:0b:00.0: [drm] GuC firmware i915/ehl_guc_69.0.3.bin version 69.0
[ 4.695214] debian kernel: i915 0000:0b:00.0: [drm] HuC firmware i915/ehl_huc_9.0.0.bin version 9.0
[ 4.709613] debian kernel: i915 0000:0b:00.0: [drm] HuC authenticated
[ 4.709763] debian kernel: i915 0000:0b:00.0: [drm] GuC submission enabled
[ 4.709766] debian kernel: i915 0000:0b:00.0: [drm] GuC SLPC disabled
[ 4.712512] debian kernel: [drm] Initialized i915 1.6.0 20201103 for 0000:0b:00.0 on minor 0
[ 6.089740] debian kernel: i915 0000:0b:00.0: [drm] Cannot find any crtc or sizes
[ 6.090267] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 7.459136] debian kernel: i915 0000:0b:00.0: [drm] Cannot find any crtc or sizes
[ 7.459592] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 8.863108] debian kernel: i915 0000:0b:00.0: [drm] Cannot find any crtc or sizes
[ 21.078282] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 21.078426] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 31.311088] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 31.314778] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
[ 32.698143] debian kernel: i915 0000:0b:00.0: [drm] ERROR VBT claims to have both internal and external displays on PHY A. Configuring for internal.
因为之前并没有在虚拟机里手动导入核显的VBios(这是另外一个复杂的工程),所以有一堆的和VBT有关的ERROR,这可能就是虚拟机不能开启图形界面的原因,会导致虚拟机系统进入图形界面时直接卡死。还好我们只是把核显用来解码和编码,最关心的HuC和GuC都成功开启了:
[ 4.532486] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/ehl_guc_69.0.3.bin
[ 4.533796] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/ehl_huc_9.0.0.bin
[ 4.695205] debian kernel: i915 0000:0b:00.0: [drm] GuC firmware i915/ehl_guc_69.0.3.bin version 69.0
[ 4.695214] debian kernel: i915 0000:0b:00.0: [drm] HuC firmware i915/ehl_huc_9.0.0.bin version 9.0
[ 4.709613] debian kernel: i915 0000:0b:00.0: [drm] HuC authenticated
[ 4.709763] debian kernel: i915 0000:0b:00.0: [drm] GuC submission enabled
特别提示:如果上面的日志里有错误提示加载某个固件.bin不成功,请仔细核对一下文件路径、文件名、文件大小和文件权限,按照日志里的提示到相应的地址下载对应的固件文件,上传到/lib/firmware/i915并设置好文件权限即可。
六、安装PLEX服务端
默认情况下,Plex 在 Ubuntu 22.04 基础存储库中不可用。现在运行以下命令将 Plex 存储库添加到您的 Ubuntu 系统:
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
接下来,导入 GPG 密钥:
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
启用存储库后,现在使用以下命令安装最新版本的 Sublime Text:
sudo apt update
sudo apt install plexmediaserver
成功安装后,启用 Plex(系统启动时自动启动)、启动并使用以下命令验证状态:
sudo systemctl enable plexmediaserver
sudo systemctl start plexmediaserver
sudo systemctl status plexmediaserver
成功安装后,打开您的 Web 浏览器并使用 URL 访问 Plex Web 界面。您将被重定向到以下页面:http://your-IP-address:32400/web
PLEX更新版本的方法
下载最新安装包
wget https://downloads.plex.tv/plex-media-server-new/1.31.1.6733-bc0674160/debian/plexmediaserver_1.31.1.6733-bc0674160_amd64.deb
安装更新包
apt install /root/plexmediaserver_1.31.1.6733-bc0674160_amd64.deb
用root用户运行这个命令就可以将最新的文件更新到系统,而且不需要停止服务或者重启服务。
文件名可以是当前目录的文件名,也可以加上路径
运行后会询问是否更新,输入y就可以了。
plex重启命令
systemctl restart plexmediaserver
看的我热血沸腾啊https://www.237fa.com/