PVE安装Ubuntu Server 24.04直通SRIOV核显转码、挂载NAS共享文件夹、安装Docker

李文乐
发布于 2024-08-11 / 1500 阅读
0
0

PVE安装Ubuntu Server 24.04直通SRIOV核显转码、挂载NAS共享文件夹、安装Docker

下载所需文件

Ubuntu Desktop的ISO镜像(开始操作之前下载好)

官网下载地址

创建虚拟机

注意:接下来的每一步都严格按照顺序进行,否则有可能安装失败,如果安装失败,删除虚拟机重新安装

上传镜像

登陆到PVE管理界面 ——> local ——> ISO镜像 ——> 上传——> Ubuntu Desktop的ISO镜像、Virtio驱动ISO镜像

创建虚拟机

常规

操作系统

系统

磁盘

名称:(自定义)

ISO镜像:Ubuntu Desktop镜像

机型:q35

总线设备:SCSI

类别:Linux

BIOS:OVMF(UEFI)

磁盘大小:自定义

版本:6.x-2.6Kernel

添加EFI磁盘:✅

格式:原始磁盘映像

EFI存储:local

格式:原始磁盘映像

-

-

CPU

内存

网络

确认

插槽:1

内存(MiB):自定义

桥接:vmbr0

检查一遍

核心:自定义

模型:VirtIO(半虚拟化)

完成

类别:host

取消防火墙勾选

添加SRIOV核显

  • 硬件 ——> 添加 ——> PCI设备 ——> 原始设备 ——> 选择没有被占用的核显 ——> ✅主GPU ——> ✅PCI-Express

  • 硬件——> 显示 ——> VirtIO-GPU

ubuntu server安装

  • Ubuntu虚拟机 ——> 控制台 ——> Start Now

一、 Try or Install Ubuntu Server   【回车】
二、 English   【回车】
三、 English(US)|English(US)   【回车】
四、 Ubuntu Server(minimized)空格选择(最小化安装)   【回车】
五、 IP地址 --> 选择第一个enp6s16|eth(回车) --> Edit IPv4 --> Manual
subnet(子网掩码):10.0.0.0/24
Address(IP地址):10.0.0.5
Gateway(网关):10.0.0.1
Name server(DNS):223.5.5.5
Search domains(备用DNS):198.18.0.2
六、 Proxy address(代理配置可以不填):     【回车】
七、 配置源:Mirror address:https://mirrors.tuna.tsinghua.edu.cn/ubuntu  【默认回车】
八、 Use an entire disk|Set up this disk as an LVM group 默认分区     【默认回车】
九、将所有容量全部分配给 /(更目录),这样就可以让所有空间让ubuntu自由使用了
将 /(更目录)|/boot 全部取消挂载(选择:Unmount)
将 ubuntu-lv 删除(选择:Delete)
新建 LVM 分区,选择freespace --> Create Logical Volume --> Name:默认 --> Size:这个用max的容量减去5个G剩下的填写就行 --> Format:ext4 --> Mount:/ --> Create
新建 /boot 分区,选择freespace --> Create Logical Volume --> Name:默认 --> Size:填写Max后面的数值 --> Format:ext4 --> Mount:/boot --> Create
选择Done --> Continue
十、 Your name:名称liwenle
Your Server‘s name:主机名:ubuntu-24-04
Pick a username:liwenle     # 配置普通用户名
Choose a password:abc123     # 用户名密码
Confirm your password:abc123     # 确认密码
十一、 Skip for now     【默认不升级为pro】
十二、 选择 Install OpenSSH server       【安装SSH,回车】
十三、 后面全部默认回车,直到安装完成
十四、 安装进度条不动了,出现Reboot Now,说明安装完成,选择Reboot Now 进行重启
十五、 重启记得将镜像删除掉
十六、 重启完成就可以连接SSH工具玩耍了

Ubuntu使用

换源

sudo cp /etc/apt/sources.list.d/ubuntu.sources  /etc/apt/sources.list.d/ubuntu.sources.bak   # 备份源

sudo nano /etc/apt/sources.list.d/ubuntu.sources   # 编辑源,在文本编辑器中粘贴下面的源,任选一个
  • 阿里源

# 阿里云
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  • 清华源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  • 中科大源

Types: deb
URIs: http://mirrors.ustc.edu.cn/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  • 网易163源

Types: deb
URIs: http://mirrors.163.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  • 保存编辑内容,更新源列表及软件包:

sudo apt-get update    # 更新源列表
sudo apt-get upgrade    # 更新软件包

