PVE 直接安装最新版 Kodi

本文为原创教程,转载请注明来源及作者。
更新于2023年8月4日,以当前最新的PVE 8为示例。

本文同步发表在我的个人博客https://devome.github.io/blog

  • 按照本教程,可以保持PVE全部套件稳定的同时,又能够使用最新版Kodi;
  • 没有安装任何桌面系统或其他什么软件包,对PVE环境的影响可以忽略不计;
  • 不用直通显卡,退出Kodi就是PVE的控制台,在出现故障时排故更容易,要是把显卡给直通给虚拟机了,PVE控制台上啥也看不到,如果这时ssh还出问题了的话,你根本就无法排故;
  • 少了虚拟机这一层,减少了资源损耗,Kodi在PVE中运行初始只需要200M左右内存;
  • 音频可以在Kodi中设置通过HDMI直通,支持7.1声道无压力,而如果采用直通核显及声卡给LibreELEC虚拟机的话,在LibreELEC中音频可能就无法通过HDMI直通,只能委屈巴巴的用2.0声道;
  • 另外,如果使用蓝牙遥控器的话,反应速度比在虚拟机中直通蓝牙适配器要快,体验要好很多。

安装最新版Kodi

注:本文是以GBM模式安装的Kodi,这种模式目前也已支持HDR。

不需要如同网上其他教程一般,安装xinitxfcelightdmgnome等等一系列桌面系统才需要的软件包,直接安装Kodi就好了。尽量不装无关的包,这对PVE系统比较重要。

并且网上的教程全是安装Debian官方仓库自带的Kodi,但因为Debian的特色,官方稳定仓库中的Kodi版本比较老。所以有的博主自作主张启用了Debian的sid不稳定仓库,以便使用新版Kodi,这对PVE环境来说是不可取的,不建议这么做。

事实上在Debian稳定版本上也是可以安装最新版的Kodi的,主要来自一个专门负责维护多媒体软件的仓库:https://www.deb-multimedia.org,国内连接较差,不用担心,有一堆镜像站可以使用。以下基于PVE 8.x(Debian bookworm)并以北外镜像站为例(其他版本请修改bookworm为对应的版本号):

# 信任keyring
cd ~
wget https://mirrors.bfsu.edu.cn/debian-multimedia/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
dpkg -i deb-multimedia-keyring_2016.8.1_all.deb

# 添加仓库
echo "deb https://mirrors.bfsu.edu.cn/debian-multimedia bookworm main non-free" > /etc/apt/sources.list.d/multimedia.list
echo "deb https://mirrors.bfsu.edu.cn/debian-multimedia bookworm-backports main" >> /etc/apt/sources.list.d/multimedia.list

# 安装最新稳定版Kodi
apt update
apt install -y va-driver-all pipewire-audio kodi  # va-driver-all是硬解需要的,Kodi 20还需要额外安装pipewire,Kodi 19及以下版本应该不需要

注:各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源安装最新版本为例:

# 查看所有版本
apt update
apt policy kodi

# 输出
kodi:
  Installed: 5:19.5-dmo0+deb11u2
  Candidate: 5:19.5-dmo0+deb11u2
  Version table:
     5:20.2-dmo~bpo11+1 100
        100 https://mirrors.bfsu.edu.cn/debian-multimedia bullseye-backports/main amd64 Packages
 *** 5:19.5-dmo0+deb11u2 500
        500 https://mirrors.bfsu.edu.cn/debian-multimedia bullseye/main amd64 Packages
        100 /var/lib/dpkg/status
     5:18.9-dmo0+deb10u1 500
        500 https://mirrors.bfsu.edu.cn/debian-multimedia bullseye/main amd64 Packages
     2:19.1+dfsg2-2+deb11u1 500
        500 https://mirrors.bfsu.edu.cn/debian bullseye/main amd64 Packages

# 上面的输出内容显示最新的版本位于bullseye-backports中,所以这时要安装最新版本需要指定backports源,如下
apt install -t bullseye-backports -y kodi

国内其他镜像站如清华TUNA中科大USTC腾讯云国家互联网络信息中心北交南大等站点都是有deb-multimedia仓库的,改成你下载最快的镜像站点即可。

设置开机启动

新建/etc/systemd/system/kodi.service,内容如下(请直接在Linux环境中创建,不要在Windows环境中创建):

