⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.html

📁 介绍linux下文件和设备编程
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I92" ID="I92"></A><center><b><font size=+2>网卡</font></b></center><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I93" ID="I93"></A><center><b><font size=+2>多个网卡</font></b></center><br>当你有两块网卡时,在lilo.conf里加上<br>append = &quot;ether=0,0,eth1&quot;<p>当你插了三块, 则为:<br>append = &quot;ether=0,0,eth1 ether=0,0,eth2&quot;<p>举例如下:<br>boot = /dev/hda<br>#compact&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # faster, but won't work on all systems.<br>delay = 50<br>vga = normal&nbsp;&nbsp;&nbsp; # force sane state<br>append= &quot;ether=0,0,eth1&quot;<br># ramdisk = 0&nbsp;&nbsp;&nbsp;&nbsp; # paranoia setting<br># End LILO global section<br># Linux bootable partition config begins<br>image = /zImage<br>&nbsp; root = /dev/hda1<br>&nbsp; label = linux<br>&nbsp; read-only # Non-UMSDOS filesystems should be mounted read-only for checking<br># Linux bootable partition config ends<p>这是不知道网卡irq和iobase时的做法(尤其是PCI网卡时,象3c590...)当知道网卡irq和iobase时,还是指定的好:例如:两块3c590:<p>append=&quot;ether=9,0xfce0,eth0 ether=5,0xfcc0,eth1&quot;<p>注:如果已经编译成模块的话,应该在/etc/rc.d/rc.modules(在Redhat里是/etc/conf.modules)加上类似的一行:<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sbin/modprobe ne io=io1,io2<p>先试试上面的方法吧.<p><p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I94" ID="I94"></A><center><b><font size=+2>网卡驱动</font></b></center><br>&nbsp;&nbsp;&nbsp; 在第n次看到&quot;如何在Linux下配置我的XXX网卡&quot;这样的问题之后我觉得有必要把一些最基本的Linux网卡安装的知识总结一下,<br>省省大家的时间.以后有空再写声卡的和显卡的.<p>&nbsp;&nbsp;&nbsp; 本文主要面对新新手,不对任何高难度问题进行讨论,包括双网卡,正常编译了driver也不能用的古怪网卡等.本文的主要目的是告诉<br>新新手,Linux下网卡是怎样被驱动的.本文不讨论安装Linux的问题,假设用户已经成功安装了Linux,就等驱动网卡.<p>&nbsp;&nbsp;&nbsp; 第一步--不要再问&quot;Linux下能够装XXX卡么?&quot;这样的问题,Linux是个开放的系统,借助于网络上无数的高手,几乎所有的硬件都能找到<br>支持.<p>&nbsp;&nbsp;&nbsp; 首先需要指出,Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux.<br>比如我的Accton 网卡,就不存在Linux的driver,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了.所以当你有一块<br>网卡不能用,在找Linux的driver之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000,etherexpress等等.这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了.<p>&nbsp;&nbsp;&nbsp; 最普遍使用也许是最好配的网卡也许就是Ne2000兼容卡了,我用它来作例子.注意实际上很多廉价卡都是NE2000兼容的.<p>&nbsp;&nbsp;&nbsp; 对于NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式.很多现在的网卡缺省都是PnP模式,这在95下的确能减少很多麻烦,<br>但是Linux不支持,所以Linux下必须是Jumpless模式.一般所有网卡都有带的驱动盘和DOS下可执行的一个设定程序,用该程序将网卡设为Jumpless.当然如果是老卡,本来就不是PnP,不用管这个.注意,这里主要是ISA的NE2000,关于PCI的NE2000,需要另外设置.<p>&nbsp;&nbsp;&nbsp; 下来就是得弄清楚网卡的IO地址和IRQ.这是两个非常重要的网卡驱动参数.这个最简单就是还用那个网卡的设定程序,设定完<br>Jumpless之后肯定有地方可以软设定IO和IRQ.老一些的卡得跳线,道理一样.另外一个方法是如果网卡能在95或NT下工作,去95下的control panel里看这个卡的properities,查IO和IRQ.<p>&nbsp;&nbsp;&nbsp; OK,到现在,你知道了你的卡是NE2000兼容,知道了它是在Jumpless模式下,知道了IO地址和IRQ,就可以安装了.<p>&nbsp;&nbsp;&nbsp; Linux系统与95这些系统不同的一点是它是运行在&quot;内核&quot;上的,所谓内核,就是把系统最核心的部分孤立出来编程,将各种驱动程序,内存控制等部分编在一起.于95不同,Linux得内核是公开的,经常更新的,这样不需要更新整个系统,用户只需要把最新的内核原程序download下来编译,就可以得到一个支持更多硬件,更多文件系统,更安全的系统了.所以需要指出,Linux的Driver很少有象95下那样是&quot;安装&quot;的.Linux下的driver大多数都是以C程序形式发布,或者在内核里,或者需要用户自己修改内核代码.总之要让Driver运行,得重新配置编译内核.如何操作Linux内核是学习Linux中非常重要的一节.Linux的新手最好在这里多下点功夫搞清楚.有关核心的问题建议看Linux How To文档中的kernel How to.<p>&nbsp;&nbsp;&nbsp; Anyway, Linux已经装好了,那么用的是什么内核呢?一般缺省的Linux内核是从安装盘上来的.那个内核一般包括大多数硬件的驱动<br>程序,比如Ne2000卡.所以未一定要重新编译内核,也许现有的内核就可以驱动.所以下一步就是把网卡插入计算机,看看Linux能否发现它.这可以从Linux的启动画面中看出来,如果你发现如下的一行:<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eth0:NE2000 card found at 0x300 using IRQ 05<p>&nbsp;&nbsp;&nbsp; 那就说明Linux发现了NE2000卡,在IO 300, IRQ 05的地方.<p>&nbsp;&nbsp;&nbsp; 如果Linux没有发现你的网卡,但是你确认你网卡得型号和参数,比如我的网卡是NE2000兼容,IO 0x300, IRQ 05.那么可以修改<br>Linux启动文件专门搜索这个设备.这个文件在/etc/rc.d/rc.modules里对于NE2000,是这样的:<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #/sbin/modprobe ne io=0x300 # NE2000 at 0x300<p>将最前面的#号去掉,再启动机器试试.<p>&nbsp;&nbsp;&nbsp; 另外该文件里还可以发现对其它系列网卡比如3C系列的autoprobe.<p>&nbsp;&nbsp;&nbsp; OK,到现在启动屏幕上也没有出现<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eth0:NE2000 card found at 0x300 using IRQ 05<p>&nbsp;&nbsp;&nbsp; 这样的好消息,那么你就得编译内核了.<p>&nbsp;&nbsp;&nbsp; 编译内核之前一定要搞清楚的是网卡的芯片号.比如我有一块SMC的网卡,但是我是无法在Linux的内核配置菜单里找到SMC这样的字样的,Linux不是win95,有那么长一串厂商牌号等.我在这个SMC的卡上找到了digital 21140-AE的字眼,于是我知道这个卡用的是DEC 21140-AE芯片,于是按照这个寻找,就找到了驱动.<p>&nbsp;&nbsp;&nbsp; 知道了芯片类型,或者兼容类型(比如ne2000)就可以开始编译内核了.具体的针对不同系统的内核编译推荐先看看有关内核编译的文章,这里不多作介绍.<p>进入/usr/src/linux<br>运行make menuconfig进入菜单配置内核.找到Network Device Support.选则EtherNet,再选则相应的芯片号.如果是ISA系线的NE2000,就选则other ISA cards,选则NE2000/NE1000 ISA support.如果是PCI的网卡,就选则PCI ethernet adapters.注意,PCI卡未必都能这样驱动,很多都不行,得另外找driver.比如Intel PCI EtherExpress Pro 100等.<p>&nbsp;&nbsp;&nbsp; 有关其它选项希望能多自己摸索.多看看help和how-to.<p>&nbsp;&nbsp;&nbsp; 配置完内核后,运行make dep;make;make zlilo就可以了.如果内核选项过多会出现过大的情况而无法安装.那么需要把一些不必要的驱动去掉.<p><br>&nbsp;&nbsp;&nbsp; 一般这样之后再启动就可以发现网卡了.驱动了网卡,下一步就是设定TCP/IP这些东西.这就不是这里的内容了.<p>&nbsp;&nbsp;&nbsp; 我的经验,Linux下NE2000兼容卡都比较好设.3c系列的卡也都有支持.至于其它卡比如我的DEC 21140就麻烦很多.另外有些卡即使用某种芯片也未必就能用这个芯片的驱动,这种情况就是有驱动程序也不能用,就需要上网查了.<p>&nbsp;&nbsp;&nbsp; 有关Intel Etherexpress系列卡的配置.Linux内核中有Etherexpress 16的支持,但没有其它卡的driver.在http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html里有关于EtherExpress 100B pro的讨论.在那里可以download到一个c源码的<br>驱动程序,编译进内核就可以了.<p>&nbsp;&nbsp;&nbsp; 那么,如果以上都试过了,而你的网卡的确还是不能认,那么你需要上网查driver了.在网上查东西是一门看起来简单实际上极体现经验的学问.建议寻找Linux网卡的driver从http://cesdis.gsfc.nasa.gov/linux/drivers/开始.在那里可以发现的针对网卡得驱动有:<p>DEC DC21*4* Tulip chip based cards<br>3Com PCI Etherlink PCI and EISA cards<br>Intel EtherExpress Pro100B, Pro100+ and Pro10+ PCI<br>3c515 ISA Fast Etherlink card<br>SMC EtherPower II (EPIC/100 83c170 chip) driver.<br>RealTek RTL8129/8139 driver.<br>Lite-On lc82c168 PNIC driver (now merged with the Tulip driver).<br>Macronix MX98713 and ASIX experimental drivers are now merged with the Tulip driiver).<br>VIA Rhine (VT86C100A and 3043) driver (now released).<br>Winbond w89c840 driver (beta test). Note: this driver was written without officiial documentation.<br>TI ThunderLAN driver (external link -- Caldera/James Banks).<br>Hewlett Packard 100VG driver updates (external link -- Yaroslav).<p>Intel EtherExpress Pro/10 PCI driver (remote link).<br>3c509/3c529/3c579 ISA/MCA/EISA EtherLink III driver update. The driver now deteccts multiple cards when loaded as a module.<br>AMD LANCE/PCnet driver update. The driver is now usable as a loadable module.<br>Cirrus/Crystal/IBM CS8900 series driver (remote link).<br>PCI NE2000 driver (local page)<br>PCI NE2000 updates (remote link)<p>Intel Etherexpress Pro 100,<br>DEC 21X4* based board,<br>3Com EtherLink III PCI/EISA (3c590 3c592,3c595,3c597,3c900 3c905)<br>Intel EtherExpress Pro/10 PCI9 With i82596 Chip)<br>TI ThunderLan<br>PCI NE2000<br>Packet Engines &quot;Yellowfin&quot; G-NIC<br>SMC EtherPower II (EPIC/100 83c170 chip)<br>RealTek RTL8129/8139<p>&nbsp;&nbsp;&nbsp; 同时还有一个Ecom EtherLink III family 的setup程序,没有用过,也许不错.<p>如果这里你还是没有找到相应的网卡驱动,那么就去search了.我推荐的方法是上Internet Newsgroup查.因为你绝对不是第一个在Linux<br>下用这个网卡的人,你的问题绝对有人在网络上问过.而且有人回答过.那么问题就是如何找到他. 最简单的方法是打开netscape 到www.dejanews.com去.这里的关键是关键字的选则,比如我有个卡的芯片是DEC的21140,那么我考虑到21140已经是个长数字,于是输入21140 linux来搜索,这里Linux是必须的,否则看到上千篇关于21140 win95的驱动问题,是不是很烦?结果21140 linux很快就找到了有关文章.<p>&nbsp;&nbsp;&nbsp; 如果这样也找不到驱动程序,或者有了驱动程序不知道怎么用,用了出问题,再来版上问.记得把具体的网卡型号,芯片型号,你作过什么努力,什么问题等都写清楚,以便于他人帮助.<p>Remember: God helps those who help themselves.<p><p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I95" ID="I95"></A><center><b><font size=+2>hosts.equiv和.rhosts文件</font></b></center><br>发信人: cloudsky (晓舟&middot;轩辕明月), 信区: Linux<br>标&nbsp; 题: hosts.equiv和.rhosts文件<br>发信站: 武汉白云黄鹤站 (Thu Feb&nbsp; 4 23:04:45 1999) , 转信<p>标题:hosts.equiv和.rhosts<br>文件<br>&nbsp;&nbsp;&nbsp; 远程用户启动rlogin访问你的本地主机,此时做如下安全性检查:<p>&nbsp;&nbsp;&nbsp; 1. 本地rlogind在本地/etc/passwd文件中寻找远程用户名,没有则拒绝访问<p>&nbsp;&nbsp;&nbsp; 2. /etc/passwd中存在远程用户名,rlogind在/etc/hosts.equiv寻找远程主机名,找到则允许访问。<p>&nbsp;&nbsp;&nbsp; 3. /etc/hosts.equiv无远程主机名,rlogind在$HOME/.rhosts寻找远程主机名,找到且该项后无用户名则允许访问,找到且该项后有用户名,若远程用户名位于其中,则允许访问。注意这里的$HOME是与远程用户同名的本机用户的主目录。<p>&nbsp;&nbsp;&nbsp; 4. 若通过了/etc/passwd的检查,但没有通过/etc/hosts.equiv或者$HOME/.rhosts的检查,远程用户给出口令可以登录本机,但无法使用rcp、rsh等。反之则可以使用rcp或者rsh。<p>&nbsp;&nbsp;&nbsp; 5. /etc/hosts.equiv中的+意味着任意主机,此时与/etc/hosts无关。netterm下rlogin除root外的所有用户可以成功,solaris下简单的rlogin hostname同netterm,但是rlogin -l username hostname不成功。这个事实说明netterm下rlogin的时候,指定的参数实际上是远程主机的当前用户名。还说明hosts.equiv文件不支持rlogin -l username hostname,不支持root的rlogin。<p>&nbsp;&nbsp;&nbsp; 值得注意的是两个+号出现在$HOME/.rhosts中是非常危险的,意味着任意主机任意用户都可以不用口令登录到你的用户上来。.rhosts中的第一个+意味着所有主机,与/etc/hosts文件无关。.rhosts中的第二个+意味着所有用户,与/etc/passwd文件无关。若只有一个+,netterm中的rlogin可以成功,但来自sco root下的rlogin -l jhli hostname不成功,来自sco jhli的rlogin -l jhli hostname和rlogin hostname都成功。说明当.rhosts文件中只有主机名时,不支持rlogin -l username hostname,这点和/etc/hosts.equiv一样。若+ root,则netterm因无法实现rlogin -l username hostname而失败(只能实现rlogin hostname),来自sco root下的rlogin -l jhli hostname成功。+ +则都成功。注意,$HOME/.rhosts支持root的rlogin。<p>&nbsp;&nbsp;&nbsp; 当这两个文件中没有使用+号代表所有主机时,与/etc/hosts文件有关。这两个文件中指定的hostname必须是/etc/hosts文件中出现的,而且必须是主机名,IP地址和别名无效。在/etc/hosts文件中别名位于第三列。做主机判断时与在远程主机上hostname命令所显示的东西无关,与远程主机上的/etc/hosts定义无关。如果出现与这里讲述不符合的,是因为缓冲没有得到刷新的缘故,可以通过ping相关名字得到检验。此外,若没有使用+号,rlogin localhost、rlogin 127.0.0.1的效果和rlogin 134.*.*.*、rlogin zhuzhou的效果不一样,前者的检查不会通过。当hosts.equiv中定义为localhost时,效果则反过来。<p>&nbsp;&nbsp;&nbsp; 6. rlogin -l username hostname和rlogin hostname的检查有点细微的差别,首先在/etc/passwd的检查中是以-l的参数为准的,没有-l参数才使用远程主机的当前用户名,所谓当前用户名是考虑了su出来的用户。其次,$HOME也是先以-l参数为准。第三,$HOME/.rhosts文件中的用户名不是针对-l参数来的,而是针对远程主机的当前用户名来的,但是对于这个远程主机的当前用户名,并不要求出现在/etc/passwd文件中。这第6条尤其重要,许多不成功的$HOME/.rhost就是因为对第6条的不了解。<p>&nbsp;&nbsp;&nbsp; 7. $HOME/.rhosts文件的权限问题,chmod 0都没有影响,不过当时是处理root用户。对于一般用户,一定要保证.rhosts文件对于$HOME的属主是可读的。一般来说,这个文件最好chmod 400。对于root,如果不希望某个用户建立自己的.rhosts或者想替该用户建立.rhosts后不允许该用户自己修改,可以通过chown root .rhosts然后chmod 444 .rhosts实现。除了root,如果$HOME/.rhosts文件的属主和$HOME的属主不一致,检查将失败。<p>&nbsp;&nbsp;&nbsp; 8. $HOME/.rhosts文件中每行只跟一个用户名,若想多个指定,只好分多行指定用户名。<p>&nbsp;&

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -