准备
- Linux 5.19.17-Unraid x86_64
- UnRAID 6.11.5
一、配置网络
AIO最难搞的就是网络部分了,在unraid里安装OpenWRT做主路由,unraid虚拟机管理OpenWRT,OpenWRT又管着unraid的网络,一旦想折腾网络就麻烦死。U820两个有线网卡:
- RTL8111 千兆
- Intel I225 v3 2.5G
基本的想法是让千兆卡做WAN口,2.5G卡做LAN口,但是UnRAID默认用第一个网卡(螃蟹8111)做管理口,如果你用虚拟机安装的OpenWRT拨号,UnRAID的DHCP服务器就是运营商提供了,会访问不到。解决办法就是交换第一个和第二个网卡(设置-网络设置-接口规则),这样2.5G卡给OpenWRT做LAN口,同时是unraid的管理口,同时可以接外置交换机或者AP,同时可以接其他虚拟机,也就是OpenWRT管理所有网络。
![](https://img.haomeiwen.com/i7914065/393514e198e702e3.png)
有时候这个UnRAID路由表会出现错乱,访问应用商店的流量莫名其妙地会走RTL8111 ,我不清楚问题出在哪里,所以我选择将RTL8111 直通给OpenWRT(工具-系统设备-PCI 设备和 IOMMU 组-给RTL8111打勾),这样对unraid来说就只有I225 一个网卡了,也就不出错了。
![](https://img.haomeiwen.com/i7914065/3961d9a62210add1.png)
二、OpenWRT
2.1 安装OpenWRT
我这里用的 supes.top 这里的固件,可以定制选择无线网卡驱动来驱动自带的Intel 7265ac,我把无线网卡直通给OpenWRT作为AP来管理OpenWRT很方便。下载下来openwrt-12.30.2022-x86-64-generic-squashfs-combined-efi.img.gz
传到unraid上,用gzip命令解压gzip -d openwrt-12.30.2022-x86-64-generic-squashfs-combined-efi.img.gz
得到openwrt-12.30.2022-x86-64-generic-squashfs-combined-efi.img
,添加linux虚拟机,系统盘选择openwrt-12.30.2022-x86-64-generic-squashfs-combined-efi.img
,网络处选择intel网卡和直通的rtl网卡。
![](https://img.haomeiwen.com/i7914065/195a37ba33b38ba0.png)
连接OpenWRT的vnc桌面,用ifconfig命令发现直通的rtl网卡是eth1,查看
/etc/config/network
发现默认的wan口就是eth1。所以啥也不需要动,此时wan口RTL网卡插上网线,intel网卡接入改为AP模式的路由器,用设备连接路由器wifi就可以了。
![](https://img.haomeiwen.com/i7914065/3dbb08a32c021bec.png)
2.2 无线配置
自带的Intel 7265ac在aio里好像没什么用,就直通给openwrt做发射无线信号用来管理吧,但是我试了无数个固件,wifi5下和wifi4下的5G均不能正常使用,只有802.11n模式的2.4G可用,实测握手速率可以达到144Mbps,还挺快的。搞定了5G的还请赐教。配置如下
![](https://img.haomeiwen.com/i7914065/2e4870805b46594a.png)
三、共享文件给虚拟机
通过smb或者ftp共享的情况就不说了,这里介绍通过虚拟机配置中的Unraid共享实现,好处是数据不经过网卡。Unraid共享选项分为Virtiofs Mode 和 9p Mode,这俩啥区别我也不太懂,有兴趣的同学可以看我引用的《VirtFS 虚拟化技术简介》,讲的很详细。在6.11中Windows虚拟机移除了9P选项,而Linux中看到都是用的9P。所以这里也这么整。
3.1. 共享文件给Windows10
新建Windows10虚拟机,选中要共享的文件夹
![](https://img.haomeiwen.com/i7914065/4b09fa39d61c22ee.png)
点击右上角
FORM VIEW
切换到XML模式,将memoryBacking项改成如下
<memoryBacking>
<source type='memfd'/>
<access mode='shared'/>
</memoryBacking>
启动虚拟机,到 https://winfsp.dev/rel/ 下载WinFsp并默认安装。安装完成之后在服务中将VirtIO -FS Service
启动并改成自动启动。下图中的Z盘就是自动挂载的硬盘。
![](https://img.haomeiwen.com/i7914065/01c27d7de6681c60.png)
有个问题,虽然那个服务改成自动启动了,可是还是不会自动启动。知道怎么解决的同学请留言。
3.2. 共享文件给Ubuntu22.04.
新建Ubuntu22.04的虚拟机配置如下,注意这里的挂载标签(Tag)是data
,系统内需要用。
![](https://img.haomeiwen.com/i7914065/23dec22219fe871f.png)
进入虚拟机,输入以下命令查看是否可以挂载成功:
# 创建文件夹用于挂载
mkdir -p /mnt/data
# 挂载,第一个data是mount tag
mount -t 9p -o trans=virtio data /mnt/data
![](https://img.haomeiwen.com/i7914065/10bae186474a709f.png)
如果成功挂载呢说明配置没问题,不过现在是手动挂载,想要开机自动挂载需要编辑/etc/fstab文件,在最后一行添加
data /mnt/data 9p trans=virtio,_netdev 0 0
就可以了。可以看到这里比mount命令挂载多了一个
_netdev
选项,如果不加的话开机会报错要挂载的设备不存在,但是看到有人说这个命令不是必须的,甚至是不好的,可能在不联网的情况下不挂载,实测没有这个情况,有更好的方案请在评论区留言。
三、 核显相关
到此,无论如何我都建议你详细读一下核显相关的第一篇参考,里面介绍了很多基本概念和实现原理,这里不复述。
3.1 Jellyfin硬件加速
unraid中执行下面两个命令,如果出现renderD128
设备说明成功
# 加载intel gpu 驱动模块
modprobe i915
# 查看可用设备
ls /dev/dri
设置开机启动:编辑/boot/config/go,在最后面添加命令modprobe i915。安装Jellyfin,添加额外设备,名字随意,值填写/dev/dri。进入jellyfin,在播放设置中硬件加速选择VAAPI。
3.2 核显直通Win10,外接显示器
首先在Main>Boot Device>Syslinux Configuration中添加内核启动参数video=vesafb:off video=efifb:off
,解除vesafb 或 efifb 对 IGD 的绑定,其实这里只需要video=efifb:off
,这个小机器就不能从传统BIOS启动。
![](https://img.haomeiwen.com/i7914065/4df17688eb18e874.png)
然后在tools>system devices中,将IGD和vfio绑定。
新建windows10虚拟机,机型必须是q35,bios选ovmf,添加两个显卡,一个vnc,一个直通的iris plus 655。保存配置,然后在xml模式下编辑,找到IGD选项,将下图中椭圆位置从0x02
改成0x05
,保存。
![](https://img.haomeiwen.com/i7914065/997f7eb8dcb1306b.png)
启动虚拟机,安装引用部分中的驱动文件
intel_vga_26.20.100.7262.zip
就可以看到显卡正常加载。注意禁用windows自动更新,26.20.100.7262版本的驱动是可以正常工作的,自动更新之后就会出现代码43或者任务管理器中不显示GPU,如果已经更新了,到设备管理器里卸载驱动设备重启就好。![](https://img.haomeiwen.com/i7914065/87ffd6f0c0637df9.png)
但是此时并不能从物理视频接口输出信号,我看了几篇文章都说需要
x-igd-opregion
参数,但是我添加了也没有成功,HDMI始终没有信号(type-c也没有,手上暂时没有dp接口的显示器没有尝试),大家自己试试吧,有成功的评论区讨论。具体操作是xml模式修改虚拟机配置,添加从物理视频接口输出和解决内存占用高的代码,修改配置文件的两部分:
- 修改domain结点的开始标签为如下,避免声明问题保存失败
<domain xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' type='kvm'>
- 在
domain
结点内(devices
结点后面)添加如下qemu:override
子结点
<qemu:override>
<qemu:device alias='hostdev0'>
<qemu:frontend>
<qemu:property name='x-igd-opregion' type='bool' value='true'/>
<qemu:property name='x-igd-gms' type='unsigned' value='1'/>
</qemu:frontend>
</qemu:device>
</qemu:override>
四、其他
显示温度CPU
6.11之前需要先安装nerdpack插件,然后在nerdpack中安装perl,6.11之后unraid中集成了perl,所以不需要安装这俩,直接安装Dynamix System Temperature。然后在设置》System Temp中设置。
Unraid 管理虚拟机的命令
virsh
是虚拟机管理命令
virsh list --all
参考
-
UnRAID 文件共享给虚拟机
- 总参考 https://post.smzdm.com/p/a4pdq90l/
- https://forums.unraid.net/topic/129247-unraid-os-version-6111-available/
- winfsp https://zhuanlan.zhihu.com/p/448445912
- VirtFS 虚拟化技术简介 https://zhuanlan.zhihu.com/p/93874536
- mount命令挂载9P https://zhuanlan.zhihu.com/p/359573010
- fstab挂载9P https://superuser.com/questions/502205/libvirt-9p-kvm-mount-in-fstab-fails-to-mount-at-boot-time
-
直通核显
- 概念和原理 https://post.smzdm.com/p/aqxovxl2/
- unraid11直通,修改xml保存不了 https://forums.unraid.net/topic/129344-%E5%8D%87%E7%BA%A7%E5%88%B06111%E5%90%8E%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%83%A8%E5%88%86%E5%8F%82%E6%95%B0%E5%A4%B1%E6%95%88%E3%80%82/
- pve下直通 https://www.right.com.cn/forum/thread-4129536-1-1.html
- 远程桌面加速 https://post.smzdm.com/p/akxl2z3e/
-
相关文件
网友评论