首先查询该机器的网卡类型,通过命令可以查看到各种类型网卡
# lspci | grep Net
02:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
02:00.1 SCSI storage controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
02:00.2 SCSI storage controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
02:00.3 SCSI storage controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
83:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
83:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
查找驱动文件,直接grep一些传统网卡型号,例如
vim e1000_hw.h
enum e1000_mac_type {
e1000_undefined = 0,
e1000_82575,
e1000_82576,
e1000_82580,
e1000_i350,
e1000_i354,
e1000_num_macs /* List is 1-based, so subtract 1 for true count. */
};
很显然可以查看到至少支持的网卡类型有这些,当然驱动文件如果没有写进去的,但是也能够加载成功的,也不是那么轻易就能够修改好的,可以grep一下整个驱动目录,会有很多跟网卡型号相关的源文件中,一些case语句都要做相应的修改,类似于:
/* override genric family function pointers for specific descendants */
switch (hw->mac.type) {
case e1000_82580:
nvm->ops.validate = e1000_validate_nvm_checksum_82580;
nvm->ops.update = e1000_update_nvm_checksum_82580;
break;
case e1000_i350:
case e1000_i354:
nvm->ops.validate = e1000_validate_nvm_checksum_i350;
nvm->ops.update = e1000_update_nvm_checksum_i350;
break;
default:
break;
}
这种文件非常多
除了驱动源文件本身,还有一些设置了开机加载驱动的启动项,比如设置了一个开机启动脚本,可能里面就会做一些判断,符合哪些规则型号的网卡,可以加载我们自己需要的驱动,甚至可以限定规则某些型号网卡直接让他们处于down的状态,这都可以通过脚本开限定