安装服务

  • 安装openssh-server,这是SSH服务,安装并开启才能通过SSH工具连接这台Ubuntu

sudo apt update
sudo apt install nano  # 安装nano编辑器
sudo apt install git  # 安装 git 工具
sudo apt install rsync  # 安装 rsync 工具
sudo apt-get install samba  # 安装SMB
  • SSH服务开启、设置、检查

sudo systemctl start ssh  # 启动 SSH 服务
sudo systemctl enable ssh  # 设置 SSH 服务在开机时自动启动
sudo systemctl status ssh  # 检查 SSH 服务状态

# 没有报错说明SSH服务开启成功,按Ctrl+Z退出

更改Ubuntu网络配置

sudo -i
 cd /etc/netplan
 ls
 nano 50-cloud-init.yaml
 
 更改完成后:
 sudo reboot  # 重启Ubuntu

直通SRIOV核显

查看当前ubuntu版本:

lsb_release -a

查看当前ubuntu内核版本:

uname -r

克隆 i915-sriov 仓库:

rm -rf i915-sriov-dkms      # 删除自带的i915驱动

git clone https://github.com/strongtz/i915-sriov-dkms.git       # 拉取第三方GitHub上的i915驱动

cd i915-sriov-dkms     # 进入刚拉取的i915驱动

安装 DKMS 和构建工具:

sudo apt-get update     # 更新软件包
sudo apt-get install build-essential dkms      # 安装dkms构建工具

配置并安装 i915-sriov DKMS 驱动:

sudo -i     # 切换为root
cd /home/liwenle/i915-sriov-dkms    # 进入刚拉取的i915驱动
sudo dkms add .
sudo dkms install -m i915-sriov-dkms -v $(cat VERSION) --force     
# 会弹出:Enter a password for Secure Boot. It will be asked again after a reboot. 直接设置MOK密码,这个密码是英文加数字就行
再次出现:Enter the same password again to verify you have typed it correctly. 再次输入一遍即可

修改内核参数:

sudo nano /etc/default/grub     # 编辑内核grub配置文件

# 改成下面这样
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=3"

更新 GRUB 配置:

sudo update-grub     # 更新grub配置文件

更新 initramfs:

sudo update-initramfs -u     # 更新initramfs

重启系统:

sudo reboot     # 重启使配置生效

开机会弹出MOK登录选项

选择  Enroll MOK   回车
选择  Continue   回车
选择  YES   回车
Password:  输入前面设置的 MOK 密码
进入到 Ubuntu 桌面后直接关机

连接验证 VF 是否被内核识别:

sudo -i     # 切换为root
dmesg | grep i915

ls /dev/dri
# 输出:
by-path  card0  renderD128
说明搞定了

通过SMB挂载NAS目录

  • 安装 cifs-utils:

sudo apt install cifs-utils -y  # 安装 SMB 管理工具
  • 创建挂载目录:

sudo mkdir /NAS        # 这个文件夹下面存放挂载过来的共享目录
sudo chmod -R 777 /NAS        # 给 /NAS 目录赋予写入权限
sudo mkdir -p /NAS/Media  # 这个文件夹下面存放挂载过来的共享目录
  • 创建密码文件:

sudo -i  # 进入到root用户
nano ~/.smbcredentials  # 用户主目录下创建或编辑一个名为 .smbcredentials 的文件
# 编辑账号密码
username=abc  # abc 替换成 NAS 登录账号
password=abc123  # abc123 替换成 NAS 登录密码
# 保存并退出(按 Ctrl+X,然后按 Y,再按回车)
  • 确保文件权限正确

sudo chmod 600 /root/.smbcredentials  # 使其只能被文件的所有者(即 root 用户)读取和写入。这对于存储敏感信息(如用户名和密码)的文件来说是非常重要的,因为它确保其他用户无法读取或修改该文件
  • 修改自动挂载文件 /etc/fstab:

sudo nano /etc/fstab  # 挂载目录配置
# 编辑添加以下内容
#//$smb_server/share /mnt/nas_share cifs credentials=/root/.smbcredentials,iocharset=utf8,uid=1000,gid=1000,dir_mode=0777,file_mode=0777 0 0     # 这是一个设置权限事例,加权限可以在这添加


//10.0.0.8/Media /NAS/Media cifs credentials=/root/.smbcredentials,iocharset=utf8 0 0


