用倍控 N100 主板构造 All in One 主机

起因

2025-06-14 夜晚,窗外雷声不断。直到我无论如何都连不上自己的 NAS,我才打开了弱电箱。

之前出现过两次 NAS 无征兆死机的情况,重启后正常。但是这次,我重启后,发现它的风扇断断续续地转,然后自动重启。循环几次后,彻底开不了机了。

第二天,我拿着它去了电脑城,经检查发现,电源和主板都损坏了。本来这种东西都是二手的蜗牛星际主机改装的,维修还不如换新;并且刚好就要到 618 了,我正好也想趁此“机会”给 NAS 升级换代,机箱留下,其他的换掉。

维修摊位

顺便说一下,之前的主板是海尔 KJ5116,对应的 CPU 是英特尔 J3160。

换下来的电源和主板

选型与组装

经过简单的对比,结合自身的实际需求,我决定给它上 N100 处理器的主板,这样可以兼顾性能和能耗,硬解支持也不错。

鉴于自己做 NAS 的需求,我一开始希望主板的规格如下:

  • Mini ITX 尺寸
  • 多一些 SATA 接口(最好有 4 个)
  • 有 USB 3.0 的接口用来外接 U 盘、移动硬盘这样的设备,快速拷贝文件
  • 能够接 NVMe 硬盘(能利用闲置硬盘)
  • 不需要太多网口(自己本来就有路由器)
  • DC 供电(以后配 UPS 方便)
  • 可以装黑群晖(此前的 NAS 就是群晖系统的,我一直想迁移到飞牛 OS,但是当时创建存储池时,就算 RAID 类型选 Basic 类型,也没法在别的系统中读写,故想要迁移还要把硬盘放黑群晖上,再备一块大硬盘来临时放数据)

群晖系统中创建的存储池,即使 RAID 类型选 Basic 类型,在外部也读不了硬盘文件

但是我稍微看了一下网上在售的 N100 小主板,最符合条件的基本上都是多网口的,而我本来也不需要那么多网口。稍微找了一下网口少一点的,价格都到八百多了。而且,DC 供电的主板不多,能找到的在其他方面不符合要求,所以这两个要求后来就去掉了——最重要的是,考虑到要挂四块大容量的机械盘,担心 DC 供电不稳定。

最终,我选择了倍控 1264 主板,闲鱼上花了 678.97 元。

官网上这块主板的图像

这块主板自带散热器,但是需要 DDR5 4800MHz 的笔记本内存。因此,我还在闲鱼上买了内存条和电源:

  • 内存条:Ramaxel DDR5 12GB 4800,106 元
  • 电源:FLEX 1U 规格,250W,49 元

内存条的商家一直没发货,我催了三天才发货,因此直到 6 月 22 日,收到内存条后,我才得以组装机器。

主板、电源和内存条

组装过程并没有什么特殊的注意事项。中途安装 NVMe 硬盘时发现没有导热胶条,所以跑到电脑城买了一条,花了 5 块钱。

拍这张图时,还没把硬盘笼安装上去

另外,装机的时候,我发现主板上有一个 USB 接口,想着利用它,从这里插 U 盘引导黑群晖;但是我目前有的 U 盘都太大了,受限于硬盘笼的结构,没法插上去,于是买了块尺寸非常小的 U 盘,花了 11.67 元。

迷你 U 盘

硬要说有什么困难,那就是硬盘笼最上面的 SATA 接口的塑料件连接不牢易脱落了。好在结构上没什么损坏,只要插上去就能用。

硬盘笼最上面的 SATA 接口的塑料件连接不牢易脱落

这块主板默认上电自启,而且 BIOS 里面不能关闭,要用硬件跳线关闭。因为我就是要上电自启,所以不用管这方面。

安装 Windows 11

我并没有急着装黑群晖,因为实际上我还没想好安装方式——物理机安装,还是虚拟机?虚拟机用哪个平台?

在想好之前,我先安装 Windows 11,运行一些测试软件,简单测试性能。

进入 OOBE 后,我才发现,网卡要另外装驱动。不知道怎么回事,这次居然能够安装过去,没有要求登录微软账号。因此,安装完毕,也没法联网安装核显驱动,一直使用基础的显示驱动。

未安装驱动

查了官方介绍,它的网卡是 Intel i226。从别的电脑下载驱动,安装后,就能够通过 Windows 更新安装核显驱动,显示正常了。

正常显示效果

但是这时又有一个问题:没有声音。查设备管理器,发现有未知的“多媒体音频控制器”设备。

