倍控 N5095/N5105 AIO 小主机 PVE+OpenWRT+Ubuntu+Android TV

第一次玩PVE,有很多需要学习的地方,这里简单记一下不同于Windows内虚拟机软件(比如VMWare)的地方。第三、四部分比较了一下不同机箱不同CPU的日常使用情况。

安装PVE的内容就不写了,和安装普通的系统没有两样,需要注意的是填写后台地址的时候:

  1. 网卡选择要记住,PVE只能用你选择的网口做管理口访问后台。
  2. ip写你路由器管理的网段下,保证可以访问到。
  3. 要写 https

一、PVE 准备

1.1 换源

这个操作可有可无,如果你的网络连接默认源够快,完全不需要换。

  1. 无论是安装啥,安装完先把时间改了,错误的时间可能影响你正常上网
# 不知道怎么一个命令改出来
date -s 2022-04-25
date -s 22:32

有时候你会发现这个时间怎么改都不对,那是因为https://sspai.com/post/55983,所以我建议你,先去BIOS里把时间改成北京时间减去8个小时,这样类unix系统都会正确了。如果安装windows,通过修改注册表让windows也将硬件时间看成UTC时间,在哪里看过好像微软自己也要修改这个规则了。

  1. 注释掉 /etc/apt/sources.list.d/pve-enterprise.list 中的源

  2. 换PVE源

wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list 
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list
sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm
apt update && apt dist-upgrade     #更新软件,可不执行
  1. 换debian源
sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list    
sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list 
apt update && apt dist-upgrade     #更新软件,可不执行

1.2 去掉无有效订阅弹窗

修改/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js文件中的这块代码

Proxmox.Utils.API2Request(
        {
        url: '/nodes/localhost/subscription',
        method: 'GET',
        failure: function(response, opts) {
            Ext.Msg.alert(gettext('Error'), response.htmlStatus);
        },
        success: function(response, opts) {
            let res = response.result;
            if (res === null || res === undefined || !res || res
            .data.status.toLowerCase() !== 'active') {
            Ext.Msg.show({
                title: gettext('No valid subscription'),
                icon: Ext.Msg.WARNING,
                message: Proxmox.Utils.getNoSubKeyHtml(res.data.url),
                buttons: Ext.Msg.OK,
                callback: function(btn) {
                if (btn !== 'ok') {
                    return;
                }
                orig_cmd();
                },
            });
            } else {
            orig_cmd();
            }
        },
        },
    );

Ext.Msg.show就是那个弹窗,可以直接在let res = response.result;前面加个return;

sed -i.bak "s#let res = response.result;#return; let res = response.result;#g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

1.3 直通pci设备准备

  1. 修改/etc/default/grub文件,将GRUB_CMDLINE_LINUX_DEFAULT="quiet" 修改为GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"

    # 修改/etc/default/grub
    sed -i.bak "s#GRUB_CMDLINE_LINUX_DEFAULT=\"quiet\"#GRUB_CMDLINE_LINUX_DEFAULT=\"quiet intel_iommu=on video=efifb:off\"#g" /etc/default/grub
    # 更新GRUB
    update-grub
    
  2. 添加内核模块

    # 添加模块, 包括核显直通
    echo -e "vfio \nvfio_iommu_type1 \nvfio_pci \nvfio_virqfd" >> /etc/modules
    # 这个命令好像是更新内核的
    update-initramfs -k all -u 
    # 重启
    reboot
    
  3. 注意

    虚拟机芯片组一定要q35 。因为Q35,才能PCIE直通,否则就是PCI直通。

二、开玩

要实现的网络拓扑图,一个OpenWRT做路由,Ubuntu做服务器跑一些自己的web应用,还有其它用网的虚拟机,统统接到第三个口。


倍控网络拓扑.png

同学们(其实是我)可能有个疑问,这样AP这里能访问到PVE的管理口吗?其实是可以的,不记得在哪个文章里看到了,不同的虚拟机只要接到PVE的同一个虚拟网口,相当于接到了一个虚拟交换机,也就是说拓扑图中接在第三个网口上的三根线是互通的

2.1. 安装OpenWRT

1)创建虚拟机,ISO、磁盘不选,系统默认,创建完成。
2)用命令qm importdisk 虚拟机ID img文件地址 local-lvm将img文件转换为虚拟机的硬盘,比如

qm importdisk 100 /var/lib/vz/template/iso/openwrt.img local-lvm

3)回到虚拟机,点击未使用的硬盘,将总线/设备设置为sata
4)到选项-引导顺序,将硬盘启动选中,调到第一位。
5)这样,硬盘就配置好了。最后在网络设备中添加四个网口。启动。


四个网卡,最后一个直通

7)暂时用不到PVE了,先将管理端口的ip改成192.168.1.5,两种方法:

  1. 直接在web管理页面修改pve-网络-对应的网口
  2. 修改/etc/network/interfaces/etc/issue/etc/hosts三个文件中的ip(interfaces中还有网关),然后重启。其实只需要修改/etc/network/interfaces中的信息,/etc/issue应该是命令行下的开机提示,/etc/hosts是映射域名和ip的。

四个网口只有其中的一个指定了IP地址,指定的那个网口就是管理口,并不像网上说的怎么固定。

2.2. 配置OpenWRT

  1. 先改时间。

  2. 镜像是eSir的,默认第一个网络设备是LAN口(ip是192.168.5.1),这样我们启动之后将电脑的网线插入ETH0网口,便可以直接通过浏览器访问OpenWRT后台(192.168.5.1)。

  3. 根据拓扑图调整网络,eSir固件默认只有一个LAN口(第一个网口)和一个WAN口(第二个网口)。这里我把WAN口调到第一个网口,因为现在只有一根入户宽带,另一个WAN口先留着吧(想必以后也用不到)。最后在LAN口中选择第三个和第四个网口,ip改成192.168.1.1(最后调这个,调完就需要重插网线了)。

  4. 插网线
    将光猫出来的网线接入WAN口(ETH0),LAN口(ETH3)插在电脑上,经测试可以正常访问OpenWRT(192.168.1.1)和PVE(192.168.1.5)控制台。

2.3 安装Ubuntu 20.04

这里就不多写了,想必大家都轻车熟路了。其实我想安装Ubuntu Server,但是在格式化完磁盘,复制系统文件的时候总是报错。日志太长看不懂,所以不确定问题出在哪里,有知道的同学可以交流一下。Desktop也好,怕系统占用可以不启动图形界面(这么安慰自己)。(N5105到货了,安装Ubuntu Server没有发现这个问题)

2.4 安装Android TV x86

配置虚拟机的时候注意硬盘选SATA,芯片组选Q35。
安装过程按照eSir的教程来,其中他输入了一串命令pm disable com.tosanthony.tv.networkprovider,按照哔哩哔哩的那篇文章,tosanthony最初制作的Android TV 9 x86是收费的,这个命令好像就是来禁用com.tosanthony.tv.networkprovider这个应用来避免收费的。但是我不知道在哪里下载的包,没有看到这个收费界面(后来好像又不收费了),所以没执行这个命令也正常安装完了。
之后重启了一次小主机,竟然只能进命令行的界面了,没有图形界面。解决办法:PVE里强行停止再打开就好了。

2.4.1 直通核显用显示器输出

注意:以前不知道,原来11代U不能直通!不能!看Vedio Talk说可以,他提取了vbios,正在修复,但是就没有下文了。

我没有搞成功,同学们试试运气吧。看我参考的三篇文章,个人感觉第一篇更全面合理一些,推荐。

  1. 将显卡驱动加入pve黑名单
    我不太理解这个步骤是为什么,是不是说不要pve来管理显卡了?而且看的两篇教程指定的pve黑名单文件都是/etc/modprobe.d/blacklist.conf,但是我看系统内自带了一个/etc/modprobe.d/pve-blacklist.conf,而且里面写着:“This file contains a list of modules which are not supported by Proxmox VE.” 感觉这个应该才是黑名单的文件吧,而且设置完他们都没有什么验证,不确定是不是生效了。所以我这一步先不做。

    新版本的pve,例如pve7.0,无需做驱动屏蔽

  2. 查找设备id
    这个搞过黑苹果的同学一定知道,最后的格式是vendor-id:设备id
    先用lspci命令查看显卡和声卡的pci位置(第一列),找到VGA和Audio字样分别对应显卡和声卡,然后用lspci -n -s pci位置来查看设备id,我的是VGA(8086:4e61)、Audio(8086:4dc8)
  3. 将得到的信息按照options vfio-pci ids=ID1,ID2,...的格式写入/etc/modprobe.d/vfio.conf
    echo "options vfio-pci ids=8086:4e61,8086:4dc8" > /etc/modprobe.d/vfio.conf
    
  4. 最后更新内核,重启虚拟机
    update-initramfs -u
    reboot
    
  5. 配置虚拟机
    1. 添加pcie显卡设备。根据pcie位置来选就好了,我的没有教程中那么完整的信息。
    2. 把显示那里改成无。
  6. 结果,Ubuntu成功(后期来纠正一下,这里并没有成功,只是ubuntu一直等能显示画面,但是并不能操作,当时应该是看到画面就以为成功了),AndroidTV不成功。Android TV没有任何的反应,看着系统可能启动了,但是应该是进入那个命令行界面了(看内存占用猜的)。
  7. 用这串代码args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1替换下直接在pve里添加的pcie设备的配置项(/etc/pve/qemu-server/102.conf)。Ubuntu 成功(第一次启动把pve搞死机了,是不是添加options防止VM死机那一步可以避免这个问题),AndroidTV不成功。
  8. 添加VBios
    跟着第三个教程来,失败了...,echo 1 > rom报错permission denied。看着第四个文章(pve官方的教程)也是这么弄的,应该不会有问题,但是我放弃了,想着即便直通成功,Android内多数的国内视频软件都用不了,kodi用不了,甚至YouTube视频都加载不出来,就没有折腾的动力了。想想在物理机上安装x86也有进不去图形界面的问题,所以我又试了用SeaBIOS引导,修改grub启动文件,结果问题还是一样,内存占用500M左右,感觉卡在了启动图形界面之前的那个命令行的状态,他想启动但是找不到合适的显示器输出。

