关于一篇 N100 如何在 ESXi linux PMS实现硬解 可以作为教程的记录 - Tosslog/PlexMediaServer GitHub Wiki
此篇文章比较长重在内容理解,看不懂照抄即可。
文中将出现 PMS 即 Plex Media Server 缩写 后续不在追述。
为什么用 ESXi+PMS+NFS? 数据分离拆开比较方便互不影响。
为什么用 ESXi+PMS? 因为我环境的问题 你可以不用ESXi 直接裸装linux
为什么用 linux?因为windows 我试过了没成功 而且windows 自身就要吃掉一大部分硬件资源
1. 部分章节会有小节不在追述。
2. 部分章节中会出现环环相扣的情况 如某些配置需要再之前的环境配置完毕后
才可继续配置。
- Part 1.1 ESXi 的N100核显直通
- Part 1.2 虚拟机PCI设置
- Part 2.1 Debian12 英特尔N100核显配置
- Part 2.2 Debian12 中安装 PMS 服务
- Part 3.1 配置群晖 NFS 服务
- Part 3.2 配置群晖 NFS 文件夹权限与角色映射
- Part 4 Debian12 挂载群晖 NFS 路径
- ssh 进入 ESXi 输入一条命令(须注意英文的大小写和空格)后重启重新直通一次核显即可
esxcli system settings kernel set -s vga -v FALSE
- 添加高级参数
#代表告诉机器不是虚拟机是物理机
hypervisor.cpuid.v0=FALSE
- 查看核显是否被驱动
- 如果开着虚拟显卡 card0就是虚拟显卡 card1 是CPU核显
# ls -l /dev/dri
drwxr-xr-x 2 root root 120 1月 6日 14:14 by-path
crw-rw---- 1 root video 226, 0 1月 6日 14:14 card0
crw-rw---- 1 root video 226, 1 1月 6日 14:14 card1
crw-rw---- 1 root render 226, 128 1月 6日 14:14 renderD128
crw-rw---- 1 root render 226, 129 1月 6日 14:14 renderD129
- 开启低功耗解码
# vim /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet" 把原先的这行注释掉在下面新建一行
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=7 quiet"
i915.enable_guc=0:禁用GuC和HuC。
i915.enable_guc=1:启用GuC提交和电源管理1。
i915.enable_guc=2:只启用HuC认证1。
i915.enable_guc=3:启用GuC和HuC。
i915.enable_guc=4:未找到相关信息。
i915.enable_guc=5:未找到相关信息。
i915.enable_guc=6:未找到相关信息。
i915.enable_guc=7:启用GuC和HuC2。
这些参数默认情况下不启用,除非在Intel gen12+平台在内核中
- 重启虚拟机
systemctl reboot
# apt-get update && apt install xserver-xorg-video-intel -y
# apt-get update && apt install mesa-utils -y
# apt-get update && apt install libdrm-intel1 -y
# apt-get update && apt install intel-media-va-driver-non-free
# apt update && sudo apt install ffmpeg vainfo intel-gpu-tools -y
# apt install -t bookworm-backports mesa-va-drivers mesa-vdpau-drivers libgl1-mesa-dri
- 安装工具 运行脚本后 至少要看到下列内容 否则基本安装不成功
# apt-get update && apt-get install intel-gpu-tools -y
正在设置 libpixman-1-0:amd64 (0.42.2-1) ...
正在设置 libpciaccess0:amd64 (0.17-2) ...
正在设置 libdw1:amd64 (0.188-2.1) ...
正在设置 libdrm-nouveau2:amd64 (2.4.114-1+b1) ...
正在设置 libxrender1:amd64 (1:0.9.10-1.1) ...
正在设置 libxcb-render0:amd64 (1.15-1) ...
正在设置 libxcb-shm0:amd64 (1.15-1) ...
正在设置 libunwind8:amd64 (1.6.2-3) ...
正在设置 libxv1:amd64 (2:1.0.11-1.1) ...
正在设置 fonts-dejavu-core (2.37-6) ...
正在设置 libdrm-amdgpu1:amd64 (2.4.114-1+b1) ...
正在设置 fontconfig-config (2.14.1-4) ...
正在设置 libfontconfig1:amd64 (2.14.1-4) ...
正在设置 libcairo2:amd64 (1.16.0-7) ...
正在设置 intel-gpu-tools (1.27.1-1) ...
正在处理用于 man-db (2.11.2-2) 的触发器 ...
正在处理用于 libc-bin (2.36-9+deb12u3) 的触发器 ...
- 查看运行状态 出现下列信息表示安装成功
# intel_gpu_top
intel-gpu-top: Intel Alderlake_n (Gen12) @ /dev/dri/card1 - 0/ 0 MHz; 100% RC6; 0 irqs/s
ENGINES BUSY MI_SEMA MI_WAIT
Render/3D 0.00% | | 0% 0%
Blitter 0.00% | | 0% 0%
Video 0.00% | | 0% 0%
VideoEnhance 0.00% | | 0% 0%
参考文献(国外站):Install-Plex-Media-Server-on-Debian-12-11-or-10-via-APT
- 在这里我将直接摘录原文中我所使用过的命令,有其他需求的请自行前往原文参考。
- Plex 安装需要一些额外的软件包。通过运行以下命令来安装它们:
- 这些软件包将提供用于处理 Plex 存储库的工具,包括安全连接和 GPG 密钥管理。
# apt update && apt upgrade && apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
- 将 Plex 存储库添加到您的 Debian 系统,以从官方源代码安装 Plex。这可确保您使用 APT 软件包管理器直接从官方存储库安装和更新软件。
- 首先,打开终端并使用以下命令导入 Plex GPG 密钥:
- 此命令下载 Plex GPG 密钥,该密钥用于验证存储库中软件包的真实性。
- 将 Plex 存储库添加到您的系统中: 此命令在目录中创建一个新文件,其中包含有关 Plex 存储库的必要信息。sources.list.d
# curl -fsSL https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | tee /usr/share/keyrings/plex.gpg > /dev/null && echo "deb [signed-by=/usr/share/keyrings/plex.gpg] https://downloads.plex.tv/repo/deb public main" | tee /etc/apt/sources.list.d/plexmediaserver.list
- 现在您可以使用以下命令在 Debian 上安装 Plex Media Server:
# apt update && apt upgrade && apt install plexmediaserver
在安装过程中,您可能会看到一个提示,询问您是否要将导入的存储库列表替换为 Plex。
键入“N”继续安装,因为您不想替换导入的存储库列表。这是因为正确的 GPG 签名密钥已经到位。
PlexMediaServer install: Pre-installation Validation.
PlexMediaServer install: Pre-installation Validation complete.
正在解压 plexmediaserver (1.32.8.7639-fb6452ebf) ...
正在设置 plexmediaserver (1.32.8.7639-fb6452ebf) ...
PlexMediaServer install: PlexMediaServer-1.32.8.7639-fb6452ebf - Installation starting.
PlexMediaServer install:
PlexMediaServer install: Now installing based on:
PlexMediaServer install: Installation Type: New
PlexMediaServer install: Process Control: systemd
PlexMediaServer install: Plex User: plex
PlexMediaServer install: Plex Group: plex
PlexMediaServer install: Video Group: render
PlexMediaServer install: Metadata Dir: /var/lib/plexmediaserver/Library/Application Support
PlexMediaServer install: Temp Directory: /tmp
PlexMediaServer install: Lang Encoding: en_US.UTF-8
PlexMediaServer install: Processor: Intel(R) N100
PlexMediaServer install: Intel i915 Hardware: Found
PlexMediaServer install: Nvidia GPU card: Not Found
PlexMediaServer install:
PlexMediaServer install: Completing final configuration.
Created symlink /etc/systemd/system/multi-user.target.wants/plexmediaserver.service → /lib/systemd/system/plexmediaserver.s
PlexMediaServer install: PlexMediaServer-1.32.8.7639-fb6452ebf - Installation successful. Errors: 0, Warnings: 0
正在处理用于 mailcap (3.70+nmu1) 的触发器 ...
-
安装结束后 显示的 Intel i915 Hardware: Found 就是之前配置 i915.enable_guc=7 与它协作的配置
-
如果服务未处于活动状态,请使用以下命令启动 Plex Media Server:
# systemctl start plexmediaserver
- 如果停止服务,请使用以下命令启动 Plex Media Server:
# systemctl stop plexmediaserver
- 要确保 Plex Media Server 在系统启动时自动启动,请使用以下命令启用该服务:
# systemctl enable plexmediaserver
- 取消 Plex Media Server 在系统启动时自动启动,请使用以下命令启用该服务:
# systemctl disable plexmediaserver
- 如果出于任何原因需要重新启动 Plex Media Server 服务,请使用以下命令:
# systemctl restart plexmediaserver
- 使您的 Plex 媒体服务器保持最新状态,以确保您拥有最新功能、错误修复和安全补丁。
- 若要检查更新,请运行以下命令:
# apt update && apt upgrade plexmediaserver
- 如果您不再希望使用 Plex 并希望将其从 Debian 系统中删除,请按照以下步骤操作。
- 执行以下命令以从系统中删除 Plex Media Server:
# apt remove plexmediaserver
- 安装nfs
# apt update && apt install nfs-common -y
- 创建挂载路径
- 目录中不要出现中文 空格 与特殊字符
# mkdir /mnt/diskname (diskname是你想使用的映射盘名字)
- 开机自动挂载硬盘
# vim /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p2 during installation
UUID=9c468a8e-ab4d-472f-a19b-6e77aefe2570 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=8826-2047 /boot/efi vfat umask=0077 0 1
# swap was on /dev/nvme0n1p3 during installation
UUID=38347ab5-c8e0-4453-8cf8-7d9537e11e70 none swap sw 0 0
# Plex Media Server Mount Synology NFS v4.1 32k
# Synology NFS Path Local Path 类型 只读,异步,软连接,无锁,等待网络 default default
192.168.2.85:/volume3/Disk-ZDH39B6K /mnt/Disk-ZDH39B6K nfs ro,async,soft,nolock,_netdev 0 0
192.168.2.85:/volume4/Disk-ZDH3D8W4 /mnt/Disk-ZDH3D8W4 nfs ro,async,soft,nolock,_netdev 0 0
192.168.2.85:/volume5/Disk-ZDH39755 /mnt/Disk-ZDH39755 nfs ro,async,soft,nolock,_netdev 0 0
- 执行fstab配置 进行挂载,如生产中添加挂载目录也是同样的操作
# su
# systemctl daemon-reload
# mount -a
-部分机器开机可能会出现没有自动挂载情况的使用下面脚本 有两个脚本 分别为 install.sh amount.sh 两个文件都放在 根目录下的 amount路径下即 /amount/install.sh /amount/amount.sh
- install.sh
#!/bin/bash
# 创建服务文件
cat << EOF > /etc/systemd/system/amount.service
[Unit]
Description=Check Network Connectivity
[Service]
# 脚本路径
ExecStart=/amount/amount.sh
# 开机启动
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd,使其读取新的服务文件
systemctl daemon-reload
# 启动服务
systemctl start amount
# 设置服务在开机时自动启动
systemctl enable amount
- amount.sh
#!/bin/bash
# 检测网络链接畅通
function network() {
# 目标 IP
local target=192.168.2.85
# ping 命令检测网络
if ping -c 1 ${target} &> /dev/null
then
# 网络畅通
return 1
else
# 网络不畅通
return 0
fi
}
# 循环检测网络,直到网络畅通
while true; do
network
if [ $? -eq 1 ];then
echo "网络畅通,开始执行 mount -a 命令"
sudo mount -a
exit 0
else
echo "网络不畅通,继续检测..."
sleep 5
fi
done
- 查看挂载结果
# df -h
文件系统 大小 已用 可用 已用% 挂载点
udev 1.9G 0 1.9G 0% /dev
tmpfs 392M 612K 391M 1% /run
/dev/sda2 195G 2.3G 183G 2% /
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 511M 5.9M 506M 2% /boot/efi
tmpfs 392M 0 392M 0% /run/user/1000
192.168.2.100:/volume1/Media/电影/单片电影/s 11T 11T 449G 96% /mnt/test
- 查看plex 目录 占用空间脚本
#!/bin/sh
echo "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv"
echo ""
echo "Plex Media Server"
du -sh /var/lib/plexmediaserver
echo ""
echo "Media:这个目录用于存储用户的媒体文件,如电影、电视节目和音乐等"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Media"
echo ""
echo "Cache :此目录用于存储临时数据,例如缩略图和元数据"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache"
echo ""
echo "Metadata :这个目录用于存储媒体文件的元数据,如电影的剧情简介、演员列表和封面图片等"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Metadata"
echo ""
echo "Crash Reports:如果 Plex Media Server 崩溃,相关的崩溃报告将会保存在这个目录中"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Crash Reports"
echo ""
echo "Drivers:这个目录包含了 Plex Media Server 运行所需的驱动程序"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Drivers"
echo ""
echo "Plug-in Support:这个目录用于存储和管理 Plex 的插件数据"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support"
echo ""
echo "Scanners:这个目录包含了 Plex 用于扫描媒体内容的工具"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Scanners"
echo ""
echo "Updates:这个目录用于存储 Plex Media Server 的更新文件"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Updates"
echo ""
echo "Codecs:这个目录包含了 Plex 用于解码媒体文件的编解码器"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Codecs"
echo ""
echo "Diagnostics:这个目录用于存储诊断信息,以帮助解决 Plex Media Server 的问题"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Diagnostics"
echo ""
echo "Logs:这个目录用于存储 Plex Media Server 的日志文件,这些文件记录了 Plex 的运行情况和可能的错误。"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Logs"
echo ""
echo "Plug-ins:这个目录用于存储 Plex 的插件文件"
du -sh "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins"
echo ""
echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
- 问题分析:可能是因为启动主机时在核显驱动未加载完成PMS服务已经开始启动导致没有识别到核显驱动。
# systemctl restart plexmediaserver
- 停止自动启动PMS服务
systemctl disable plexmediaserver
- 在创建脚本
vim /etc/systemd/system/pms_sleep_start.service
- 填入下方内容
# Description是你自定义的服务描述,可以根据需求进行修改。
# After指定服务应在哪个系统目标(target)之后启动,这里是network.target。
# Type表示服务的类型,这里使用simple表示是一个简单的后台程序。
# ExecStartPre使用sleep命令来引入延时,这里设置为10秒,你可以根据需要自行调整。
# ExecStart是你想要延迟启动的命令,需替换为你自己的命令路径。
# WantedBy指定服务所属的目标,这里设为multi-user.target,即多用户模式。
[Unit]
Description=Plex Media Service 延迟启动服务,作用防止无法加载核显
After=network.target
[Service]
Type=simple
ExecStartPre=/bin/sleep 10
ExecStart=systemctl start plexmediaserver
[Install]
WantedBy=multi-user.target
- 重新加载服务
systemctl daemon-reload
- 设置开机启动服务
systemctl enable pms_sleep_start
- 重启主机
systemctl reboot
- 查看服务是否运行成功
journalctl -u pms_sleep_start