# - $smb_server替换成远端smb服务器的ip地址(举个例子,如果是群晖就是输入登陆群晖的IP地址)
# - share替换成远端smb服务器共享出来的文件夹(举个例子,如果是群晖就是输入群晖的任意一个共享文件夹名称)
# - /mnt/nas_share 这个就是前面创建好的存放所有远程挂载过来的文件夹的路径
# - cifs用来注明共享方式是SMB,不需要更改
# - /root/.smbcredentials 这里是前面创建的明文密码存放路径,如果前面是默认的就不需要更改
# - ,uid=1000,gid=1000,dir_mode=0777,file_mode=0777          # 这个是给权限,可读可写可执行
# -  ctrl+x y 回车保存退出
  • 重启系统:

sudo reboot
  • 验证是否挂载成功

df -h /NAS/Media

安装Docker

  • 更新软件包

sudo apt update

如果提示这个警告:

有 83 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
N: Missing Signed-By in the sources.list(5) entry for 'http://cn.archive.ubuntu.com/ubuntu'

执行以下命令:
sudo nano /etc/apt/sources.list  # 首先查看是否有一条用 # 注释的命令,如果有 Ctrl+X退出,再输入以下命令:
sudo truncate -s 0 /etc/apt/sources.list
再次更新软件包:
sudo apt update
如果没有警告,只有以下内容:

有 83 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。

输入以下命令:
apt list --upgradable
sudo apt upgrade
  • 安装依赖包:

sudo apt-get install ca-certificates curl gnupg lsb-release
  • 添加 Docker 的 GPG 密钥:

sudo -i  # 进入到root用户
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  • 添加 Docker 的 APT 软件源(存储库):

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

#如果提示:W: http://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
输入:cd /etc/apt
输入:sudo cp trusted.gpg trusted.gpg.d
#再次执行添加 Docker 的 APT 软件源命令,就不会有这个警告了
  • 更新软件包列表:

sudo apt update
  • 安装 Docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 启动并启用 Docker 服务:

sudo systemctl start docker  # 启动 docker 服务
sudo systemctl enable docker  # 设置 docker 服务在开机时自动启动
  • 查看Docker版本:

sudo docker --version
  • 将当前用户添加到 Docker 组:

sudo usermod -aG docker $USER  # 输入这个命令前确保是自己个人用户而不是root用户
重新登录以使组更改生效:
newgrp docker
  • 测试 Docker 命令:

docker run hello-world
出现:Hello from Docker!即表示安装完成

安装Protainer可视化Docker容器管理面板

  • 拉取 Portainer 镜像

docker pull portainer/portainer-ce:latest
  • 运行 Portainer 容器

docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
  • 访问 Portainer

http://localhost:9000
  • 管理 Portainer 容器

docker stop portainer  # 停止容器
docker start portainer  # 启动容器
docker rm portainer  # 删除容器

为以后的Docker容器创建一个文件夹

sudo mkdir /docker    # 创建一个 docker 文件夹
sudo -i   # 进入root权限
chown liwenle:liwenle /docker   # 更改文件夹所有权为 liwenle 用户
chmod 755 /docker  # 设置 liwenle 可读可写可执行 的权限
ls -ld /docker  # 确认权限修改成功
# 输出: drwxr-xr-x 2 liwenle liwenle 4096 Aug 1 00:59 /docker
说明修改成功了

安装Jellyfin

  • 安装Jellyfin容器注释:

docker run -d \  # 以分离模式运行容器
  --name jellyfin \  # 容器名称为 jellyfin
  -p 8096:8096 \  # 将主机的 8096 端口映射到容器的 8096 端口
  --restart unless-stopped \  # 设置容器的重启策略为“除非手动停止”
  -v /docker/jellyfin/config:/config \  # 将 /docker/jellyfin/config 改成自己主机真实目录
  -v /docker/jellyfin/cache:/cache \  # 将 /docker/jellyfin/cache 改成自己主机真实目录
  -v /docker/jellyfin/NAS:/media \  # 将 /docker/jellyfin/NAS 改成自己主机真实目录
  --device /dev/dri:/dev/dri \  # 将本地的解码器映射给jellyfin
  nyanmisaka/jellyfin:latest  # 使用此镜像创建容器
  • 安装Jellyfin容器:

docker run -d \
  --name jellyfin \
  -p 8096:8096 \
  --restart unless-stopped \
  -v /docker/jellyfin/config:/config \
  -v /docker/jellyfin/cache:/cache \
  -v /NAS/Media:/media \
  --device /dev/dri:/dev/dri \
  nyanmisaka/jellyfin:latest


评论