服务器基本信息:长城服务器,arm64架构,OS Kylin 4.0.2。
安装内核头文件
一般的安装方法是 apt-get install kylin-headers-${uname -r},以保证头文件的版本正确。Kylin的开放公网源当中没有相应版本的内核头文件,提供的iso里有。
# 插入光盘 sudo mount /dev/sr0 /media/mymedia # 挂载 sudo cd /media/mymedia/pool/main/k/kylin sudo dpkg -i kylin-headers- 4.4 . 58 -20180615_4. 4.58 - 20180615 .kylin_all.deb sudo dpkg -i kylin-headers- 4.4 . 58 - 20180615 -generic_4. 4.58 - 20180615 .kylin_arm64.deb |
或者在apt源中配置iso然后直接用apt安装。
sudo vim /etc/apt/sources.list deb file:///media/mymedia trusty main restricted sudo apt update sudo apt-get install kylin-headers-${uname -r} |
安装好后的头文件路径是
/usr/src/kylin-headers- 4.4 . 58 - 20180615 -generic/ |
安装依赖包
为测试NIC、TOE,我们只需要安装以下包(版本可以更新)。
autoconf_2. 69 -9_all.deb automake_1. 14.1 -2ubuntu1_all.deb bison_3. 0.4 .dfsg-1build1_arm64.deb flex_2. 6.1 -1_arm64.deb |
编译驱动
在 Phytium 系统上编译,必须用 KDIR 指定匹配的内核头文件的路径,否则编译会失败 。
查看帮助信息
make help KDIR=/usr/src/kylin-headers- 4.4 . 58 - 20180615 -generic/ |
编译驱动- 安装到本机同时生成deb文件
make nic_install KDIR=/usr/src/kylin-headers- 4.4 . 58 - 20180615 -generic/ # 编译nic版本驱动 make toe_install KDIR=/usr/src/kylin-headers- 4.4 . 58 - 20180615 -generic/ # 编译toe版本的驱动 |
编译驱动 - 仅生成deb文件
make nic_deb KDIR=/usr/src/kylin-headers- 4.4 . 58 - 20180615 -generic/ make toe_deb KDIR=/usr/src/kylin-headers- 4.4 . 58 - 20180615 -generic/ |
编译过程中,看到 Patching with 4.4 patch,说明内核和头文件正确匹配。
编译后,在驱动目录下 debrules/debinaries 下生成 deb 的安装包。
复制 deb 包到其他待安装的服务器,安装驱动包
dpkg --force overwrite -i *.deb # 如果服务器有正在使用的驱动版本,全量安装会报冲突,可以依次执行 dpgk --force overwrite -i xxxx.deb 来安装 |
加载驱动并开始测试
modinfo cxgb4|head # 查看驱动信息 rmmod cxgb4 # 卸载驱动 modprobe cxgb4 # 加载NIC驱动 modprobe t4_tom # 加载toe驱动 |
驱动加载之后,就可以识别Chelsio网卡。但是网口状态没法自动UP,还需要手动将网口状态置为UP,配置IP之后进行测试。
sudo ip link set dev enp4s0f4 up |
卸载驱动
卸载cgxb4比较方便,
卸载toe需要重启服务器;如果想要避免重启,则步骤比较繁琐,
# 步骤一 [root @host ~]# modprobe t4_tom unsupported_allow_unload= 1 # 步骤二 [root @host ~]# cat /sys/module/t4_tom/refcnt # 如果reference是 0 ,驱动可以直接被unload,调到步骤 3 # 如果reference非 0 ,需要load一个COP policy,先disable offload。 # a. 创建一个policy文件 [root @host ~]# cat policy_file all => !offload # b. Compile and apply the output policy file [root @host ~]# cop –o no-offload.cop policy_file [root @host ~]# cxgbtool ethX policy no-offload.cop # 步骤三 unload 驱动 [root @host ~]# rmmod t4_tom [root @host ~]# rmmod toecore [root @host ~]# rmmod cxgb4 |