如何在Linux 2.6上创建Sis191千兆以太网驱动程序
Sis191驱动程序问题
这个操作方法对于那些拥有sis191千兆以太网集成接口(板载LAN)的人来说,但是不能得到sis191默认驱动程序的工作(实际上,驱动程序被称为sis190,此卡的FastEthernet版本)。 我的宏碁Aspire SA90是一个很好的例子。
注意:这个howto是使用Ubuntu 7.10与内核2.6.22一起创建的
问题
执行时
modprobe sis190
,在一个香草2.6.x内核(我的ubuntu 7.10是2.6.22),你会看到这个错误:
'Can not find ISA bridge'
没有找到网络接口。 如果你不幸运,直到我买了一个PCI网卡,你就没有网络,所以这样做是不可能的。
原因是香草司机搜索ISA桥ID 965,但是我正在执行的是968
lspci -nn
00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS968 [MuTIOL Media IO] [1039:0968] (rev 01)
[...]
00:04.0 Ethernet controller [0200]: Silicon Integrated Systems [SiS] 191 Gigabit Ethernet Adapter [1039:0191] (rev 02)
如您所见,我实际上有一个来自SIS的以太网控制器型号191);
解决方案
我们必须从香草驱动程序,从0x965到0x968或任何你有的ID(参见lspci的输出)更改ISA桥ID,
忽略sis191官方驱动下载。 完全过时(请参见www.sis.com/download ,然后下载中心 >网络驱动程序:SiS191千兆和SiS190 LAN:Linux)
相反,请访问www.kernel.org并获取当前内核版本的.tar.gz文件(参见
uname -r
)。 一旦解压缩
tar -xvzf [file.tar.gz]
在'[kernel_src_folder] /drivers/net/sis190.c'
中编辑驱动程序的源文件。 在第1576行你会发现这一节:
* sis190_get_mac_addr_from_apc - 获取SiS965型号的MAC地址
* @pci_dev:sis190 pci设备
* @net_dev:获取地址的网络设备
*
* SiS965型号,使用APC CMOS RAM存储MAC地址。
* APC CMOS RAM通过ISA桥接。
* MAC地址读入@ net_dev-> dev_addr。
* /
static int __devinit sis190_get_mac_addr_from_apc(struct pci_dev * pci_dev,struct net_device * net_dev)
{
struct pci_dev * isa_bridge = NULL;
struct sis190_private * sis_priv = net_dev-> priv;
u8 reg,temp;
int i
printk(KERN_INFO“%s:从APC \ n读取MAC地址”,net_dev-> name);
isa_bridge = pci_find_device(0x1039,0x0965,isa_bridge);
如果(!isa_bridge){
printk(“%s:找不到ISA桥\ n”,net_dev-> name);
返回0;
}
现在换行了
isa_bridge = pci_find_device(0x1039, 0x0965, isa_bridge);
至
isa_bridge = pci_find_device(0x1039, 0x0968, isa_bridge);
或者你实际拥有的任何ID(我的是0x0968,记得)。
编译和使用新模块
现在,将您的内核配置文件(位于/boot/config-2.6.22-14-generic中的ubuntu中)复制到内核源文件夹,并将其重命名为“.config”。 如果您知道如何处理内核源,则此步骤可能是不必要的。
现在执行
make oldconfig
接着
make modules
但是在10秒左右之后使用Ctrl + C退出,以避免编译整个内核树。 如果我们不做模块,则不会创建下一步所需的临时文件。
构建的重要事项是_only_我们的驱动程序,我们可以使其执行
make drivers/net/sis190.ko
这是编译内核模块的“错误”方式,但是最简单和最快捷的方式。
一旦编译,尝试加载它
insmod drivers/net/sis190.ko
您可能需要先卸载当前的香草驱动程序
rmmod sis190
您可以通过键入来查看它是否有效
dmesg
和
ifconfig -a
启用界面manuall(使用ifconfig)或自动(使用dhclient或等效的DHCP客户端命令)。
现在要永久安装新的驱动程序,将sis190.ko文件复制到modules目录中。 我的位于/lib/modules/2.6.22-14-generic/kernel/drivers/net。 但是先做一个备份的原来的一个! 为了复制,就像打字一样简单
cp [kernel_src_folder]/drivers/net/sis190.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net
这就是所有的人! 祝你好运!