• 主页
  • 搞机
  • 留言
  • 关于
  • 笔记
  • 时光
所有文章 友链 关于本站

  • 主页
  • 搞机
  • 留言
  • 关于
  • 笔记
  • 时光

基于OMV打造的All In One

2020-08-21

在 OMV (Debian) 上安装软路由虚拟机,并且网卡直通给虚拟机。

本文适用于 OMV5 ,演示版本为 5.5.8-1,其他版本是否适用,请自行判定。

这篇教程很复杂,不懂的可以看我以前写的教程,或者是到网上自己爬。

在前面一段时间,我写过一篇教程,讲的是在 PVE 上安装虚拟机组装 All In One,但是那一期并不完美,只把硬盘直通给了 OMV,而没有直通显卡,这样 OMV 并没有硬件解码的能力。

看网上大部分 Up 主的方案,都是创建 PVE 虚拟机,然后虚拟机上装 NAS,然后把 SATA 控制器和核显直通给 NAS,我就在想,为什么不直接在 NAS 上安装软路由虚拟机,然后再把网卡直通给软路由?

准备➴

有想法就开搞,看几个常见的 NAS 系统,Synology,FreeNAS,OpenMediaVault。

这三个系统中,首先把 FreeNAS 排除,基于 FreeBSD 的系统,搞不定,然后是 Synology,白的教程我可以出,黑的是不可能的,但是白的那台我不会瞎折腾的。系统就敲定是 OpenMediaVault,基于 Debian,贼方便。

安装系统就略过了,这个网上有很多的教程,不过大部分 OMV 都是安装在单盘上的,如果想安装在 Raid 上,只需要一点技巧,这个以后可能会出一期教程的。

安装拓展插件和内核➴

安装完 OMV 之后先更新系统

1
2
sudo apt update
sudo apt dist-upgrade

然后安装拓展插件

1
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

安装完拓展插件以后,刷新网页,会有OMV-Extras这个选项,在内核选项卡中安装 PVE 内核,并设为默认启动内核。

安装拓展

然后重启系统,使用 PVE 内核启动。

安装 KVM 和 Cockpit➴

接下来安装虚拟机,首先安装 Cockpit,这个直接在 OMV 的面板上安装即可(这一步也可以不做,直接使用下面的命令行安装)

安装Cockpit

然后安装 KVM 虚拟机相关的东西(如果不懂,直接照抄就行)

1
sudo apt install cockpit cockpit-* qemu qemu-kvm qemu-utils libvirt-* bridge-utils virt-* net-tools

尝试打开 Cockpit 面板看一下可设置的内容。

创建网桥➴

如果你有多个网口想要作为 LAN 口,就需要把这些网卡桥接起来,作为一个网桥使用,在 OMV 里创建网桥非常简单,只要你做了上面的操作,就可以在 OMV 管理面板创建网桥了,注意 OMV5 的网络配置文件,和正常 Debian 的不一样,尽量不要直接修改配置文件。

创建网桥的过程中,当前连接的网口是不能被选择的,可以把这个网口留作后面要用的直通 WAN 口。

创建网桥

创建完网桥之后,需要把网桥添加进 kvm 虚拟机里。

1
2
3
sudo apt install vim

vim ~/br0.xml

添加下面内容,注意 name,我的是 br0,你的不知道是不是。

1
2
3
4
5
<network>
<name>br0</name>
<forward mode="bridge"/>
<bridge name='br0'/>
</network>

然后添加进 kvm 虚拟机里

1
2
sudo virsh net-define --file ~/br0.xml
sudo virsh net-start br0

然后就可以在 Cockpit 面板里看到这个网络了。

查看网络

配置硬件直通➴

这里参考PVE虚拟机那一节

修改 grub 文件

1
sudo vim /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT="quiet",修改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on",amd 的话就改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

然后保存,输入命令

1
sudo update-grub

打开 /etc/modules

1
sudo vim /etc/modules

增加以下内容

1
2
3
4
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

保存,并重启服务器。

创建虚拟机➴

