1、下载驱动(。run文件),放到自己的主目录下(/home/),改一个比较容易敲的名字(例如:display.run)
下载的地方有很多,nVidia自己的网站可以下,不过我是偏向喜欢在mydrivers.com下。解压时确定文件没有出错。
2、卸载所有显卡受限驱动,在“添加/删除……”里面即可完成,也可以用apt,各人喜欢。
3、卸载受限驱动管理器,在“添加/删除……”里面即可完成,也可以用apt,各人喜欢。受限驱动管理器经常会给编译安装驱动制造麻烦,如果你不打算使用源里面的驱动,而使用自己编译的驱动,这个东西删掉无妨。
4、安装东西:
sudo apt-get install libc6-dev
sudo apt-get install gcc+
sudo apt-get install build-essential pkg-config xserver-xorg-dev linux-headers-`uname -r`
如果apt没找到,请自己到wiki找快速设置指南,添加cn99或者其他源
5、删除可能影响安装的东西。在这里提醒一下,要养成良好的习惯,删除东西前,不要嫌麻烦,最好先cd进入目录,然后再rm,以免rm命令还没敲完就碰到了回车,那麻烦就大了,极端的例子(sudo rm -rf /),千万别乱敲。
1)/lib/linux-restricted-modules/里面的内容,如果有隐藏的。nvidia-new-installer也要删掉
cd /lib/linux-restricted-modules
ls -al
sudo rm -rf *
ls -al
2)/etc/init.d/nvidia-glx这个文件(如果有)
cd /etc/init.d/
ls -al
sudo rm -rf nvidia-glx
ls -al
3)/etc/init.d/nvidia-kernel这个文件(如果有)
cd /etc/init.d/
ls -al
sudo rm -rf nvidia-kernel
ls -al
6、修改/etc/default/linux-restricted-modules-common 这个文件
sudo gedit /etc/default/linux-restricted-modules-common
把里面的
DISABLED_MODULES="" 改为
DISABLED_MODULES="nv nvidia_new"
并且备份/etc/X11/xorg.conf
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.before
7、确定一切准备完毕,只欠安装之后,按下Ctrl + Alt + F2,进入命令行,建议使用root进入,初始帐号我试过也能够安装成功。
8、关闭Gnome.
sudo /etc/init.d/gdm stop
如果命令成功,右端会有一个[OK]的提示
9、运行安装程序
sudo sh /home//display.run
安装过程中,首先会问你是否卸载已经安装的显卡驱动,YES.后面忘了,大概能答YES就答YES就可以了。
10、安装完成后,回到命令行,sudo reboot.如果正常,usplash启动画面过后,你就能看到nVidia的标志了。
如果不想看到nVidia的启动标志,则修改xorg.conf,在 Section "Device"段落里面加上一行:
Option "NoLogo"
下此启动你就不会看到nVidia的标志。
11、进入Gnome后,你就可以在终端输入
nvidia-settings
来设置你的显卡了。
三、 网卡的安装及配置
第一步:配置以太网卡的工作参数
配置网卡就是配置网卡的工作参数,如端口地址、中断号等。网卡的缺省参数一般存储于网卡内部的EEPROM,这是网卡出厂前设置好的。缺省参数在大多数情况下是可行的,但如果这些参数与你的系统有冲突并且网卡又不支持软件动态设置,那么你就要使用网卡的设置程序。并不是所有的网卡都要经过这一步,因为有些网卡支持通过驱动软件及其输入参数来确定网卡的工作参数。可以通过查阅网卡使用说明书来确定这一点。
网卡的设置程序与驱动程序不同,设置程序仅仅用来对网卡EEPROM中的设置进行修改。网卡程序本身可能运行在其它操作系统下,如WINDOWS95/98、OS/2、DOS等。如果是非Linux平台,那你就先在适合设置程序运行的系统中安装网卡,按设置程序说明设置网卡参数。然后再在Linux系统下安装该网卡。
第二步:安装Linux系统
假如你将要安装以太网卡的Linux系统本身还未安装,那么可以先试着在安装Linux的同时安装网卡。这一步成功的前提是你的Linux发行版本包含将要安装的网卡的驱动程序。
运行Linux的安装程序,按提示进行操作,别忘了安装核心的网络部分。当进行到LAN配置时,安装程序会列出它支持的所有网卡的类型。看看你的网卡是否榜上有名。随着Linux发行版本的不断升级,目前RedHat 6.0已经覆盖了常用的网卡类型。如果很幸运地你的网卡恰好在其中,那么下文讨论的很多步骤都可以不必考虑了,安装程序会自动完成网卡的安装与驱动。但如果没找到适用于你的网卡类型,也不必担心,继续下一步。
第三步:手工安装网卡
安装网卡也就是安装网卡的驱动程序。网卡要工作必须要有驱动程序,并且驱动程序越成熟越好。驱动程序一般由网卡的生产或供应商提供。由于Linux是一个起步不久的新兴操作系统,网卡的生产商并不一定提供Linux环境下的驱动程序。这时候你就得从其它途径想办法了,比如到INTERNET上专门提供硬件驱动程序的网站查找一下,也可以在新闻组上贴个求助信息。总之,只有得到网卡的驱动程序后,方可进行下一步。
网卡的驱动程序有两种类型。一是可直接使用的二进制代码;另一种是驱动程序的源代码。二进制代码一般是预先编译好的可装载模块。源代码可以编译成可装载模块,也可以编译成系统核心的一部分。如何把源代码编译成可装载模块不在本文讨论之列,具体可以查阅驱动程序的说明书。
1.可装载模块的使用
系统提供了一组命令用于将驱动程序模块载入内存执行。这些命令包括modprobe、insmod、Ismod、rmmod。modprobe 与insmod命令功能相似,但是方式各异。
●modprobe 命令使用配置文件/erc/config.modules来加载可执行模块。要用 modprobe命令加载以太网卡的驱动程序,可以在 config.modules文件中加入:
alias eth0 drivermodule (drivermodule是驱动程序模块的名称)
这行配置信息把以太网卡的设备名与驱动程序模块联系起来。modprobe命令依据这条信息,自动加载存放于 /lib/library/xxxx/net目录下名为 drivermodule.o的模块。因此要使 modprobe命令找到驱动程序模块,必须将该模块放在 /lib/library/xxxx/net目录下。
那么驱动程序的参数如何指定呢?还是使用conf.modules文件。方法是在接着上述配置信息的后面加入下行信息:
options drivermodule parml=valuel,parm2=value2,……
这里parm1 是驱动程序可以接受的参数名,valuel是该参数值;依次类推。
比如options cs89x0 io=0x200 irq=0xA media=aui
●insmod命令直接通过命令行参数将驱动程序模块载入内存,并可以在命令中指定驱动程序参数。例如:
insmod drivermodule.o parml=valuel,parm2=value2,……
以上两个命令中可以使用驱动程序参数要依据具体的网卡及其驱动程序而定,要仔细阅读网卡及驱动程序的说明书。有的网卡驱动程序可以用这些参数覆盖网卡本身EEPROM中存储的参数。有的则必须使用EEPROM中的参数。有的因为驱动程序不自动检测网卡使用的参数,所以还得把网卡使用的EEPROM中的参数传给驱动程序。
卸载驱动程序模块使用rmmod命令:
rmmod drivermodule.o
2.把驱动程序编译入系统核心
除了以可装载模块的形式使用驱动程序,还可以把驱动程序编译进Linux核心,以获取更高的效率。这种方式需要驱动程序的源代码、Linux核心源代码及其编译工具。Linux核心的编译过程包括配置核心、重建依赖关系、生成核心代码等步骤。配置核心的过程是用系统提供的配置工具(make config 或make menuconfig)重新生成用来编译核心的众多make文件的过程。为了让核心的配置工具了解你的网卡驱动程序,你需要修改一些核心的配置文件。
(1)修改配置文件:主要修改核心源代码目录下的四个文件,即drivers/net/CONFIG文件、drivers/net/Config.in文件、drivers/net/Makefile 文件和drivers/net/Space.c文件。CONFIG和Config.in文件用于控制核心配置工具(make config 或make menuconfig)的运行,主要是加入关于是否包括该网卡的支持提示。Makefile 和Space.c文件用于编译核心代码并说明面向核心的接口。详细语句参见下面例子。
(2)运行核心配置工具:在核心源代码目录下执行make config或 make menuconfig命令。 make config是面向命令行的,通过逐句回答提问来配置核心。由于其在配置过程中不可改变或撤消以前的回答,故多有不便。make menuconfig 则是通过窗口菜单方式,使用起来很方便。就本文而言,你只要在上一步中正确修改了配置文件,那么在config中会出现是否需要该网卡支持的提问,你选择‘y’。或者在menuconfig中的 network菜单中出现表示该网卡的菜单项,把它选上即可。
(3)重建依赖关系:很简单,执行make dep和make clean命令。
(4)生成核心代码:执行make zImage 命令。这个命令开始真正编译核心代码,并把核心代码存放为arch/i386/boot 目录下的zImage。
(5)为了使用新的核心代码,你需要用新的核心代码替换原有的。原有的核心代码一般存放在/boot 目录下,文件名称类似于vmlinuz-v.s.r-m (v.s.r-m)表示核心的版本号)。如vmlinuz-2.0.34-1。执行下列命令:
cp arch/i386/boot/zImage /boot/vmlinuz-v.s.r-m
为了安全起见,可以先把原有的核心代码做个备份,以便发生错误时恢复。
至此,你可以重新引导系统以使用新的带有正确网卡驱动支持的Linux核心。唯一剩下未解决的是驱动程序的参数问题。有些网卡驱动程序如果不输入参数,那它工作就会不正常,甚至根本不工作。由于现在网卡的驱动程序是系统启动时由核心载入运行的,系统启动之后用户就很难改变这些参数了,所以你必须在系统启动时告诉Linux核心网卡驱动程序使用的参数。具体方法有两种:
(1)在系统引导程序LILO中输入。
在LILO开始引导系统时,用ether子命令设定以太网卡驱动程序的参数。ether命令的使用方式为:
LILO:linu xether=IRO.BASE_ADDR,NAME
这里带下划线的是要输入的部分,IRQ表示中断号,BASE_ADDR表示端口号,NAME表示网卡的设备名。例如:linux ether=15,0x320,eth0
(2)在LILO配置文件中设定。
每次在系统启动时再输入驱动程序参数似乎有点过于麻烦。幸好系统提供了LILO的配置文件可以用来永久性的设置Linux系统启动时的子命令。方法是在/etc/lilo.conf文件中的适当位置加入以下一行:
append=“ether=IRQ, BASE_ADDR,NAME”
这里带下划线部分的意义同上。加入这一行后,还需要用/sbin/lilo命令把这个配置写入引导程序。
第四步:网络配置及测试
安装完网卡就可以配置网络通信了。配置网络简单地就是使用ifconfig命令,
例如:
ifconfig eth0 1.2.3.4 netmask 255.0.0.0 up
最后ping一下网上其它机器的ip地址,检查网络是否连通。
四、一个以太网卡安装实例
下面以Cirrus公司生产的Crystal CS8920以太网卡为例,详细说明上述安装配置过程。本例中,有些命令参数,如核心源代码目录等,是以我使用的系统环境为出发点。具体应用中还要加以本地化。为了更接近实际,例子中也包括了对安装中碰到的问题的描述。
1.此网卡是IBM PC机的内置式网卡,机器只提供了Windows95/98环境下的驱动程序。由于RedHat 5.0发行版本尚未提供对此网卡的直接支持,所以从Cirrus的站点上找到并下载了该网卡驱动程序的Linux版本,是一个名为Linux102_tar.gz的压缩文件。
2.文件Linux102_tar.gz解压后包括五个文件。包括源代码,仅适用于Linux 2.0版本的目标模块以及readme文件。
3.查阅readme文件后,了解到这个驱动程序只能使用网卡EEPROM中设定的端口号(I/O基地址)、中断号。为了知道网卡EEPROM的设置,又从Cirrus站点下载了该网卡DOS版本的设置程序setup.exe
4.在DOS中运行setup.exe,发现网卡的起始端口号为0x360,中断号为10,与别的设备有冲突。选择setup.exe程序的相应菜单,把中断号改成5。另外,此驱动程序不支持plug and Play,故也在setup.exe中将网卡的PnP功能屏蔽掉。
5.我所使用的RedHat 5.0的Linux核心版本为2.0.34,所以不能用现成的驱动程序目标模块,需要自己动手编译。如上文所述,有两种方式使用此驱动程序。
6.如果要编译成独立模块,执行下列命令:
gcc -D_KERNEL_-I/usr/src/linux/include -I/usr/src/linux/net/inet-Wall -Wstrictprototypes -02 -fomit-frame-pointer -DMODULE -DCONFIG_MODVERSIONS -ccs89x0.c
编译结果是名为cs89x0.o的驱动程序目标模块。要装载此驱动程序,输入下列命令: insmod cs89x0.o io=0x360 irq=10
要卸载此驱动程序,用rmmod命令:
rmmod cs89x0.o
7.如果要将驱动程序编进系统核心,
修改/usr/src/linux/drivers/net/CONFIG,加入:
CS89x0_OPTS=
修改/usr/src/linux/drivers/net/Config.in,加入:
tristate‘CS8920 Support’CONFIG_CS8920
以上两行是为了让make config在配置过程中询问是否增加CS8920网卡的支持。修改/usr/src/linux/drivers/net/Makefile加入:
ifeq((CONFIG_CS8920),y)
L_OBJS+=cs89x0.o
endif
修改/usr/src/linux/drivers/net/Space.c,加入:
extern int cs89x0_probe(struct device *dev);
……
#ifdef CONFIG_CS8920
&& cs89x0_probe(dev);
#endif
以上两段是为了编译并输出网卡驱动程序及其例程。
把驱动程序源代码拷到/usr/src/linux/drivers/net目录下。
在/usr/src/linux目录下执行 make config或 make menuconfig,选择核心CS8920网卡支持。
执行make dep、make clean命令。最后用 make zImage 编译Linux核心。
如何设置核心驱动程序参数,上节已有说明,不再赘述。
五、结束语
与其它外设一样,以太网卡种类繁多,对于新兴的操作系统Linux来说,是否能够有效地支持这些设备,直接关系着Linux的发展前途。本文叙述的以太网卡安装配置只是其中的一小部分,未尽事宜希望与有识之仕共同探讨。