最后,这东西发热严重,恰巧看到N5105有货了,果断换货,过几天折腾N5105。

三、N5105到货

在上面的基础上有安装了OpenMediaVault,没啥好说的,也没搞高级功能。欢迎留言交流。

记录一下直通硬盘:

# 查看磁盘的id,记录下你要用的硬盘
ls /dev/disk/by-id
# qm set 虚拟机id 虚拟机硬盘编号 硬盘id
qm set 101 -sata2 /dev/disk/by-id/ata-TOSHIBA_MQ04ABD200_32EOP03AT

下面说一下这两个机器的优缺点,下面说的数据基本都是在pve下运行着OpenWRT和Ubuntu(待机状态)的情况下统计的。

  1. 功耗
    5095没测。5105不接sata硬盘14-15w,接个2.5寸的机械硬盘15-17w。

  2. 温度

    • 晚春(室温19-21度 )我买的是G30B机箱的,就是散热鳍片小的。一是缺钱,二是觉得G31那个鳍片不太好看。N5095长时间保持在70多度,偶尔能到80度。N5105长时间保持在60多度。我手上只有一个12V的闲置的小风扇(接在5V的USB上转速很低),稍微一吹能降到50多度,偶尔到40多度。所以N5105建议买G31的机箱,应该可以免去改造散热。N5095还是用主动散热吧。
    • 中秋,时隔快半年了更新,我想测试一下换了硅脂能对散热有多大帮助,买的硅脂导热系数声称10w/mk。天气预报说今天最高温度28度,我感觉现在室内25度只多不少。G30B加主动散热,unraid显示cpu50度。撬开了发现散热铁片和机箱中间的硅脂只涂了一点点,我就多涂了一些,换之后cpu42度,效果不错


      unraid温度-换硅脂之前

      unraid温度-换硅脂之后
  1. 想吐槽一下这个sata硬盘设计。G30B机箱只适用7mm的2.5寸硬盘,9mm的按照螺丝孔位固定硬盘之后根本就拧不上盖板螺丝,因为给的数据线会顶住nvme硬盘,不固定在板上斜着也能放进去。G31没有这个问题。

  2. 网速
    iperf3: 我手上只有千兆的网卡,所以没法测这个2.5G的网口,但是我可以用拓扑图ETH2那里的虚拟交换机测试一下那个网卡的极限速度。OpenWRT做iperf3服务端,OMV做客户端。一测我惊了:

    网速

怎么8G多了,看来虚拟网桥那里的流量并不经过网卡,我真是个大聪明。看来网速测不了了,但是也看到OpenWRT那里cpu占用44%,PVE那里占用36%。
局域网拷贝: windows下从NAS拷贝文件都能跑到900多兆。macOS下面差不多

mac 网速

在线开发: 把图形处理的深度学习程序(对硬盘读取算中等)放在本地和NAS上,跑一个阶段。NAS上用的时间竟然更少,这应该是显卡状态的原因,至少说明一般开发任务千兆局域网不是瓶颈。
在线剪辑: FCPX默认选项新建项目1080P 60帧,正常操作几十M,复制媒体到资源库(H264,1080p,14Mbps,30帧,15分钟,1.64G的素材)或者后台渲染(核显UHD630)的时候最多500-600M。

四、G31机箱N5105

