国产CPU能不能做软路由?自费探索零刻LZX
创作立场声明:本人与被评测产品没有任何利益关系,评测产品为本人主动自费从公开渠道购买。本人一概不从事有尝产品评测或类似市场活动。本文是完全自发的技术分享,不应被认为是任何形式的营销活动。
在张大妈零刻LZX这台运行着国产兆芯CPU的小NUC已经有好几篇评测了,主要是从办公、轻量使用的角度来评测了一下自带的UOS和跑Windows的表现。既然这台小机器有两个千兆网口,那么问题来了,这台机器能不能做软路由?能不能折腾?
这台机器是我自费1099元从某多上买的,不是厂家送测,100%自掏腰包来满足下自己的好奇心,顺便给垃圾佬们一个明确的答复:是的,事实证明,这是一台相当全能的软路由!
太长不看的总结:
- 可以跑PVE实现多软路由,而且PVE下已经完美实现设备直通(IOV,即VT-D)。ESXi实测不支持兆芯CPU。Unraid没测,应该问题不大。
- Windows虚拟机直通显卡后可以实现4K@60Hz显示输出,可以做软路由的同时兼做HTPC。但是很可惜未实现Windows HDR。
- 低负载整机功耗17W,高负载30W。CPU核心低负载温度50°。风扇调度比较积极,略有声音。
整机功耗确实高于Intel J系列N系列CPU的软路由/工控机(我自己的N3150无风扇软路由低负载6W左右)。但是讲道理,零刻LZX的WiFi网卡也要耗电,NVME硬盘普遍功耗比SATA的稍高一点,风扇也是两个,加起来这个功耗不算夸张。
- 整体完工程度比较高,软件上BIOS还是驱动程序虽然简陋但是未发现明显bug,硬件上做工尚可。
- 总体性能略低于J4125,大概是N3450的水平。对于纯软路由而言CPU性能足够对付千兆宽带,同时内存和硬盘性能大大过剩了,适合挖掘潜力同时作为HTPC、NAS、容器平台来使用。
结合1099的价格,值得考虑作为一台高配的软路由使用。
下面是下折腾PVE的具体经验
第一个坑:写USB盘。
先是卡在写盘上,我常年用Rufus,Proxmox也说Rufus可以,但是要DD模式,实测不行,PVE会找不到ISO。后来按照官网指示用Etcher搞定,傻瓜化操作。
第二个坑:BIOS
这台小机器支持UEFI和Legacy BIOS,默认只开UEFI。我尝试用Legacy方式从U盘启动,直接卡死在PVE欢迎安装界面。怀疑legacy BIOS有bug,推荐大家只用UEFI。
还有BIOS里面记得打开IOV(IO虚拟化),默认关闭。
第三个坑:PVE安装失败
UEFI USB模式启动PVE安装后,DHCP过程后,显示Starting a root shell on tty3,然后就显示Installation aborted - unable to continue
这个我翻到了Reddit上有类似的问题,然后指引我找到了这个帖子。作为存档我解释下,这时候PVE的安装程序试图起X server来显示图形化安装向导,但是由于显卡的兼容性问题,无法启动。这个问题可能会发生在比较新的AMD显卡上,这个兆芯集成的是一个冷门到不行的GPU,这里中招很正常。
方法是在root@proxmox:/#下面,依次跑这些命令,新建一份xorg.conf配置文件。
$ chmod 1777 /tmp
$ Xorg -configure
$ mv /xorg.conf.new /etc/X11/xorg.conf
然后用vim或者nano打开上面文件(我用的PVE6.3里面没有vim,只有nano):
$ nano /etc/X11/xorg.conf
往下翻,在Section "Device" 里面,会找到类似 Driver "modesetting"的字样。把modesetting替换成fbdev。按^X保存。据反映,某些AMD显卡这里会显示Driver "amdgpu",一样把amdgpu替换成fbdev。其实原理就是让X server不要试图用GPU加速,就用最基础的framebuffer方式显示GUI。
最后施魔法:
$ startx
终于看到PVE安装向导了。后面就是傻瓜化操作了。
第四个坑:PVE蜜汁磁盘空间
默认喜欢瞎分区,硬是分了local存放ISO镜像,local lvm存放虚机磁盘,而且加起来还不到200G?这256G的NVME就这么被吃了?
什么年代了分什么区啊:
root@pve:~# lvremove pve/data
root@pve:~# lvextend -l +100%FREE -r pve/root
然后Datacenter-Storage里面删除local lvm。双击local,content里面把除了snippets以外都选上,所有东西都存在local里面,一团和谐。
第五个坑,初步搞定PVE后我狂妄了,能不能让PVE显示CPU温度呢?
这里感谢ivanhao的PVE Tools,执行以下命令:
root@pve:~# echo "nameserver 8.8.8.8" >> /etc/resolv.conf && rm /etc/apt/sources.list.d/pve-enterprise.list && export LC_ALL=en_US.UTF-8 && apt update && apt -y install git && git clone https://github.com/ivanhao/pvetools.git && cd pvetools && ./pvetools.sh
用pvetools先替换国内源(阿里云),去除订阅,最后试试安装温度检测--额,不出所料的失败了,找不到配置文件。至于设置降频省电还是可以的,能认出来。
这时候奇迹发生了,重启后PVE正常显示了CPU温度。
第六个坑,大BOSS:IO虚拟化 IOV
根据资料,兆芯的虚拟化是用了Intel KVM的相关驱动代码,因此大胆用下面的方式
$ nano /etc/default/grub
把原来
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
替换为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off"
来启用iommu。其中iommu=pt是防止Linux试图接触(touching)无法直通的设备,属于以防万一的选项,建议开启。
Ctrl+x保存然后
$ update-grub
用nano编辑/etc/modules 末尾加上以下模块,每个一行
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
同样nano编辑驱动黑名单文件 /etc/modprobe.d/blacklist.conf,同样每个一行。让PVE别去动显卡声卡和无线网卡,让给VM使用。
blacklist snd_hda_intel
blacklist snd_soc_skl
blacklist snd_hda_codec_hdmi
blacklist iwlwifi
这里可以准备重启pve看看PVE能否成功启动了,自求多福吧
$ update-initramfs -u -k all
$ reboot
还好,系统正常启动了。这时候已经可以往VM里面添加PCI设备了,但是列表里面很多名字都没显示出来,只能依赖lspic -v查看
我决定把显卡,声卡(包括HDMI集成的声卡),wifi三个东西直通。跑以下命令:
echo "options vfio-pci ids=1d17:3a04,1d17:9144,1d17:3288,8086:095a" > /etc/modprobe.d/vfio.conf
下面两行添加到/etc/modprobe.d/kvm.conf里面去纯粹是增加点兼容性用的,应该可以不加....吧?
options kvm ignore_msrs=1
options vfio_iommu_type1 allow_unsafe_interrupts=1
再次update-initramfs -u -k all && reboot
创建VM时候就可以把PCI设备直通过去了,00:01.0是显卡,00:01.1是HDMI声卡,00:14.0是板载realtek声卡,04:00.0是Intel 7265无线网卡(垃圾,多花几块钱上AX200宣传上好看多了,有WiFi6的国产NUC!)。当然也可以用简单粗暴的办法,就是勾上all functions,比如显卡对应的设备就变成00.01,附带的HDMI声卡就不用重复添加了。
准备装Win10。CPU的高级选项里可以把NUMA勾上,还有就是把AES勾上,后者可以大大加快SSL相关运算。vCPU我一开始是选4个,后来发现压测时候所有CPU都占满的话会让整个PVE失去响应,简单粗暴的办法就是限制为2个vCPU。其他配置看下图:
顺利搞定
其中Windows没有内置Virtio网卡驱动,这里可以下载,安装好后显示为Redhat Virtio Ethernet Adapter...这个ISO还附带QEMU Guest Agent,顺带一起装了吧,可以更加优雅的从PVE关闭Windows VM。再从Intel官网安装和下载AC7265和蓝牙的驱动后,Win10的设备管理器里面已经没有未知设备了。
这时候PVE里面再次修改Win10 VM直通的显卡设备00:01,把primary GPU勾上。把机器后面的HDMI线接上显示器,插电,开VM,屏幕轻松点亮!
结论
兆芯KX6000系列已经走在正确的道路上,麻雀虽小五脏俱全的SoC设计,成熟现代的周边支持(DDR4,NVME),Linux核心的完善支持(从Kernel 5.3开始完整支持兆芯KX6000系列),堪用的Windows驱动,借助TSMC工艺实现的接近3GHz的频率,这些让KX6000已经可用。这是伟大的一步,其意义就在它已经超越了最坏情况下的Plan B,而切切实实可以考虑替代工作在各部门办公室里、医院里、工厂里的数千万还在运行着XP的陈旧机器(是的,官方有XP驱动!)。
正如无数评测指出的,KX6000的问题在于IPC(每时钟执行的命令数量,可以简单理解为单核效率)。我相信兆芯也完全意识到这个问题,KX7000的研发重点据说就是提高IPC。以史为鉴,AMD在推土机架构上沉沦了将近10年后,依靠一份全新的设计将IPC推高了50%,实现了对牙膏厂的华丽逆袭。兆芯需要的可能是就是类似的一份大胆的全新设计,以及一点点类似于牙膏厂陷入7nm泥坑那样的运气。
之后会怎么样,一切皆有可能。

