生生不息

生生不息

PVE8.1下-LXC容器创建与核显直通

14
2024-09-30
PVE8.1下-LXC容器创建与核显直通

背景

之前尝试直接创建虚拟机,发现虚拟化核显添加无反应,找不到/dev/dri。

又不想用图形化系统。

所以使用自带的LXC容器引擎, 在为其直通宿主机(intel)核显并在其中部署Docker应用调用核显加速计算.

基于LXC容器引擎, 部署基于ubantu22.04的容器

下载ct模板

42.png
好了 备用

容器创建

  1. 登录PVE的WebUI, 选择pve节点, 然后点击创建CT

分别设置主机名, 取消勾选 无特权容器, 设置此lxc的root用户密码; 然后点击下一步
43.png
模板选择前面下载好的ubantu, 然后点击下一步
44.png
选择磁盘位置与允许使用的大小(上限,改为32GB), 然后点击下一步
45.png
设置CPU使用核心数, 根据需要分配, 这里修改为6; 然后点击下一步
46.png
内存上限可以设置大些(实际运行只会占用很少, 不用担心设置大了RAM不够分), 交换分区可以根据需要设置; (我分别设置了8g和4g)然后点击下一步
47.png
分别设置容器的IP/网关信息, 然后取消勾选防火墙选项, 避免莫名远程访问问题;我选择了没有占用的104(路由器可以看到当前被使用的ip), 然后点击下一步
48.png
DNS页面保持模拟, 然后点击下一步
确认页面检查下配置, 确认没有问题后,点击完成开始创建LXC容器

可选配置

SSH远程访问服务

lxc容器控制台登录shell
用户名为root,密码是前面创建时设置的。

开启ssh工具root登录

sudo systemctl restart sshd

修改2处
49.png
保存退出

重启sshd

![49.png](https://roim-picx-bpc.pages.dev/rest/pL8UVHK.png)

测试mobaxterm登录
50.png

配置国内源

sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup
sudo vim /etc/apt/sources.list
# 添加内容
"""
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
"""

旁路网关设置

前面创建时已经设置了静态ip,后续我们使用docker时,会出现拉去镜像失败,我们提前设置走旁路网关,就不会了,等于给docker一个代理。

lxc直接关机,进入pve面板设置
51.png
如图点击修改原来的主路由31.1为旁路网关的31.2。
52.png
dns如图设置。

开机进入shell,测试
测试是否可以谷歌
wget/ping google.com
笔者ping没有延迟,但是wget可以下载到页面,说明走了旁路。

虚拟化核显直通

驱动安装与配置调整

驱动安装的主要过程与PVE8.2下配置SR-IOV虚拟核显相似, 主要区别在于不在需要sysfsutils工具库安装以及对应的/etc/sysfs.conf配置.

系统信息查看

ubuntu22.04 LTS使用的内核为6.5.13-3, 与PVE8.2内核(我降级的)版本一摸一样

# 系统
cat /etc/os-release
# 内核
uname -ar

APT软件源索引更新与必要工具软件安装

apt update
apt install -y git build-* dkms # 必要编译工具安装

设置环境变量

KERNEL=$(uname -r); KERNEL=${KERNEL%-generic}
echo ${KERNEL}

核显虚拟化驱动项目的源码下载与配置修改(需要切换root执行)

# 切换到root
sudo -i

# 进入root家目录, 下载驱动项目源码
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd ~/i915-sriov-dkms

# 备选操作
# 2024.04.20最新commit的版本编译安装阶段可能导致失败, 相关问题issue暂未解决
# 建议切换到2023.12月份的版本尝试, 可以执行如下代码, 之后再继续操作
git checkout cdb1399821e942db6fcc2b8322da72b517a9bc0d

# 修改项目配置
cp -a ~/i915-sriov-dkms/dkms.conf{,.bak}
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' ~/i915-sriov-dkms/dkms.conf
# sed -i 's/ -j$(nproc)//g' ~/i915-sriov-dkms/dkms.conf

# 查看修改后结果
cat ~/i915-sriov-dkms/dkms.conf

53.png
DKMS添加驱动源码管理并安装部署