背景
之前弄了allinone,是时候上docker了。
配置
首先先说一下我的配置吧,
配置大概就是这样,下面说一下主要思路吧,以PVE为基础,做五个虚拟系统,nas、旁路网关、docker载体、桌面OS(linux+win)。
1、旁路网关(已搭建)。我用的是istoreos,,从稳定性的角度来看,目前我也是把他作为旁路网关,主路由还是我的小米AX3000T。
2、docker的载体,我选用的ubuntu的服务器版,之所以选用这个版本,也没什么特别的原因,只是linux的桌面版比较喜欢ubuntu而已,但据说centos服务器版跟稳定一下,不过无所谓吧,我觉得差不多。另外不选择把docker直接安装到PVE里主要还是处于稳定性考虑。
之前已经将12300T核显虚拟了3个分身
计划
在PVE虚拟机模式下, Linux系统使用宿主机基于SR-IOV虚拟的核显. Ubuntu22.04LTS服务器版系统的虚拟机。
虽然近期发布了24.04LTS,但我还是先用旧的吧。
安装 Ubuntu 22.04 LTS
- 安装 Ubuntu 22.04 LTS
手工下载 Ubuntu 22.04 LTS ISO 镜像,阿里云 ISO 镜像下载地址。手工上传到 PVE 系统。
我选择通过 PVE 自动下载 ISO(推荐)
虚拟机创建
在pve节点下新建虚拟机
如图二到十, 虚拟机配置设置
准备在pve节点下新建虚拟机
常规设置页面, 填入虚拟机的名字, 然后点击下一步
选择引导镜像, 首先选择镜像所在存储节点, 然后在镜像列表中选择目标镜像; 之后点击下一步
磁盘设置, 选择存储节点, 磁盘大小后, 点击下一步
CPU设置页面, 修改要分配的核心数, 类别选择host, 然后点击下一步(6)
内存设置, 根据需要调整大小, 然后点击下一步(8192 4096)
络设置, 取消勾选防火墙, 避免远程访问的一些问题; 选择默认的半虚拟化, 然后点击下一步
确认配置无误后, 点击完成
调整虚拟机引导顺序配置, 将系统镜像设置为第一引导选项,之后点击控制台, 启动虚拟机开始系统安装
在控制台页面, 点击start now开始运行虚拟机
虚拟机运行后, 后面是正常的Ubuntu系统安装过程,按提示进行
安装完会提示要移除cd设备
点击左侧工具栏, 电源按钮, Hard Stop强制关机
系统安装完毕后, 需要先停止虚拟机, 修改引导选项, 取消使用iso镜像引导
启动虚拟机
配置国内源(root或sudo权限用户)
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
"""
配置dns和网关
使用旁路网关
刚好讲下ubantu系统
sudo vi /etc/netplan/00-installer-config.yaml
修改前
# This is the network config written by 'subiquity'
network:
ethernets:
enp6s18:
dhcp4: true
version: 2
修改后
# This is the network config written by 'subiquity'
network:
version: 2
renderer: networkd
ethernets:
enp6s18: #your net card
dhcp4: no
addresses: [192.168.31.104/24] # static ip
nameservers:
addresses: [192.168.31.2] # gateway as dns
routes:
- to: default
via: 192.168.31.2 ## gateway
重启网络
sudo netplan apply
测试是否可以谷歌
wget/ping google.com
笔者ping没有延迟,但是wget可以下载到页面,说明走了旁路。
驱动安装与配置调整
驱动安装的主要过程与PVE8.2下配置SR-IOV虚拟核显相似, 主要区别在于不在需要sysfsutils工具库安装以及对应的/etc/sysfs.conf配置.
系统信息查看
ubuntu22.04.4 LTS使用的内核为5.15.0-118-generic, 与PVE8.2内核(我降级的)6.5.13-3-pve版本差的有点大
# 系统
cat /etc/os-release
# 内核
uname -ar
APT软件源索引更新与必要工具软件安装
sudo apt update
sudo apt install -y git build-* dkms # 必要编译工具安装
# 可选
# apt install -y vim
设置环境变量
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
DKMS添加驱动源码管理并安装部署
# 链接内核源代码,并检查状态。确认内核显示已添加。
sudo cp -r ~/i915-sriov-dkms /usr/src/i915-sriov-dkms-$KERNEL
ls /usr/src # 查看
cd /usr/src/i915-sriov-dkms-$KERNEL
sudo dkms add .
dkms status
# 构建新内核并检查状态。验证是否显示已安装。
# 安装内核扩展, 会触发MOK相关设置.
sudo dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 4
构建安装内核扩展, 提示需要安全引导已启用,需要设置MOK,此处随意设置一个不太简单密码即可, 正常只会使用一次.
再输入一遍,确认。