前段时间由于wifi 上传到威联通nas很慢,索性想着拉一根隐形光纤来连接,主要走网线太难看了。思来想去还是买个万兆小主机当openwrt ,和另外性能强的服务器分开,这样避免all in boom。
小黄鱼搜索只有一个n100 的卖830 本想砍价到800 他后来又涨了再后来就卖掉了,那只有买个全新的了,n100和n150价格只差几十,由于n100出来比较久,可能兼容性会好一些,但想来买新不买旧还是买了n150,兼容性以后应该会解决了。
由于n150的核显还可以,而且我知道支持SR-IOV 那么底层肯定安装pve了。
一、更新pve源
二、显示cpu和硬盘温度
先安装sensors
apt-get install lm-sensors -y
安装后运行下面命令看是否能显示温度
sensors
我在github上找了pve_tools 发现安装了还是不能显示,github搜索pve_source 没搜到,按以前的安装pve_source 安装后还是不能显示,可能是脚本版本旧了,pve 版本新了吧。后来还是通过恩山论坛一位大佬的脚本尝试可以
【新提醒】(2023.12.13)SHELL脚本:一键给PVE增加温度,cpu功耗频率,硬盘等信息-软路由,x86系统,openwrt(x86),Router OS 等-恩山无线论坛
一键执行脚本
(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || curl -Lf -o /tmp/temp.sh https://mirror.ghproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && chmod +x /tmp/temp.sh && /tmp/temp.sh remod
没有显示功耗的,请执行下面的命令安装依赖,请确保安装成功,就是最后的一行的输出,必须为 “成功!” 才表示安装成功了。
apt update ; apt install linux-cpupower && modprobe msr && echo msr > /etc/modules-load.d/turbostat-msr.conf && chmod +s /usr/sbin/turbostat && echo 成功!
如果你已经用别人的脚本之类的修改过页面,请先用下面命令先回复官方设置之后,才可以运行本脚本:
apt update apt install --reinstall pve-manager=$(dpkg -l pve-manager | tail -n 1 | awk '{print $3}') apt install --reinstall proxmox-widget-toolkit=$(dpkg -l proxmox-widget-toolkit | tail -n 1 | awk '{print $3}') rm -f /usr/share/perl5/PVE/API2/Nodes.pm*bak rm -f /usr/share/pve-manager/js/pvemanagerlib.js*bak rm -f /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js*bak
另外:每次pve升级之后都需要执行一次脚本,因为升级后PVE会自己还原文件
三、开启直通
编辑/etc/default/grub
将里面的GRUB_CMDLINE_LINUX_DEFAULT="quiet"改为GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
对于AMD则是 amd_iommu=on
更新grub
update-grub
重启
四、安装openwrt
找了几个openwrt固件都没合适的,最后勉强找了个可用的,反而不用怎么设置直接就可以用了,ipv6也正常。这里注意需要将最后个eth3 设为wan ,因为eth3为直通的2.5G i266网卡,eht0 为i266 管理口, eth1 eht2为万兆网口,前3个都作为lan 而且没有直通。
另外openwrt 设置为2核2G 内存比较合适,单核的话万兆性能不太够。
外网访问内网的ipv6
还需要将转发设为接受
五、设置SRIOV直通核显
之前有个1135G7 的小主机当时sriov不太成功,没想到这次居然很顺畅
按照github上的步骤依次执行以下命令
GitHub - strongtz/i915-sriov-dkms: dkms module of Linux i915 driver with SR-IOV support
apt install build-* dkms
apt install proxmox-headers-6.8 proxmox-kernel-6.8
wget -O /tmp/i915-sriov-dkms_2025.03.27_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.03.27/i915-sriov-dkms_2025.03.27_amd64.deb"
dpkg -i /tmp/i915-sriov-dkms_2025.03.27_amd64.deb
编辑/etc/default/grub
改为intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe
update-grub
update-initramfs -u
apt install sysfsutils
修改文件
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
上面地址可以用 lspci | grep VGA 查看
重启
再用lspci | grep VGA 可以看到有8个说明成功
运行ls -la /dev/dri 看是否正常
六、给windows 10分配sriov的显卡
这次很顺利也不需要改配置也不需要设为主gpu 也不需要删除pve虚拟显卡
主要不要把第一个 00:02.0 分了,需要从下面的开始分配
分配后直接按照intel 核显驱动成功。另外windows 10的任务管理器显示cpu频率为0.8 但实际应该不只,我用cpuz 跑了单核300分。 但安装intel核显驱动的时候还是挺卡的。
七、安装LXC
安装ubuntu 24.04 设为2核2G,虚拟内存设为4G,安装完成后在pve管理网页中的lxc控制台执行
sed -i '/PermitRootLogin/ a PermitRootLogin yes' /etc/ssh/sshd_config
重启lxc 然后就可以ssh 用root登录了
换源
cd /etc/apt
cp sources.list sources.list.bak
sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' sources.list
然后就可以apt update了。
但是发现默认步骤创建的lxc 执行ls -la /dev/dri 找不到设备,而且在pve控制台中不能更改无特权的容器
再新建一个LXC容器取消勾选无特权的容器。创建完后发现lxc控制台没有输出,这时候需要关机,在选项下把这几个勾上
再重启控制台就有输出了。
这时候运行ls -l /dev/dri 看到还是没有设备,需要在pve的ssh中修改lxc的配置文件
/etc/pve/lxc/105.conf
在文件末尾加入
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
然后重启LXC容器, intel cpu都是上面的配置?
然后验证ls -l /dev/dri
即可正常看到
安装gpu工具
apt-get install -y intel-gpu-tools
运行
intel_gpu_top
但我这里报错,不管是pve宿主机安装还是lxc中安装都是如此
宿主机
如果设置了显卡 SR-IOV 虚拟化直通,那么命令可能需要修改一下才能生效:
intel_gpu_top -d sys:/sys/devices/pci0000:00/0000:00:02.0
这么长的命令使用很不方便,我们可以通过设置 alias 别名来提升使用效率
alias intel='intel_gpu_top -d sys:/sys/devices/pci0000:00/0000:00:02.0'
2025.4.28 可以使用 下面命令查看
intel_gpu_top -d sriov
飞牛NAS
安装好飞牛os后,开启ssh
另外安装的时候如果选默认但使用uefi 则会安装不了,此时需要进入虚拟机的bios 关闭uefi安全引导啥的就可以安装了。
运行
ls -l /dev/dri
显示
而在pve的LXC中是显示的
怀疑是飞牛没装驱动
在飞牛应用中心安装
重启后运行
ls -l /dev/dri
还是如此
那先挂载威联通的文件吧
在文件管理中新建个文件夹
点击文件夹的右键详细信息,复制原始路径
普通用户是挂载不了的
切为root
sudo -i
mount -t nfs4 192.168.8.233:/MyData/Movie /vol1/1000/movie
此时在文件夹中应该能看到威联通中的文件了
开机自动挂载
修改/etc/fstab
但发现用XTerminal 自带的文件管理直接修改提示无权限
sudo -i后还是如此
那么只好sudo -i 后用vi了
增加
192.168.8.233:/MyData/Movie /vol1/1000/movie nfs4 defaults 0 0
但启用不了gpu转码待研究
LXC容器
直接apt install docker.io
安装之后运行容器会报错
docker: Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded: running '/usr/sbin/apparmor_parser -Kr /var/lib/docker/tmp/docker-default2667756519' failed with output: apparmor_parser: Unable to replace "docker-default". apparmor_parser: Access denied. You need policy admin privileges to manage profiles
在宿主机/etc/pve/lxc/105.conf 中添加下面几行
lxc.apparmor.profile: unconfined lxc.cgroup2.devices.allow: a lxc.cap.drop:
reboot重启后还是报上面的错
此时按步骤安装docker-ce 运行反而不报错
但是去掉上面conf文件中的几行reboot重启后还是报错
加上reboot重启后仍然报错
最后在docker run 后面加 --privileged 成功了
docker run --privileged hello-world
注意--privileged的顺序,如果是 docker run hello-word --privilileged就还是不行
然后创建挂载文件夹
mkdir /mnt/movie
然后
apt install nfs-common
不安装上面的直接挂载会报错
mount: /mnt/movie: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program. dmesg(1) may have more information after failed mount system call.
然后挂载文件
mount -t nfs4 192.168.8.233:/MyData/Movie /mnt/movie
创建docker
docker run --privileged -d -p 8096:8096 --name=jellyfin-cn --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/movie:/movie \ -e TZ=Asia/Shanghai -e PUID=0 -e PGID=0 \ --device=/dev/dri:/dev/dri \ nyanmisaka/jellyfin:latest
这非官方的镜像还是不能实现硬解。
下载ffmpeg
然后下载下面这个
wget下载比较慢,可以用迅雷下载后再上传到/root下
解压
tar -xvf ffmpeg-git-amd64-static.tar.xz
然后cd到解压后的目录
./ffmpeg
如果想要ffmpeg命令全局可用,可以在bin目录加个链接。比如,分别执行如下命令,即可在:/usr/bin目录下创建ffmpeg和ffprobe软链接。
cd /usr/bin ln -s /root/ffmpeg-git-20240629-amd64-static/ffmpeg ffmpeg ln -s /root/ffmpeg-git-20240629-amd64-static/ffprobe ffprobe
然后创建docker的时候映射下目录
-v /root/ffmpeg-git-20240629-amd64-static:/ffmpeg
我起初映射的jellyfin默认的ffmpeg目录会报错所以改成了 /ffmpeg
-v /root/ffmpeg-git-20240629-amd64-static:/usr/lib/jellyfin-ffmpeg/ffmpeg
完整的
docker run --privileged -d -p 8096:8096 --name=jellyfin-cn --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/movie:/movie -v /root/ffmpeg-git-20240629-amd64-static:/ffmpeg \ -e TZ=Asia/Shanghai -e PUID=0 -e PGID=0 \ --device=/dev/dri:/dev/dri \ nyanmisaka/jellyfin:latest
然后
这里选择intel qsv也试过,倒是不报"该客户端与媒体不兼容,服务器未发送兼容的媒体格式。"了,但是是调用的cpu转码。
最后发现硬件转码正常的是虚拟机windows 直装官方jellyfin 和Ubuntu虚拟机直装官方jellyfin
ubuntu虚拟机安装需要科学上网
curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash
但我发现ubuntu LXC这样直接安装后还是不能硬解。
2025.04.28
Ubuntu 虚拟机扩容,由于pve当时分了100G给ubuntu虚拟机,但安装ubuntu的时候貌似是50G ,所以还有剩余的,那么如何利用起来,问deepseek得到答案
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
经实现是可行的,运行第二条后XTerminal 显示的磁盘空间立马发生变化了
然后我发现XTerminal 没有显示虚拟内存,按照之前的教程又设置了一遍4G虚拟内存,重启还是没显示,想起FinalShell会显示,于是用FinalShell 登录发现虚拟内存为8G 了,看来是默认已经有4G了这次会再增加4G?
2025.5.18
今天试下黑群晖,用的RR引导
github下载最新的rr-25.5.7.img
将img文件上传到pve中
创建虚拟机,不使用任何介质
删除scsci0
cpu选host
创建完成后在硬件中删除cd/dvd
然后将img导入
qm importdisk 110 /var/lib/vz/template/iso/rr.img local-lvm
然后在虚拟机中添加此硬盘
再新装一块20G 以上硬盘用来装系统
总线选SATA不然后面会认不到
然后设置启动顺序
可以先将核显的sriov增加到虚拟机中不然后面RR引导选择系统的时候会看不到G
引导RR后在浏览器输入网址
先在setting menu中改下语言
选择型号,选择SA6400 如果前面没增加sriov核显的话会看不到G,不过貌似没关系
然后选择版本,这里我选的7.2
然后点击URL下载pat
点击确定
选择编译引导
安装完成后开启SSH
貌似没video station了
ssh进入查看显卡
ls /dev/dri
再查看i915
dmesg | grep i915
貌似都正常自带了