未知的“多媒体音频控制器”设备

查找,发现是 Alder Lake-N PCH High Definition Audio Controller。但是我想方设法也没法单独安装它的驱动,最后无奈求助于驱动精灵,才发现是 Intel SST 的问题。

从驱动精灵下载太慢了,我就在网上找驱动。英特尔并未提供这个驱动,不过其他电脑厂商有。我下载了联想的 ISST 驱动,原先因为它会检查主板厂商而拒绝运行,没想到能够安装,而且安装完毕后确实解决问题了。

花屏

时间精力原因,我并没有做全面完整的硬件测试。比较顺利的就一个 CPU-Z 里面的基准测试了:单线程 320.1 分,多线程 1219.3 分,多线程倍率 3.81。

CPU-Z 的基准测试

之后我还想测 Cinebench。到这里我才发现一个非常大的问题:测试过程中会突然花屏,无法进行任何操作,只能重启。

花屏情况一例

实际上花屏的问题,不测试的时候也偶尔会出现;但是跑 Cinebench 时,必定会花屏。

我起初以为是过热,于是监测硬件状态。但是我发现在花屏前,没有硬件上的异样。后来查找资料,发现很可能是内存问题。我手头就一块刚买的 DDR5 内存条,没法换别的内存条测试,只好用 memtest86+ 测试,结果正常。

我询问 Deepseek,彻底重新安装了核显驱动,也无济于事。处理器诊断工具也未发现异常。

处理器诊断工具检测结果

这里插一句:千万不要随便开 BIOS 里面的看门狗相关的配置,否则电脑会无限重启。好在这块主板清空 CMOS 很方便,按背板的按钮就行了。

无奈,我想把主板寄回到卖家。卖家说大概率是内存问题,但我没有可替换的内存条,所以让我先把系统装到 NVMe 硬盘上看,仍然会花屏。于是我就把主板寄了过去,花费运费 11.5 元。

卖家复现了我的问题,不过换了一根内存条后,就正常了。我也不知道为什么原先那根能通过测试的内存条就不行,估计是不兼容吧。我找了同款,价格比卖家报价低一点,于是我就购买了卖家测试用的同款内存条:枭鲸 笔记本 DDR5 16GB 4800MHz 内存条,花了 209 元。之所以选 16 GB,是因为我能买到最小的就 16 GB 了。

寄回来后换内存条再测试,就没有花屏的问题了。测试结果:多核 156 分,单核 58 分,多核倍率 2.7。

Cinebench 测试结果

黑群晖测试

此时我还是纠结是直接装黑群晖,还是安装虚拟机系统。反正 U 盘已经到货了,就拿它装黑群晖的引导吧。

我用的是 GXNAS 提供的引导,使用 SA6400 机型的引导。根据买二手 NAS 时,引导 U 盘里面的 SN、MAC,改 user-config.yml。然后把 U 盘插到主板上的接口就行了。

迷你 U 盘插到主板上的效果

此后的过程没什么好说的,网上都能找到教程,而且绝大多数都是图形化的界面。

引导启动完毕

系统安装完毕

但是一定要注意删除数据的提示。我原本以为它说的“磁盘 1”指的是自己的 SATA 硬盘,就把它们都弹了出来。结果它删除的是 NVMe 硬盘的全部数据。当时我的 NVMe 硬盘里面还装了自己往期的视频成品文件,担心上次雷击导致原始数据损失(目前为止 NAS 的硬盘数据都是生死未卜),就留着这些文件。谁料想,居然是这一步误删了。这一步群晖没有说硬盘 1 的详细信息,让用户分辨是否要删除数据,是一个优化项。

群晖安装时删除数据提示

好在后来那些大硬盘里面的数据没事,恢复挂载也很方便。

恢复后的存储空间信息

至于系统,使用没什么问题,硬解、相册没有问题。

安装 PVE

这时,我决定装虚拟机,将这台 NAS 搞成 All in One(AIO)的设备,利用主板上的四个网口,同时负责路由器和 NAS,并且能够开多个其他虚拟机。这样一来,就不需要再开一台路由器了。

在此之前,家里的网络图如下:

之前的网络图

我用的虚拟机管理系统是 Proxmox VE(PVE),开源,据说对核显虚拟化支持比较好。

主板上的四个网口从左到右的编号为 0、1、2、3,我们选择 0 号口为管理口:

安装 PVE 时的部分网络图