如果你是多网口的机器,并且刚才创建了网桥,创建虚拟机之前,我们要先改一下网线接口的位置,将网线从刚才的网口,改到创建好网桥的网口上。

首先我们创建一个存储池,在Cockpit面板里操作即可,创建完成后记得激活。

创建存储池

然后上传镜像到此存储池中,在电脑上用SCP上传(不是NAS上)

1
scp D:\MonoLogueChi\Desktop\1\openwrt-x86-64-generic-squashfs-combined-efi.qcow2 root@192.168.1.129:/srv/dev-disk-by-label-v/data/vm

如果你不知用什么镜像,可以用我编译的精简版镜像

然后导入虚拟机,但不要立即启动,修改启动顺序,然后检查一下当前的网络接口是不是br0,如果是br0,就启动测试一下。

引导顺序

看一下网卡是不是正常的。

网卡

硬件直通➴

可以PCIE直通➴

测试完之后虚拟机关机,然后搞硬件直通。

下面这一步,最好打开一个记事本,把需要记录的都粘贴进去。

首先是看网卡的id,这一部分可以参考我们上一期的PVE教程。

1
sudo dmesg | grep eth

会输出大概这么一长串东西

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[    1.294563] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) bc:5f:f4:ab:d8:7b
[ 1.294564] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection
[ 1.294597] e1000e 0000:00:19.0 eth0: MAC: 10, PHY: 11, PBA No: FFFFFF-0FF
[ 1.405764] e1000e 0000:04:00.0 eth1: (PCI Express:2.5GT/s:Width x1) bc:5f:f4:ab:d8:7c
[ 1.405765] e1000e 0000:04:00.0 eth1: Intel(R) PRO/1000 Network Connection
[ 1.405787] e1000e 0000:04:00.0 eth1: MAC: 4, PHY: 8, PBA No: FFFFFF-0FF
[ 1.407947] e1000e 0000:00:19.0 enp0s25: renamed from eth0
[ 1.496268] e1000e 0000:04:00.0 enp4s0: renamed from eth1
[ 1.552373] r8125 0000:01:00.0 enp1s0: renamed from eth0
[ 6.041822] e1000e 0000:04:00.0 eth0: (PCI Express:2.5GT/s:Width x1) bc:5f:f4:ab:d8:7c
[ 6.041824] e1000e 0000:04:00.0 eth0: Intel(R) PRO/1000 Network Connection
[ 6.041838] e1000e 0000:04:00.0 eth0: MAC: 4, PHY: 8, PBA No: FFFFFF-0FF
[ 6.043005] e1000e 0000:04:00.0 enp4s0: renamed from eth0
[ 5406.455848] e1000e 0000:04:00.0 eth0: (PCI Express:2.5GT/s:Width x1) bc:5f:f4:ab:d8:7c
[ 5406.455850] e1000e 0000:04:00.0 eth0: Intel(R) PRO/1000 Network Connection
[ 5406.455864] e1000e 0000:04:00.0 eth0: MAC: 4, PHY: 8, PBA No: FFFFFF-0FF
[ 5406.457045] e1000e 0000:04:00.0 enp4s0: renamed from eth0

我想要直通的网卡是 enp4s0,我找到了相关的ID

1
0000:04:00.0

那这个有啥用呢?再来看下面的(如果不是新手,下面这一部分其实不用做)

1
virsh nodedev-list --tree |grep pci

会输出一个这样的东西

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+- pci_0000_00_00_0
+- pci_0000_00_01_0
| +- pci_0000_01_00_0
+- pci_0000_00_02_0
+- pci_0000_00_14_0
+- pci_0000_00_16_0
+- pci_0000_00_16_3
+- pci_0000_00_19_0
+- pci_0000_00_1a_0
+- pci_0000_00_1b_0
+- pci_0000_00_1c_0
+- pci_0000_00_1c_2
| +- pci_0000_03_00_0
+- pci_0000_00_1c_4
| +- pci_0000_04_00_0
+- pci_0000_00_1d_0
+- pci_0000_00_1f_0
+- pci_0000_00_1f_2
+- pci_0000_00_1f_3