快618了,刚买一个多月价格直接降了150多(G30B 690大洋,G31 720大洋),就离谱!那咋办?我又买了一个G31机箱的N5105,想着如果618之后价格如果能涨一点就卖掉一个好回点本。
然后,我惊奇的发现!我真没想到!这个G31机箱散效果这么好,室温23度,待机(Openwrt+OMV)CPU 40度左右,局域网拷贝半个小时了(CPU占用10%左右)才四十五六度。
夏天不开空调室温可能大概差不多30度(没有温度计),OpenWRT待机55度左右,跑点东西就70多度,烫手,还是需要加个小风扇的。
所以如果能接受G31机箱的外形,并且室温不是很高的话还是建议买G31的机箱,可以省掉一个小风扇的钱。

五、补充

5.1 Windows Server 2022安装i225v3 驱动

PVE下直通核显暂时还无解,另一个办法是将windows(server)直接装在物理机上,用hyper-v虚拟机。可是我安装完windows server怎么装不上网卡的驱动(windows可以)。捣鼓半天,发现这么整可以:打开设备管理器-其他设备-以太网控制器-右击选择更新驱动程序-浏览我的电脑以查找驱动程序-让我从计算机上的可用驱动程序列表中选择-网络适配器-Intel-Intel(R) Ethernet Controller(3) I225-IT

除了IT还有LM、LMvP两个后缀的,不清楚有什么区别,我试了一下都可以用。

5.2 pve下温度监控

安装 lm-sensors 监控CPU温度,hddtemp 监控硬盘温度

# 安装
apt install lm-sensors hddtemp -y
# 查看
sensors
hddtemp /dev/sda

可以用tmux显示,先安装apt install tmux,再写一个tmux默认执行的脚本,vim ~/.tmux.conf

new -s temp
split-window -v
select-pane -t 0
split-window -h
split-window -v -p 25
send-keys -t temp:0.1 "watch -n 10 sensors" Enter
send-keys -t temp:0.2 "watch -n 10 hddtemp /dev/sda" Enter
select-pane -t 3

最后执行tmux a

5.3 pve删除local-lvm分区

默认pve会生成两个存储区域locallocal-lvm不知道有什么用,但是很碍眼。可以用以下的命令删除local-lvm并把腾出来的空间分配给local

lvremove pve/data
lvextend -l +100%FREE -r pve/root

然后到数据中心>存储删掉local-lvm。这样就没有LVM-Thin的这种存储,好像就不能存快照了,自己取舍。而且如果改了,后面img文件转换成OpenWRT系统盘的命令也要做相应更改。

5.4 pve添加硬盘

错误记录

  1. 不知道咋的PVE的web管理页面登录不了,提示”登录失败,请重试“
    解决办法: 清除浏览器缓存就可以了。

参考

  1. PVE
    • https://post.smzdm.com/p/a85g06k7/
    • https://github.com/ivanhao/pvetools
  2. 分区调整
    • https://baijiahao.baidu.com/s?id=1692493332405204550&wfr=spider&for=pc&searchword=pve%E7%9A%84local%E5%92%8Clocal-lvm
  3. 换源
    • https://www.jianshu.com/p/98e87febfd5e
    • https://www.jianshu.com/p/b4a792945d99
  4. 无有效订阅弹窗
    • https://www.jianshu.com/p/98e87febfd5e
    • https://www.nasge.com/archives/139.html
  5. vfio
    • https://luohao-brian.gitbooks.io/interrupt-virtualization/content/vfio-she-bei-zhi-tong-jian-jie.html
  6. 直通
    • https://foxi.buduanwang.vip/virtualization/pve/561.html/
    • https://www.vediotalk.com/archives/46093
    • https://www.10bests.com/pve-libreelec-kodi-htpc/
    • https://pve.proxmox.com/wiki/Pci_passthrough
    • https://www.cnblogs.com/haiyonghao/p/14440944.html
  7. 安装OpenWRT
    • https://youtu.be/UPKpEvyx9_o
  8. PVE修改ip
    • https://www.xhling.com/post-398.html
  9. Android TV 9 x86
    • https://www.youtube.com/watch?v=7mdV1r8mUPo
    • https://www.bilibili.com/read/cv6750143
    • https://www.cnblogs.com/Summer6/p/13696468.html
  10. 硬盘直通
    • https://foxi.buduanwang.vip/virtualization/1754.html/
  11. 硬解
  • https://www.moeox.com/155.html

你可能感兴趣的:(倍控 N5095/N5105 AIO 小主机 PVE+OpenWRT+Ubuntu+Android TV)