J4125 8+256 1099能买到?连emmc的都够呛 拿准系统比价格?
请推荐几个便宜的arm的国产机子
我说,这性能就别吹了吧,联想m93p这个价格能装出一台i5,性能天差地远……如果是性能类似的j4125这价位都能买一台半,so,为啥买他?
只要有usb3.0或者minipcie的单口也没问题,手头还有绿联ax88179一块
新3,刷高恪,多拨nat1就可以,没有ipv6,或者找个稳定的op也可以,需要懂配置,成本70左右,然后自己挂ap
这个看不懂。。。。。。好复杂啊
每次看文章,就觉得好多大神,而我们这些菜鸟看都没看懂
我接了这盘,不如4125是因为在kvm下有性能损耗,裸win10的话和j4105性能差不多。
是本人没错了
S1也是同样的帖子楼主本人吗
一模一样的想法,谢谢老板先踩坑
起步阶段,这个U市场应该是在保密要求高的行业,慢慢来吧
同楼,层主搞定了的话告知下
这个u少指令集吧?
你的正常使用噪音大么?我的声音特别大,BIOS里也没有调整的
软件也检测不到风扇转速
敢为人先,
这款的精髓是双网卡。
跟zen差老远了
1100买它做软路由???呵呵,单核性能弱鸡一个
性能差功耗高…价格也不便宜…坑还多
plan b 说得好
可以硬解4k么
不可以 兆芯是x86的结构 兼容市面上大多数软件
国产加油!china No1!
你就当他是当年的amd,期待他研发出自己的“ZEN”的那天早一天到来就好了
本来挺期待,没想到原来还不如4125,看来我的4105可以安心用了
我弄了台每天在网页上看电视剧,也还行,uos系统有浏览器也够用了
可以通俗点说是什么吗?菜鸟路过
新的本来就不能和捡垃圾组软路由相比,不过无论是国产还是捡垃圾,都有折腾的快乐嘛
性能不到4125这个有点低了,本来有意入手的