在里面找到 pci_0000_04_00_0 ,就是前面我们找到的网卡,别着急,接着看。

输入命令

1
virsh nodedev-dumpxml pci_0000_04_00_0

会输出这样的一堆东西

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<device>
<name>pci_0000_04_00_0</name>
<path>/sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0</path>
<parent>pci_0000_00_1c_4</parent>
<driver>
<name>vfio-pci</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>4</bus>
<slot>0</slot>
<function>0</function>
<product id='0x150c'>82583V Gigabit Network Connection</product>
<vendor id='0x8086'>Intel Corporation</vendor>
<iommuGroup number='14'>
<address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</iommuGroup>
<pci-express>
<link validity='cap' port='0' speed='2.5' width='1'/>
<link validity='sta' speed='2.5' width='1'/>
</pci-express>
</capability>
</device>

上面这些最好记在一个地方,方便等下查看。

接着detach设备

1
virsh nodedev-dettach pci_0000_04_00_0

然后编辑虚拟机配置文件,具体名称看你刚才设置的

1
vim /etc/libvirt/qemu/openwrt.xml

添加一部分

1
2
3
4
5
6
7
8
9
<devices>
......
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</source>
</hostdev>
......
</devices>

其中的 <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>,这一部分按照上面的填。

添加完成之后,保存,然后重启主机,再打开虚拟机,看一下是否有另一张网卡。

不能硬件直通➴

如果你的网卡是那种螃蟹卡,不能pcie直通,就按照下面的来做。

在虚拟机这里再添加一张网卡

添加网卡

这样虽然也能用,但是效率肯定没有硬件直通高。

开机,输入 ifconfig -a 查看另一张网卡是否存在。

设置➴

接下来就是正常软路由的设置了,因为前面开机过一次,可能会遇到没有WAN口的情况,遇到这种情况,手动创建一个WAN口就可以了。

补充➴

貌似按照上面操作,OMV上的DNS会被NetworkManager接管,导致DNS配置出现问题。这个可以通过修改NetworkManager配置文件解决

1
vim /etc/NetworkManager/NetworkManager.conf

修改

1
2
3
[main]
dns=none
no-auto-default=*
➴

参考

KVM 安装部分 https://zhuanlan.zhihu.com/p/113187354
硬件直通部分 https://libvirt.org/formatdomain.html

赏

请作者吃辣条

支付宝
微信
  • 本文作者: MonoLogueChi
  • 本文链接: https://blog.xxwhite.com/2020/omv-oia.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 软路由
  • NAS
OMV安装
PVE虚拟机安装软路由

获取文章MarkDown文件 本文阅读量 8848
  1. 1. 准备
  2. 2. 安装拓展插件和内核
  3. 3. 安装 KVM 和 Cockpit
  4. 4. 创建网桥
  5. 5. 配置硬件直通
  6. 6. 创建虚拟机
  7. 7. 硬件直通
    1. 7.1. 可以PCIE直通
    2. 7.2. 不能硬件直通
  8. 8. 设置
  9. 9. 补充
  10. 10. 1 2 3 [main] dns=none no-auto-default=*
© 2015-2021 MonoLogueChi
蒙ICP备17004911号-1
Hexo Theme Yilia by Litten
本站由 提供CDN加速/云存储服务
  • 所有文章
  • 友链
  • 关于本站

tag:

  • 搞机
  • 建站笔记
  • Unity
  • 测试
  • 随便水水
  • C#
  • 涨姿势
  • 软件
  • 炎黄幼儿园
  • 小工具
  • 香橙派
  • 服务器
  • 个人电脑
  • dotnet
  • Linux
  • 硬件
  • 软路由
  • NAS
  • OMV
  • timeline
  • 叉叉白
  • 大姐姐的博客Minemine
  • 酷安基佬
  • Se7en
  • 姬长信
  • staunchkai
  • 随遇而安
  • 2401的晚秋咖啡
  • CareyQ
  • Junzhou Liu
  • Yi-Yun
  • LmCjl在线工具
  • Freetao’s Blog
叉叉白 一个小白搞机的记事本