[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 = root
Group = root
ExecStart = /usr/bin/kodi
ExecStop = /usr/bin/killall --user root --exact --wait kodi.bin
TimeoutStartSec = infinity
Restart = on-abort

[Install]
WantedBy = multi-user.target

注:ExecStop这一行,相比使用killall,更推荐使用kodi-send,详见:kodi-send使用相关说明

上面内容中是以root用户启动Kodi的,然后启用开机自动启动即可(无需重启PVE系统,如不启用则需要开机后手动启动),Kodi将在PVE通过HDMI/DP接口连接的显示器/电视机上显示出来:

systemctl enable --now kodi.service

从系统信息中可以看到内核、分辨率、GPU、OPENGL、视窗系统等信息,可以看到视窗系统直接使用GBM,而非X11(下图是在PVE 8上安装的Kodi 20.2的截图,已经明确支持HDR了):

核心数量超过一行的宽度了,字有点重
Kodi 20也支持开关HDR

如何以非root用户运行Kodi

如果以root用户启动Kodi,那么Kodi具有很高的权限,可以关机、重启主机等等,而如果不赋予普通用户这些权限的话,普通用户就不能进行这些关机、重启系统的操作,所以以非root用户启动Kodi还是有必要的。

下文均以用户名evine举例。你可以直接建立一个kodi专用账户,用户名可以就叫kodi

  1. 如果还没有这个用户的话就添加用户,注意家目录不能少

    # 常规用户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
    
  2. 为普通用户设置密码,

    passwd evine  # 替换为你自己创建的用户名,如果设置的shell是/usr/sbin/nologin可以忽略这一步
    
  3. 为用户添加video render audioinput的组权限

    注:如果还需要使用其他类型的设备,则进一步添加其对应的组权限,详见:HOW-TO:Install Kodi for Linux

    usermod -a -G video,render,audio,input evine  # 替换为你自己创建的用户名
    

    有关用户组,可以参见:https://wiki.debian.org/SystemGroups ,解释一下添加的各用户组的用途:

    • video:允许该普通用户使用显示器;
    • render:允许该普通用户使用显卡硬解;
    • audio:允许该普通用户使用音频设备;
    • input:允许该普通用户使用输入设备,如键盘、鼠标、2.4G无线遥控器等。
  4. 如果已经设置了root用户的开机自动启动,需要先禁用它

    systemctl disable --now kodi.service
    
  5. 新建或修改/etc/systemd/system/kodi.service,内容如下(请直接在Linux环境中创建,不要在Windows环境中创建):

    [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使用相关说明

  6. 启用开机自动启动(如不启用则需要开机后手动启动)

    systemctl enable --now kodi.service
    

    注:如Kodi使用smb共享来访问媒体资源,或者是其他服务,可以在启动Koid前判断启动条件是否具备,详见本文最上方的相关教程。

相关命令

# 启动Kodi
systemctl start kodi.service

# 重启Kodi
systemctl restart kodi.service

# 关闭Kodi,可以直接在Kodi界面中点击退出按钮,也可命令行关闭,关闭后就是PVE的控制台
systemctl stop kodi.service

# 查看Kodi的运行状态
systemctl status kodi.service

# 禁用Kodi开机自动启动
systemctl disable kodi.service

# 未来升级Kodi,就直接运行apt命令就好了,简单方便
apt update && apt upgrade

关于音频直通

如果你的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,而未直通的音频将显示正常的轨道信息。如下面图片所示:

AAC未直通
TrueHD直通
DTS-HD直通

关于硬解

如果你是按照上述方式安装的Kodi,那么它将自动检测可以硬解的视频编码并自动设置好,如果你想要了解你的核显到底可以硬解什么编码,可以这样:

## 安装
apt install -y vainfo

## 检测
vainfo

成功硬解的视频,在解码信息上的硬件解码将显示活动,并且解码器使用的是vaapi系列解码器,如下面图片所示:

HEVC/x265硬解
x264硬解

《PVE安装Kodi》系列文章

如果你需要为Kodi配置摇控器,并让遥控器可以控制Kodi启动和停止,那么请参考下列教程。

总结

按上述流程,只主动安装了很少的软件包,根据dpkg-query -L kodi的输出可知,除去Kodi的可执行程序外,Kodi安装的文件主要集中在这几个文件夹:

/usr/lib/x86_64-linux-gnu/kodi
/usr/share/applications/
/usr/share/doc/kodi
/usr/share/man/man1/
/usr/share/metainfo/
/usr/share/xsessions

同时,Kodi的配置文件主要存放在两个地方:

/usr/share/kodi  # 系统级配置
~/.kodi          # 用户级配置

这些文件对系统都谈不上有什么污染,对PVE套件本身一点影响都没有,整体上对PVE环境的影响是完全可控的。

在最后,提醒一下,如果是以root用户启动的,千万要注意在Kodi中将关机、重启等影响PVE主机的命令都按照上面的教程屏蔽掉,要不然你懂的...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容