安装时要注意,默认情况下它需要清空一整块硬盘,同样也不好看出来硬盘信息。为了不误伤其他硬盘的数据,需要临时弹出。

有一点需要吐槽:在 4K 屏幕上,安装界面的字太小了,根本看不清。

PVE 安装界面

安装软路由

安装好 PVE 后,首先安装的就是基于 OpenWRT 的 iStore OS。官方详细介绍了它在 PVE 上的安装步骤。我将它作为主路由,但是没有像教程里面添加虚拟网络设备,而是添加对应的 PCI 设备。

安装软路由时的部分网络图

接下来算是非常麻烦且凶险的环节了,因为涉及到网段的变化,加上软路由在虚拟机中,很容易导致主机失联。我找到了一个写得比较详细的资料,参考此方法尝试。

此前我启动 iStore OS 后改过网段,但是那是在连着此前的路由器的情况下才改的(那个路由器的网段是 192.168.100.0,和 iStore OS 默认的冲突了)。要做成主路由,肯定要让它直接连接光猫的。而光猫路由的网段是 192.168.1.0,PVE 设置为静态 IP 192.168.100.2,切换网络后是连不上 PVE 的。

我先去掉软路由,让光猫直连充当 AP 和交换机的路由器,PVE 的管理接口也连它:

第一次切换连接

查阅资料后,我算是搞懂了要改哪些地方:

  • /etc/network/interfaces,改 IP、子网掩码、默认网关:

    1
    2
    3
    4
    iface vmbr0 inet static
    address 192.168.1.XXX
    netmask 255.255.255.0
    gateway 192.168.1.1
  • /etc/hosts,改 pve.lan 映射的 IP 地址:

    1
    192.168.1.XXX pve.lan pve

上面的 XXX 是当时某个没使用的地址。原文还提到改 /etc/issue,但那只是启动时的提示信息,不影响实际功能。

然而我发现,重启后,仍然连接不上 PVE 的网页端,SSH 倒是能够访问。

参照 https://blog.csdn.net/u011781521/article/details/135926563https://www.liujason.com/article/565.html 的方案,我试图重启服务:

1
2
3
systemctl restart pveproxy pvedaemon
service pve-cluster restart
systemctl restart pvestatd

排查出来一个问题:

1
journalctl -xeu pve-cluster.service
1
Jun 30 13:18:01 ding-pve pmxcfs[2698]: [main] crit: Unable to resolve node name 'ding-pve' to a non-loopback IP address - missing entry in '/etc/hosts' or DNS?

原来是之前修改 hosts 文件时,按键粘滞导致输入错误。修改后就能访问了。

确认 PVE 和 iStore OS 配置正确后,我开始照教程更改节点的 vmbr0 网络的属性:

  • IPv4:192.168.100.2/24
  • 网关(IPv4):192.168.100.1

更改 vmbr0 网络的属性

保存并应用后,就不能通过现有的方式连接机器了。此时切换连接,将电脑连到 AIO 主机的其他任何一个接口(我选择接口 1):

第二次切换连接

大约过了十分钟,我才成功连接到 iStore OS 上。此时在网口设置里面,把 eth0 设为 LAN 口,找一个口设为 WAN 口(我选择 eth3,对应最右边的接口):

设置网口

然后切换连接,光猫连接 AIO 刚才设置的 WAN 口,AIO 的 LAN 口连到充当 AP 和交换机的路由器,这个路由器连到电脑上:

第三次切换连接

之后就可以正常设置软路由,使其能够联网了。

此时,如果你想在 PVE 安装软件包,可能会发现连不了网。经检查,发现是网关和 DNS 未改。改了之后就正常了。

改 DNS

安装黑群晖

相比于前面的软路由,黑群晖的安装真的简单。参照 GXNAS 的教程就完事了。至于怎么把现有的硬盘给黑群晖的虚拟机,有两种方式:

如果可以的话,我推荐后者。不过我想把一些磁盘另作他用,所以还是选择了前者。

首先查看 PVE 连接的硬盘:

1
ls -l /dev/disk/by-id/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lrwxrwxrwx 1 root root  9 Jul  2 23:16 ata-HUH728080ALE601_VLH2TX4Y -> ../../sdb
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-HUH728080ALE601_VLH2TX4Y-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-HUH728080ALE601_VLH2TX4Y-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-HUH728080ALE601_VLH2TX4Y-part3 -> ../../sdb3
lrwxrwxrwx 1 root root 9 Jul 2 23:16 ata-ST4000VX000-2AG166_ZDHAWNZQ -> ../../sdc
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-ST4000VX000-2AG166_ZDHAWNZQ-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-ST4000VX000-2AG166_ZDHAWNZQ-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-ST4000VX000-2AG166_ZDHAWNZQ-part3 -> ../../sdc3
lrwxrwxrwx 1 root root 9 Jul 2 23:16 ata-Teclast_256GB_A850_AA000000000000001256 -> ../../sdd
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-Teclast_256GB_A850_AA000000000000001256-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 9 Jul 2 23:16 ata-TOSHIBA_MG09ACA16TE_Z480A0GXFQEH -> ../../sda
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-TOSHIBA_MG09ACA16TE_Z480A0GXFQEH-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-TOSHIBA_MG09ACA16TE_Z480A0GXFQEH-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jul 2 23:16 ata-TOSHIBA_MG09ACA16TE_Z480A0GXFQEH-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Jul 2 23:16 dm-name-pve-root -> ../../dm-1

需要关注不带编号的硬件。记下前面的全称,如 ata-HUH728080ALE601_VLH2TX4Y

要把对应的硬盘映射给虚拟机,执行下面的命令:

1
qm set 虚拟机编号 --sata通道ID  /dev/disk/by-id/硬盘全称

如:

1
qm set 101 --sata2  /dev/disk/by-id/ata-HUH728080ALE601_VLH2TX4Y

就是把 ata-HUH728080ALE601_VLH2TX4Y 硬盘映射给编号为 101 的虚拟机的 SATA 2 通道上。

至此,网络图如下:

现在的网络图

核显共享

这个是重头戏。

我另外安装了 Windows 11,随即开始测试核显共享。对于 N100,使用 SR-IOV 共享其核显。过于复杂,我就省去中间查阅大量资料和遇到的问题的过程吧。

安装 GitHub 上的 strongtz/i915-sriov-dkms 可以开启 SR-IOV,这个项目也详细写明了安装过程。

在 PVE 上安装

不要直接复制粘贴代码,其中一些变量要根据实际情况修改。

  1. 安装构建工具:

    1
    apt install build-* dkms
  2. 安装头文件(版本号要根据系统的 Linux 版本来,可以通过 uname -r 查看):

    1
    apt install proxmox-headers-6.X proxmox-kernel-6.X
  3. 下载 deb 包(这一步还请到项目主页查看最新的链接):

    1
    wget -O /tmp/i915-sriov-dkms_XXXXX_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/XXXXX/i915-sriov-dkms_XXXXX_amd64.deb"
  4. 安装 deb 包:

    1
    dpkg -i /tmp/i915-sriov-dkms_XXXXX_amd64.deb
  5. 编辑 /etc/default/grub,修改 GRUB_CMDLINE_LINUX_DEFAULT 字段,添加:

    1
    intel_iommu=on i915.enable_guc=3 i915.max_vfs=X module_blacklist=xe

    其中 i915.max_vfs 的值表示要拆分成多少个虚拟 GPU。我设置的是 3。

  6. 更新 grub 和 initramfs:

    1
    2
    update-grub
    update-initramfs -u
  7. 编辑 /etc/sysfs.conf,添加一行:

    1
    devices/pci0000:00/0000:00:02.0/sriov_numvfs = X

    值和第五步设置的值一样。注意前面核显的 PCI 地址,虽然一般来说不会有错,但是还是检查一下是不是 00:02.0

    1
    lspci | grep VGA
    1
    00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]
  8. 重启。

之后在 PVE 中,可以通过 lspci | grep VGA 查看是否有虚拟 GPU 了:

1
2
3
4
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]
00:02.1 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]
00:02.2 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]
00:02.3 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]

分配虚拟 GPU

之后,在虚拟机硬件设置中,可以把对应的 PCI 设备分配给虚拟机。一定不能分配 00:02.0 这个主 GPU,否则会导致系统崩溃。而且,如果你想直通核显,要把上面的流程都逆向一遍,然后才能继续。

将虚拟 GPU 分给虚拟机

至于其他的一些选项,各个教程的说法不一致,一些教程甚至要求修改虚拟机配置文件,我也没法给出答案。反正我是勾选上了“主 GPU”和 “ROM-Bar”,修改不修改虚拟机配置文件似乎没什么影响。

对于黑群晖,分配好了就能用,硬解正常;对于 Windows 11,要等待安装好核显驱动。而且此后如果想要使用核显,只能通过 RDP(需设置组策略)、RustDesk 等方式,在 PVE 里面就算设置显示器,也用不了核显来硬件加速。所以要在使用前提前配置好。

