硬件:
主板ASUS P5QL Pro
软件:
CentOS 5.4 64bit
公司最近进的一台机器用的是用的华硕p5ql pro的板子,要上centos系统,最开始没有注意到没有centos54居然不支持网卡驱动,等到PXE加载完,installation报找不到ks文件(我指定了ks的),我这才意识到,原来centos54并不支持这个网卡。。。
实在是不想刻碟,太麻烦,想起来原来赵小明老师跟我们讲过,这种情况,只要把网卡的驱动加载到启动用的initrd.img中就可以了,于是就开始看看怎么把驱动加载到启动文件当中。
首先,当然是要找一台机器把驱动编译好。
驱动可以在asus的官方网站可以下载到。
编译的机器,最好用没有升过级的内核,不然,不保证可以直接用。
编译好之后,可以得到一个名称为 atl1e.ko 的文件
这个,就是我们要用到的文件
接下来,才是重头戏,我们要把这个文件加入到initrd.img中。
开始之前,建议参考一下这篇文s档: http://www.ibm.com/developerworks/cn/linux/l-linux-netinst/index.html
如果你发现里面的那个脚本不能用,恭喜你,你碰到了跟我一样的问题了,我这篇文章的意义就在于此!
使用file命令,我们可以知道initrd.img这个文件是一个gzip文件,那么,我们就要用gzip进行解压
gunzip initrd.img.gz
再使用file命令,我们又可以得知,解压之后的文件,是一个cpio格式的文件,那么,我就可以用cpio来进行解压
解压之后,我们会得到许多目录与文件,因为我们要修改的只是驱动部分,所以要用到的就只有modules目录。
进入这个目录,我们只能看到五个文件
其中module-info是记录硬件设备信息的,在这个文件里面,我们要添加如下三行
eth
"AR8121/AR8113 PCI-E Ethernet Adapter"
其实的atl1e是模块名称,eth是设备类型(eth代表以太网卡),第三行是模块的描述
然后就是第二个文件,modules.alias,在这个文件里面,我们只要添加一行
虽然只有一行,但是解释起来还是挺麻烦的。这里涉及到一些硬件相关的信息。
其1969是硬件厂商的信息,可以从http://www.pcidatabase.com/查到是Atheros Communications的产品,而1026是产品的编号,继续查询可以得知是AR8121/AR8113的芯片。
这些信息的得到,是比较麻烦的,当然,我用的是一张很老的debian的救援盘,然后用lspci -n得到这些数据的
其他的,sv,sd,sc,i等等我也搞不太清楚是什么意思,我反正照着r8169的抄。你可以看看这篇文章:http://www.examda.com/linux/fudao/20091227/094826740-3.html。
接下来,我们跳过modules.cgz,讲讲modules.dep。
这是一个描述模块之间的依赖关系的文件,因为在这块网卡的驱动中没有找到相关的依赖说明,所以我就没有修改此文件。
pci.ids这个文件,是modules目录里面,我们要修改的第二重要的文件
在这个文件里面,我们要添加网卡的对应关系,要添加如下两行:
1026 AR8121/AR8113 PCI-E Ethernet Adapter
记得这两行的写法有一个从属关系,1026是从属于1969的
最后,让我们来说说modules.cgz,通过file命令,我们又可以得知到,这是一个gzip文件,同样,我们要进行解压:
gunzipmodules.cgz.gz
新到的新的modules.cgz,又是一个cpio文件,我们又要用cpio来进行解压
之后,就会得到2.6.18-164.el5这么一个目录,把我们开始得到的atl1e.ko文件拷贝到其中的2.6.18-164.el5/x86_64/目录中(其中还有其他许多ko文件)。
所有的工作都做得差不多了,接下来就是要进行封装了。
首先是封装modules.cgz
gzip newmodules
rm -rf 2.6.18-164.el5 modules
mv newmodules.gz modules.cgz
这里要注意的是把旧的文件modules.cgz文件与解压生成的目录删除以减少体积
这里封装好之后,我们要封装整个intrid.img文件了。
find . | cpio -c -o > ../new
gzip ../new
mv ../new.gz initrd.img
同上面的一样,要把一些与intrid.img不相干的文件文件删除以减少体积。
这个时候所有的东西时都管弄完了,你再用这个新生成的initrd.img进行引导,就可以正确的识别你的网卡并从网络读取文件了。
最后要注意的是:
装好的系统并不能使用这块网卡,装好系统之后,还是要进行网卡的编译。
当然,你也可以学我的,在kickstart文件当中,用%post来完成网卡的编译