本文为原创教程,转载请注明来源及作者。 更新于2023年8月4日,以当前最新的PVE 8为示例。
- 按照本教程,可以保持PVE全部套件稳定的同时,又能够使用最新版Kodi;
- 没有安装任何桌面系统或其他什么软件包,对PVE环境的影响可以忽略不计;
- 不用直通显卡,退出Kodi就是PVE的控制台,在出现故障时排故更容易,要是把显卡给直通给虚拟机了,PVE控制台上啥也看不到,如果这时ssh还出问题了的话,你根本就无法排故;
- 少了虚拟机这一层,减少了资源损耗,Kodi在PVE中运行初始只需要200M左右内存;
- 音频可以在Kodi中设置通过HDMI直通,支持7.1声道无压力,而如果采用直通核显及声卡给LibreELEC虚拟机的话,在LibreELEC中音频可能就无法通过HDMI直通,只能委屈巴巴的用2.0声道;
- 另外,如果使用蓝牙遥控器的话,反应速度比在虚拟机中直通蓝牙适配器要快,体验要好很多。
安装最新版Kodi
注:本文是以GBM模式安装的Kodi,这种模式目前也已支持HDR。
不需要如同网上其他教程一般,安装xinit
、xfce
、lightdm
、gnome
等等一系列桌面系统才需要的软件包,直接安装Kodi就好了。尽量不装无关的包,这对PVE系统比较重要。
并且网上的教程全是安装Debian官方仓库自带的Kodi,但因为Debian的特色,官方稳定仓库中的Kodi版本比较老。所以有的博主自作主张启用了Debian的sid不稳定仓库,以便使用新版Kodi,这对PVE环境来说是不可取的,不建议这么做。
事实上在Debian稳定版本上也是可以安装最新版的Kodi的,主要来自一个专门负责维护多媒体软件的仓库:https://www.deb-multimedia.org,国内连接较差,不用担心,有一堆镜像站可以使用。以下基于PVE 8.x(Debian bookworm)并以北外镜像站为例(其他版本请修改bookworm
为对应的版本号):
|
|
注:各PVE对应的Debian版本号如下:
- PVE 5 -> Debian 9 -> stretch
- PVE 6 -> Debian 10 -> buster
- PVE 7 -> Debian 11 -> bullseye
- PVE 8 -> Debian 12 -> bookworm
- PVE 9 -> Debian 13 -> trixie(未来的版本号)
有的时候,在当前debian的版本中,deb-multimedia
会将大版本升级后的Kodi放在backports
源中,如果你发现你安装的Kodi不是当前最新版(见 官方,可以先查询一下看看是不是在backports
源中,再来指定backports
源安装。
因为PVE 8可以直接安装到Kodi 20,所以以下内容以PVE 7从backports
源安装最新版本为例:
|
|
国内其他镜像站如清华TUNA、中科大USTC、腾讯云、国家互联网络信息中心、北交、南大等站点都是有deb-multimedia
仓库的,改成你下载最快的镜像站点即可。
设置开机启动
新建/etc/systemd/system/kodi.service
,内容如下(请直接在Linux环境中创建,不要在Windows环境中创建):
|
|
注:ExecStop
这一行,相比使用killall
,更推荐使用kodi-send
,详见:kodi-send使用相关说明。
上面内容中是以root用户启动Kodi的,然后启用开机自动启动即可(无需重启PVE系统,如不启用则需要开机后手动启动),Kodi将在PVE通过HDMI/DP接口连接的显示器/电视机上显示出来:
|
|
从系统信息中可以看到内核、分辨率、GPU、OPENGL、视窗系统等信息,可以看到视窗系统直接使用GBM,而非X11(下图是在PVE 8上安装的Kodi 20.2的截图,已经明确支持HDR了):
如何以非root用户运行Kodi
如果以root用户启动Kodi,那么Kodi具有很高的权限,可以关机、重启主机等等,而如果不赋予普通用户这些权限的话,普通用户就不能进行这些关机、重启系统的操作,所以以非root用户启动Kodi还是有必要的。
下文均以用户名evine
举例。你可以直接建立一个kodi专用账户,用户名可以就叫kodi
。
-
如果还没有这个用户的话就添加用户,注意家目录不能少
1 2 3 4 5
# 常规用户evine useradd -m -d /home/evine -U -s /usr/bin/bash evine # 如果想建立的是kodi专用账户,也可以放在/var,并禁止登陆 useradd -m -d /var/lib/kodi -U -s /usr/sbin/nologin kodi
-
为普通用户设置密码,
1
passwd evine # 替换为你自己创建的用户名,如果设置的shell是/usr/sbin/nologin可以忽略这一步
-
为用户添加
video
render
audio
和input
的组权限注:如果还需要使用其他类型的设备,则进一步添加其对应的组权限,详见:HOW-TO:Install Kodi for Linux。
1
usermod -a -G video,render,audio,input evine # 替换为你自己创建的用户名
有关用户组,可以参见:https://wiki.debian.org/SystemGroups ,解释一下添加的各用户组的用途:
video
:允许该普通用户使用显示器;render
:允许该普通用户使用显卡硬解;audio
:允许该普通用户使用音频设备;input
:允许该普通用户使用输入设备,如键盘、鼠标、2.4G无线遥控器等。
-
如果已经设置了root用户的开机自动启动,需要先禁用它
1
systemctl disable --now kodi.service
-
新建或修改
/etc/systemd/system/kodi.service
,内容如下(请直接在Linux环境中创建,不要在Windows环境中创建):1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[Unit] Description = Kodi Media Center After = network-online.target polkit.service evsieve.service remote-fs.target systemd-user- sessions.service nss-lookup.target sound.target bluetooth.target upower.service mysqld.service lircd.service Wants = network-online.target polkit.service evsieve.service [Service] User = evine # 依据你自己建立的账户修改 Group = evine # 依据你自己建立的账户修改 ExecStart = /usr/bin/kodi ExecStop = /usr/bin/killall --user evine --exact --wait kodi.bin # 依据你自己建立的账户修改 TimeoutStartSec = infinity Restart = on-abort [Install] WantedBy = multi-user.target
注:
ExecStop
这一行,相比使用killall
,更推荐使用kodi-send
,详见:kodi-send使用相关说明。 -
启用开机自动启动(如不启用则需要开机后手动启动)
1
systemctl enable --now kodi.service
注:如Kodi使用smb共享来访问媒体资源,或者是其他服务,可以在启动Koid前判断启动条件是否具备,详见本文最上方的相关教程。
相关命令
|
|
关于音频直通
如果你的HDMI/DP接收方支持直接解码某些音频,那么可以在Kodi系统设置系统 -> 音频
中,勾选“允许直通输出”后,并在其下方继续勾选你的HDMI/DP接收方支持的音频格式(如果某个格式勾选后该格式的视频播放没有声音,那么就是你的接收方不支持直接解码该音频格式,就不要勾选该格式)。
音频直通最高可以支持7.1全景声,而如果你用Kodi解码后再传递给HDMI/DP,有可能只能支持2.0或2.1声道(对,管你几声道通通转成二声道),这大大降低了视听感受。直通显卡和声卡给虚拟机LibreELEC的,我不确定是否可以实现音频直通,这至少在我的环境中无法实现。
通过HDMI/DP直通的音频,在播放时无法在Kodi中控制音量,只能通过接收方控制。而某些不支持直通的音频,则是通过Kodi解码的,既可以通过Kodi控制音量,也可以通过接收方控制音量。
通过HDMI/DP直通的音频,在解码信息(按键盘的o键,如想在遥控器上按出来,需要在Kodi中安装Keymap Editor插件来将某个按钮映射为此功能)上所有音频频道将显示RAW
,而未直通的音频将显示正常的轨道信息。如下面图片所示:
关于硬解
如果你是按照上述方式安装的Kodi,那么它将自动检测可以硬解的视频编码并自动设置好,如果你想要了解你的核显到底可以硬解什么编码,可以这样:
|
|
成功硬解的视频,在解码信息上的硬件解码
将显示活动
,并且解码器使用的是vaapi
系列解码器,如下面图片所示:
《PVE安装Kodi》系列文章
如果你需要为Kodi配置摇控器,并让遥控器可以控制Kodi启动和停止,那么请参考下列教程。
- PVE 直接安装最新版 Kodi
- 为Kodi适配遥控器
- 修改Kodi字幕字体
- 修改Kodi皮肤字体
- 屏蔽Kodi的关机、重启按钮
- 设置Kodi启动的前置条件
- 像使用盒子/LibreELEC一样使用PVE直装的Kodi,实现遥控器启停
- kodi-send使用相关说明
- 转换遥控器的退出键为返回键
总结
按上述流程,只主动安装了很少的软件包,根据dpkg-query -L kodi
的输出可知,除去Kodi的可执行程序外,Kodi安装的文件主要集中在这几个文件夹:
|
|
同时,Kodi的配置文件主要存放在两个地方:
|
|
这些文件对系统都谈不上有什么污染,对PVE套件本身一点影响都没有,整体上对PVE环境的影响是完全可控的。
在最后,提醒一下,如果是以root用户启动的,千万要注意在Kodi中将关机、重启等影响PVE主机的命令都按照上面的教程屏蔽掉,要不然你懂的…