FreeNAS Realtek RTL8168H 驱动程序编译与安装

前言

在最近一段时间我自己购买了一些硬件组装了一个mini主机用作FreeNAS文件服务器,并且组RAID1。

主要硬件如下:

  • Intel(R) Celeron(R) G4900T CPU @ 2.90GHz
  • ADATA 8GB DDR4
  • LITEON 128GB(原笔记本换下来)
  • TOSHIBA 2TB 64MB 7200RPM ×2
  • TP-LINK TG-3269E Gigabit PCIe
  • Cooler Master CPU Fan
  • Onda B365CD4
  • BUBALUS 250W
  • 山寨 Node6 机箱

由于过于大意,主板选购时候没有检查网卡最大传输速率,结果是装完机发现是100M自适应板载网卡, 是的,之前还错买了DDR3插槽的主板,但是这次拆了包装不能退货 。众所周知1Gigabit才是NAS的灵魂所在。在购买这张PCIe网卡之前我也尝试了USB千兆网卡,但是其速度和稳定性令人堪忧,所以退货选购了TP-LINK TG-3269E这张卡,但是当我装上之后发现FreeNAS并不能识别出这张网卡,有点心凉,于是乎我几番搜索终于找到我官方驱动以及安装驱动的一些方法。

正文

Realtek官方驱动源码

驱动文件if_re.ko 提取码: s4uu

直接使用

几番周折,发现FreeNAS不具备编译驱动程序的环境,最后我选择FreeBSD原版ISO镜像在虚拟机上安装,虽然有文章说可以通过git从github拉取源码到/usr/src/目录下在进行编译,但是依旧缺失一些基本的编译工具,所以我最后还是在FreeBSD原版镜像安装的系统中编译驱动程序源码。

我的虚拟机环境

  • CPU:Intel i5 7th Gen
  • 网卡:千兆Intel有线网卡

如上,在正文的开头我已经提供了在以上环境中编译好的驱动程序模块文件,可以尝试在你的FreeNAS中加载此驱动程序,看是否可用,请注意程序的位元数(i386=32bit & amd64=64bit)。官方介绍 TP-LINK TG-3269E 是支持WOL功能的,但我未能通过此网卡实现,同时板载是可以使用WOL,不清楚什么原因导致,有清楚的同学可以在评论区留言,感谢了!

编译

通过FreeBSD官方ISO文件安装完系统后,解压驱动程序源码包,通过FTP工具传到FreeBSD系统中。

官方驱动程序源码包含以下文件

  • if_re.c
  • if_rereg.h
  • Makefile
  • Readme.txt

其中 Readme.txt 是官方编译教程

# 保存系统原有设备代码
cd /usr/src/sys/dev/re
cp if_re.c if_re.c.org
cd /usr/src/sys/modules
cp Makefile Makefile.org
cd /usr/src/sys/modules/re
cp Makefile Makefile.org
cd /usr/src/sys/i386/conf/ #这里再次强调,i386表示32位系统,如果你的系统是64位,请改为amd64
cp GENERIC GENERIC.org
#编译系统内核
vi /usr/src/sys/i386/conf/GENERIC #删除 “re” 所在的行,同上,i386是指32位元
vi /usr/src/sys/modules/Makefile #删除 “re” 所在的行
cd /usr/src/sys/i386/conf  #同上 i386指32位元
/usr/sbin/config GENERIC
cd ../compile/GENERIC
make cleandepend && make depend
make && make install && reboot #这句开头的make会执行很久,具体取决于电脑性能,在虚拟机器中大概30分钟
#把驱动程序源码更新到系统源码中
cd /root/rtl_bsd_drv_v195.00 #注意,请转到你驱动程序源码的目录下
cp if_re.c if_rereg.h /usr/src/sys/dev/re
cp if_rereg.h /usr/src/sys/dev/re
cp Makefile /usr/src/sys/modules/re
#build网卡驱动程序
cd /usr/src/sys/modules/re
make clean && make
#测试和部署驱动程序
kldload ./if_re.ko #把if_re.ko传输FreeNAS中,然后使用kldload加载驱动程序模块,在到FreeNAS的“网络”→“接口”中查看
cp if_re.ko /boot/kernel #复制驱动程序模块文件到内核文件夹中
vi /boot/loader.conf.local #在此文件中首行加入一下内容
if_re_load="YES" # tp-link 1000M #此行不是命令,需要加入文件中
#其中在FreeNAS的“系统”→“微调”中添加,变量=if_re_load,值=YES,类型=loader,描述=tp-link 1000M

到此你可以尝试重启你的FreeNAS,查看是否能开机加载PCIe网卡,并在后面配置好你的网络

写在最后:吐槽一下,通过此事发现,现在太缺互联网分享精神了。