lxc折腾之路 篇一:鱼与熊掌不可兼得
大家好久不见,这次我要写个关于论htpc与media streaming service怎么同时使用Intel核显实现硬件加速的长篇。
首先来水一下。在去年国庆长假,我作死把Intel小主机系统换成了proxmox,然后把核显和声卡直通给debian VM,同时在那上面装docker,实现既能当htpc,又能让jellyfin硬解的小主机。这台小主机的GPU是uhd600,硬解4k h265完全没问题。核显直通是成功了,但是声卡却出问题了,只有插耳机接口才有声音,HDMI却死活不出声音。不甘心的我不停尝试,终于用Ubuntu 18.04的VM从HDMI播出声音。这肯定是kernel的问题。但是18.04已经过了LTS的时限,为了安全,直通给18.04的方案被我放弃,然后去寻找新方案。
在去年圣诞节,我找到了用linux container(lxc)实现使用宿主的显示和播放声音的相关资料。然后经过漫长的学习和阅读还有实验,我成功的在lxc容器中实现了在宿主机上显示容器影像并显卡硬件加速并通过宿主机的HDMI播放声音,而且在另一个lxc容器中安装的docker容器也能使用宿主机的显卡硬件加速。
这是这长篇最重要的事,容器与宿主机共用同个kernel,所以不可能直通。虽然容器可以独立运行GUI,但是却只能用vnc来访问。容器是不可能像虚拟机直通GPU一样,插HDMI到显示屏,就能直接显示虚拟机的影像的。容器要想通过HDMI来显示容器的影像,必需通过宿主机。意思就是宿主机必需要有GUI。具体的我会在那篇说清楚,但是现在你们就看看比喻吧。容器GUI显示在宿主机上,就像在Windows里用沙盒一样,把沙盒全屏,你控制的就是沙盒的GUI。或者就像用Windows连接Linux的vnc并全屏,你直接操作的GUI就是Linux的。你在沙盒或者vnc进行操作时,并不会对宿主机-在这就是对Windows-造成影响。那为什么不用宿主机连接容器或者虚拟机的vnc呢?你见过什么vnc或者rdp能4k30hz还不卡不掉帧的,如果是免费的请麻烦告诉我。
现在开始水下基本知识,这样你们看下去才能明白。
virtual machine与container
虚拟机是一个完整的系统,有自己的kernel。运行时需要占用独立的CPU和RAM。和宿主机还有宿主机上的虚拟机完全隔离,虽然需要使用宿主机的hypervisor。宿主机硬件需要支持虚拟化(Intel VT-x)。
容器使用宿主机的namespaces、Seccomp policies、Chroots、CGroups和kernel,与宿主机和宿主机的其它容器轻度隔离。共享宿主机的CPU和RAM,占用资源比虚拟机少很多。宿主机硬件不需要支持虚拟化(Intel VT-x)。虽说不需要hypervisor,但是container还是属于虚拟化的一种。
#j1900:扶朕起来,朕还能打。
system container与application container
这个分类其实相当模糊。application container注重一个容器一个应用。system container就是一个容器多个应用。
docke注重application container,但是你真的可以在一个docker container里装上完整的GUI当OS用。
lxc注重system container,但是也没拦着你一个容器只装一个应用当application container用。
privileged container和unprivileged container
区别就是privileged container可以挂载硬盘,设置网络,还有一堆需要权限的事。
htpc(home theater PC or media center computer)与media steaming service
我用的media streaming service是jellyfin,所以下面所有的jellyfin都指代media streaming service。
htpc需要什么,可以显示图像和播放声音就行。所以在电脑上装上GUI(graphic user interface)就行了,甚至不需要装GUI,装上mpv就行了。mpv可以直接video output选择drm播放视频,虽然我没试过,但是它写着。
https://mpv.io/manual/stable/#video-output-drivers-drm
media streaming service需要什么,可以通过网络观看或者聆听多媒体就行了。所以随便装个media streaming service就行了。
综上所述要实现htpc+media streaming service,只要在一台电脑上装上GUI和jellyfin就可以了,或者一台电脑装GUI和一台电脑装jellyfin就行了。
那为什么要看这长篇,总结起来就是穷和4k h265和安全。要是我有钱,我还真的买一台电脑来当htpc,但是我有吗,没有。4k h265只要GPU支持硬解就能流畅的看下去了,但是我的小主机只有一个显卡,直通给1个VM,另一个VM就不能用了。接下来讨论下安全。
GUI和media streaming service都可以装在宿主机上,容器中,或者虚拟机中。
当直接安装在宿主机时,应用完全没被隔离。在被黑时,整个宿主机的东西都会被危及。甚至不需要被黑,只要一个人为错误,例如sudo rm -r /,电脑就要重装了。但是这方法是最简单,性能最好的。
当安装在容器时,应用与宿主机轻度隔离。容器在宿主机的权限,只有你赋予它的权限和容器必需的权限。在被黑时,整个容器的东西都会被危及。在没有容器逃逸情况下,宿主机只有与该容器交叉的部分受到危及,当然该容器得是unprivileged container。unprivileged container容器逃逸时,对方只会得到一个叫nobody的用户的权限,nobody的权限就是nothing。我根本就不用privileged container,没调查过。在容器内的人为失误一般不会造成宿主机损失。这方法麻烦,但是不需要宿主机支持虚拟化,还可以避免直通硬件失误造成的系统或者硬件危害。性能有损失,但是很少,只要不玩游戏就感觉不到,播放4k h265完全没问题,对于htpc够用了。所以有人可以用这长篇教的方法测试下3A吗。
当安装在虚拟机中时,应用与宿主机完全隔离。应用能在宿主机出现的情况只有远程控制和虚拟机逃逸了。在被黑时,这个虚拟机的东西都会被危及。在容器内的人为失误一般不会造成宿主机损失。这方法很麻烦还看人品,成功就是成功,失败就是失败,硬件必需支持虚拟化。性能损失应该是3个里最大的。
htpc被黑一般都是使用的人搞的,像点到什么网站啊,载了什么东西啊,装了什么不知明的玩意啊,看了什么可疑邮件啊,等等。像漏洞之类出的问题被黑的,一般就是那些不更新安全补丁,或者还在用过期的系统,之外的我就挺少见的。要是零日漏洞的话,说实话我也不知道怎么办。
media streaming service就是为了在外网访问的。众所周知,当一个服务暴露在公网就是个安全隐患。像扫描端口,脚本批量尝试弱密码登录,之类的硬突破行为比比皆是。所以干这事得先做好最坏的打算。当然这长篇并不会讨论关于暴露公网的相关安全问题。
所以为了4k h265硬解和安全,把直接安装在宿主机和同时安装在同个虚拟机或者容器的情况排除。现在来看GUI和jellyfin的怎么塞进一台只有一个核显的电脑里。
GUI安装在宿主机的一个容器中,jellyfin安装在宿主机的另一个容器中
GUI安装在宿主机的虚拟机中的一个容器中,jellyfin安装在同个虚拟机的另一个容器中
GUI直接安装在宿主机的虚拟机上,jellyfin安装在同个虚拟机的容器中
你如果特别熟悉terminal的话,用mpv vo=drm播放视频
为什么不考虑安装在同个容器的不同子容器中,因为浪费。
最安全的方法就是方案2,不过真的得看人品。反正我是不行的,我只有方案1可选。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
卖女孩的火柴棍
二,后面有其他大佬建议,原因在于之前囫囵吞枣,应该得回归基础,找几本书看看。。。
三,目前执行中,但书本看过的内容很快就忘,没啥感觉,对python及其第三库规则or参数还是不甚了解。。。
四,本人非系统开发方向,非程序员,但需要python做统计分析、数据挖掘、规则策略和算法建模,so应该咋办?求指导
校验提示文案
卖女孩的火柴棍
一、数据导入
二、数据预处理(清洗规整、增删改查、数据类型转化)
三、探索分析(可视自动化)
四、特征衍生(组合变量批量自动化生成、特征筛选指标评估自动化)
五、分箱筛选(变量分箱最优自动化)
六、相关性构建(多类算法聚合:逻辑、回归、分类&机器学习、深度学习、强化学习
七、检验评测(第六项计算各自的混淆矩阵指标,自动化计算结果)
八、分数转换
九、超参调优
so针对第二至七项,就python及其第三方库(自动化)实操详解的电子书及其代码而言,特跪求大佬推荐。。。非AI或者chatgpt+XX系列,书籍需求具体如下:
1、小白速成上手、简单易懂
because:文科转型
2、行业内公认靠谱,电子书中文版(暂不考虑:单个某库的说明书)
because:内容忒多繁杂,且无常用算法库的聚合呈现
3、需要2023年出版
because:即使按书实操,旧版书均因为其所涉之第三方库的灭失、相同操作而新旧版本不适配、新旧版本变更操作等原因而导致无法实现同等功能)
校验提示文案
卖女孩的火柴棍
二,后面有其他大佬建议,原因在于之前囫囵吞枣,应该得回归基础,找几本书看看。。。
三,目前执行中,但书本看过的内容很快就忘,没啥感觉,对python及其第三库规则or参数还是不甚了解。。。
四,本人非系统开发方向,非程序员,但需要python做统计分析、数据挖掘、规则策略和算法建模,so应该咋办?求指导
校验提示文案
卖女孩的火柴棍
一、数据导入
二、数据预处理(清洗规整、增删改查、数据类型转化)
三、探索分析(可视自动化)
四、特征衍生(组合变量批量自动化生成、特征筛选指标评估自动化)
五、分箱筛选(变量分箱最优自动化)
六、相关性构建(多类算法聚合:逻辑、回归、分类&机器学习、深度学习、强化学习
七、检验评测(第六项计算各自的混淆矩阵指标,自动化计算结果)
八、分数转换
九、超参调优
so针对第二至七项,就python及其第三方库(自动化)实操详解的电子书及其代码而言,特跪求大佬推荐。。。非AI或者chatgpt+XX系列,书籍需求具体如下:
1、小白速成上手、简单易懂
because:文科转型
2、行业内公认靠谱,电子书中文版(暂不考虑:单个某库的说明书)
because:内容忒多繁杂,且无常用算法库的聚合呈现
3、需要2023年出版
because:即使按书实操,旧版书均因为其所涉之第三方库的灭失、相同操作而新旧版本不适配、新旧版本变更操作等原因而导致无法实现同等功能)
校验提示文案