【 tulaoshi.com - Linux 】
A:
花了二天,搞定了在笔记型red hat7.0安装billionton pcmcia cardbus 10/100M fast ethernet card(32bit),从安装过程体会很多,这份心得可能仅少数人需要,但这模式我想不仅适用於网卡,其它如sound card也应适用,故我将我的经验分享出来,有误请大家指教。
notebook安装pcmcia cardbus,只要是大厂应不致有问题,因为7.0的card database(/etc/pcmcia/config)大抵都支援,因为当初小弟考虑经济问题故买notebook及
其配备均以价格为考量,买的是e-know牌pIII-800,256M记忆体, 20GB IBM-HD,及billionton 32bit pcmcia cardbus 10/100M fast ethernet card(听都没听过,我当时只要求老板选有附linux, windows系列的driver,因为我打算install win98, win2000, red hat6.2 於这台notebook上,win98及win2000均称顺利,而redhat6.2也还好,因为刚好附的是red hat6.2的cardbus module --fethcb_cb.o,但因为6.2在跑x-window时,LCD显示不平顺,故打算改成red hat7.0+cle1.0 ,安装完後发现在run X-window很平顺,但fethcb_cb.o却无法被pcmcia的cardmgr modprobe进来,而查看/var/run/stab(此档记录pcmcia slot card资讯)竟然slot 0 和slot 1是empty,根本没捉到我的pcmcia网卡,写信去该支援部,要我到realtek网站看rtl8139 update with cardbus 如何在7.0上work, 看完後我make install其站上所附的all netdrivers, 搞到red hat7.0异常,只好重灌,最後只
好自己大胆来作编译,这也正是想分享的重点:
若你有非大厂的边设备模组,但不是您想安装的新版本(如我的例子, 我的linux pcmcia网卡附6.2版的驱动模组,在7.0无法load进来), 那可能的解法是---『自行在新的linux版本上编译出该模组』。
步骤:
一、准备好所附模组的原始档(*.c &some *.h),这是所有linux的 驱动程式片均会附的。这里要稍加说明:厂商所附的linux driver通常为module,即为*.o的档,也同时会附上 *.c的原始码档,两者的关是该厂商写好*.c 的驱动程式,在该linux版本下用gcc去compiler出*.o模组档,供linux的kerneld, 或cardmgr去load 进来,但所complier出的*.o模组档因compiler时所连结的lib和header file的关,仅适用於该kernel版本。
二、准备好*.c原始档後,利用editor打开看其最後一行,所有c语言的原始码档均会在最後附上其compiler-command。
三、不是在终端机上直接下该 compiler-command 即可,会编译失败,因为在compiler & link过程会用到一些header file,以网路卡为例:应该把它copy to /usr/src/linux/drivers/net下,再切到该目录上去执行compiler-command,指令如gcc -DCARDBUS -DMODULE -c xxx.c(原始档)之类的编译命令..
四、compiler完後,看看是否有产生你要的模组档(xxx.o),若有则恭喜您,大概可以了,若没有,那可能你放的目录有误,如sound card位置又不一样了,也有可能在 gcc的命令中,-I/usr/******的include path有误,致使无法顺利compiler。
五、compiler成的模组档,按照你在旧版本时安装的方式,更改设定档,以我为例,即/etc/pcmcia/config要加上device名称及欲bind的module, 这在所附之驱动程式片均会有install.txt可供参考。
学习如何编译成新版本kernel所需要的module很有用,否则只能等着网路上有人release出来或原厂商的支援了,希望这对想安装linux在notebook的人,而其一些边设备并非大厂的人有些许帮助,不过若不受限经济,倒是选大厂好些。
以上可能有误,若有任何需改正的,请告知小弟,让小弟也能修正错误。 thanks