但是我发现了一个非常恶性的问题:黑群晖和 Windows 11 在分配了虚拟核显后,只能启动一个,无法同时运行,其中一个运行必定会导致另一个被关闭,有时候还会导致宿主机崩溃重启。我至今也没有找到问题原因和解决方案。

Linux 虚拟机的额外安装过程

为了排查上述问题的原因,我新开了个 Debian 的虚拟机。然后我才发现,Linux 虚拟机也要照之前给的那个项目的文档进行配置。而且,对于 Debian,卡在了安装 linux-modules-extra-XXXXXX 是版本号)上。因为这只是验证,我就换成了已经经过作者验证的 Ubuntu。

  1. 安装构建工具:

    1
    apt install build-* dkms linux-headers-$(uname -r) linux-modules-extra-$(uname -r)
  2. 下载安装 deb 包(同样到项目主页查看最新的链接):

    1
    2
    wget -O /tmp/i915-sriov-dkms_XXXXX_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/XXXXX/i915-sriov-dkms_XXXXX_amd64.deb"
    dpkg -i /tmp/i915-sriov-dkms_XXXXX_amd64.deb

    注意,PVE 虚拟机默认开启了安全启动,所以安装过程会提示设置密码,下一次重启要输密码(只需要输一次)。

    因为有安全启动,下次启动需要输密码

  3. 编辑 /etc/default/grub,修改 GRUB_CMDLINE_LINUX_DEFAULT 字段,添加:

    1
    i915.enable_guc=3 module_blacklist=xe
  4. 更新 grub 和 initramfs:

    1
    2
    update-grub
    update-initramfs -u
  5. 重启,输密码。

之后可以通过 dmesg | grep i915 看虚拟 GPU 是否被内核识别,也可以通过 vainfo 查看是否能够硬解。

查看是否硬解

可以在 PVE 上安装 intel-gpu-tools,使用其中的 intel_gpu_top 命令查看核显运行情况。

直接执行 intel_gpu_top 命令可能会报错:

1
2
3
Failed to detect engines! (No such file or directory)
(Kernel 4.16 or newer is required for i915 PMU support.)
Segmentation fault

这时可以定义设备:

1
intel_gpu_top -d sys:/sys/devices/pci0000:00/0000:00:02.0

就能够查看了。

如图所示就是 Jellyfin 使用硬解的情况。

Jellyfin 使用硬解的情况

我在黑群晖和 Ubuntu 上都分配了虚拟核显,安装了 Jellyfin,并设置了硬解。发现它们能够同时运行,但不稳定,Render/3D 部分可能会爆满,然后整个机器崩溃。估计 N100 这样的小身板,不太能够承受重一点的硬解任务吧。

至于为什么 Windows 11 和黑群晖的虚拟核显不能共存,我还是不得而知。谁成功实现了可以告诉我一下,这对我还是比较重要的:我希望能够在后台用 Windows 11 跑一些要用到核显的任务(比如做 POV 的谷歌地球地图轨迹录制:虽然 Ubuntu 也能安装,但是对应的覆盖层加载器 geos 似乎只支持 Windows,原作者已不更新,我也无暇更改)。

总结

此后我还安装了 Home Assistant OS。不过 16 GB 的内存也基本上到极限了。可惜 CPU 支持的最大内存容量就是 16 GB,也没有扩展的空间了。

运行 iStore OS、黑群晖、HAOS 时的机器情况

到这里就算完成了,我就放心地把它放到弱电箱了。

弱电箱里的 AIO 主机

说实话我觉得很奇怪,PVE 里面的内存占用率远高于虚拟机里面显示的。网上说是因为有硬件直通,但是再怎么样也不应该差这么多吧。

PVE 里面的内存占用率远高于虚拟机里面显示的

作为 24 小时运行的设备,我也在意它的能耗。我接了三块机械盘,除了刚配置好那段时间能耗大,其余时间,待机能耗在 40 W 左右,峰值也很少在 50 W 以上。虽然不如以前的 NAS 节能,但是考虑到这是台 AIO 设备,同时包含了以前软路由的功能,也能说得过去。

能耗图表

这次总计花费 1071.14 元(买多的配件也记在内),说实话有点多。但毕竟这是台 AIO 的设备,把换下来的软路由卖二手的话,还是可以的。

搞完这些,已经是 7 月 2 日了。第二天过生日,我自己也是好好地犒劳了自己。

一个人吃海底捞