今天翻旧电脑,发现了这个N年前遗忘到角落里的技术记录,分享出来给各位搞不定驱动的小伙伴,不知过时没有。
cdlinux网卡驱动的编译、安装、集成
沙尘暴,QQ:350037408,2014年4月24日晚。
新入手一清华同方NoteBook,自带RTL8188E无线网卡,
GRUB硬盘启动CDlinux.iso,编辑menu.lst :
map --mem (hd0,0)/CDlinux.iso (0xff)
map --hook
kernel (0xff)/CDlinux/bzImage quiet CDL_LANG=zh_CN.UTF-8 CDL_DIR=/ CDL_IMG=CDlinux.iso CDL_GUI=yes i915.modeset=0
initrd (0xff)/CDlinux/initrd
boot
CDlinux不认RTL8188E无线网卡,想办法自己搞。
记录如下:
1、下载源码树(存放位置随便,只要CDlinux能读取的地方都可以):
ftp://distro.ibiblio.org/pub/lin ... evel-0.9.7.1.tar.xz
2、下载编译环境(放在CDlinux光盘的 CDlinux/extra 目录下):
ftp://distro.ibiblio.org/pub/lin ... /extra/devel-cdl.md
3、下载网卡驱动。RTL8188E无线硬件ID为:PCI\VEN_10EC&DEV_8179&........,10EC是Realtek厂家代号,8179为芯片型号。
其Linux驱动包含在RTL8188CE中,OK,下载
网页:http://www.realtek.com/downloads ... oads=true#RTL8188CE
驱动:ftp://WebUser:fh7SkVT4@58.211.24 ... 2.0207.2013.tar.bz2
4、虚拟磁盘的准备:
(a)如果直接启动的CDlinux,创建一个4G的虚拟磁盘:
dd if=/dev/zero of=/mnt/hard/devel.dsk bs=1000 count=0 seek=$[1000*1000*4]
/mnt/hard/ 灵活运用,我是将一NTFS硬盘挂到这里的
(b)如果用VMWARE,使用虚拟机创建一个大于4G的虚拟磁盘。
5、源码和驱动的解压。
使用fdisk进行分区
使用mkfs.ext4 /dev/sda1进行格式化
挂到一个目录:mount /dev/sda1 /mnt/hard
进入: cd /mnt/hard
下载的源码和驱动解压到这里。
解压源源:tar vxf devel-0.9.7.1.tar.xz
解压驱动:tar vzxf linux_mac80211_0012.0207.2013.tar.bz2
6、编译驱动
进入源码目录,将源码树虚拟成根目录,输入命令(两命令效果一样):
./ch-root
或
bash ch-root
进入驱动目录,编译:
cd rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013
make
ok,编译完成。
7、insmod rtl8188ee.ko,
Unknown sysboml......,
dmesg 未知符号几十个,一长串。。。我晕了好几天,绝望之际,在另一台有BCM4312无线网卡老本本上(CDlinux本身自带BCM4312驱动)
继续insmod rtl8188ee.ko,竟然成功加载,无任何未知符号之类的,dmesg只有两个未知符号的提示, lsmod发现B43依赖四个模块,晃然大悟:是不是RTL8188E模块依赖有问题??
8、解决:
查找依赖模块,反向逐个加载
modinfo rtl8188ee.ko
......
depands rtlwifi .... <======= rtl8188模块依赖rtlwifi,也就是必须先加载rtlwifi
再看上层目录的rtlwifi
modinfo rtlwifi.ko
.....
depans cfg80211 mac80211 <=========== 必须先启动:cfg80211 mac80211 这两模块
ok,查找这两模块位置:
find / -name mac80211.ko
find / -name cfg80211.ko
找到,分别在/lib/modules/3.2.11_cdl0/kernel/net/wireless
modinfo cfg80211.ko
/lib/modules/3.2.11_cdl0/kernel/net/mac80211
modinfo mac80211.ko
记不着这两个是哪一个依赖rfkill模块,
再查找rfkill模块:
find / -name rfkill.ko
在这里 /lib/modules/3.2.11_cdl0/kernel/net/rfkill
查看 modinfo rfkill.ko .. 终于,它的depands后面跟的是空白,不再依赖任何模块
反向逐个加载:
cd /lib/modules/3.2.11_cdl0/kernel/net/rfkill
insmod rfkill.ko
cd /lib/modules/3.2.11_cdl0/kernel/net/wireless
insmod cfg80211.ko
cd /lib/modules/3.2.11_cdl0/kernel/net/mac80211
insmod mac80211.ko
无任何提示。。Linux好的象征
进入编译相关目录
insmod rtlwifi.ko
insmod rtl8188ee.ko
提示又有问题。。。找啊找,firmware/rtlwifi/rtl8188efw.bin 是搞什么用的???没明白,管它的,给它乱取个名:硬件特征
将硬件特征拷入/lib/firmware目录:
cp rtl8188efw.bin /lib/firmware/rtlwifi/
insmod rtl8188ee.ko
无任何提示。
ifconfig
哦买嘎,wlan0 出来了。。。。
ifconfig wlan0 up
9、将驱动集成到CDlinux
创建临时目录:mkdir /mnt/cdl_md
进入目录 :cd /mnt/cdl_md
解压 : unsquashfs base-cdl.md
生成 squashfs-root 目录
: cd lib/modules/3.2.11_cdl0/kernel/drivers/net/wireless/rtlwifi
删除rtlwifi下的所有文件及文件夹
将编译的 rtlwifi.ko 拷贝到此文件夹下
拷贝 rtl8188ee/rtl8188ee.ko 到 rtl8188ee 目录下
其它的rtl***.ko一样处理
拷贝 firmware 下的 rtlwifi 目录 到 lib/firmware/ 下
重新打回包:
mksquashfs squashfs-root base-cdl.md
ok,用base-cdl.md将光盘中的替换掉。
或者将那此译出来的文件按上边目录要求打包成一个.md文件,放入base-cdl.md同一目录中