RTOS设备驱动向嵌人式Linux的移植

RTOS设备驱动向嵌人式Linux的移植
RTOS设备驱动向嵌人式Linux的移植

RTOS设备驱动向嵌人式Linux的移植

——By Bill Weinberg,MontaVista Software,Inc.

Linux暴风雨般占领了嵌入式系统市场。分析家指出,大约有1/3到1/2的32/64位新的嵌入式系统设计采用了Linux。嵌入式Linux已经在很多应用领域显示出优势,比如SOHO家庭网络和成像/多功能外设。在(NAS/SAN)存储,家庭数字娱乐(HDTV/PVR/DVR/STB),和手持设备/无线设备,特别是数字移动电话更获得大幅度发展。

嵌入式Linux新应用不会凭空从开发者的头脑中冒出来,大部分项目都是由成千上万行,甚至数百万行的代码组成。成千上百的嵌入式项目已经成功地将现有的其它平台的代码移植到Linux下,比如Wind River VxWorks和pSOS,VRTX,Nucleus和其它RTOS。这些移植工作有着重要的价值和现实意义。

到目前为止,大多数关于移植已有的RTOS应用到嵌入式Linux的文献,关注RTOS接口(API)、任务、调度模式以及怎样将他们映射到相应得用户空间去。同样重要的是,在I/O调用密集的嵌入式程序中如何将RTOS的硬件接口代码移植到更加规范的Linux设备驱动程序中去。

本文将概述几种常用的经常出现于现有嵌入式应用中的内存映射I/O方法。它们涵盖的范围从对中断服务例程的特殊使用及用户线程对硬件访问到出现于有些ROTS中的半规范化驱动程序模型。这对于移植RTOS代码到规范化的Linux设备启动程序具有一定启发作用,并且介绍了一些移植方法。特别地,本文会重点讨论RTOS和Linux中的内存映射,基于I/O调度队列的移植,将RTOS I/O重定义到Linux下的驱动程序和守护进程里。

RTOS I/O概念

“不规范”是描述大多数RTOS系统I/O的最佳词语。多数RTOS是针对较早的无MMU的CPU 而设计,所以忽略了内存管理部分,即使当MMU问世后也是这样:不区分物理地址和逻辑地址。大多数RTOS还全部运行在特权模式,虽然表面上看来是增强了性能。全部的RTOS应用和系统代码都能够访问整个地址空间、内存映射过的设备、以及其他I/O操作。这样,即使存在差别,也是很难把RTOS应用程序代码同驱动程序代码区分开来。

不规范的结构导致了I/O实现的特殊性。在很多情况下,缺乏设备驱动程序模型的认同。根据这种无层次的特性,回顾一下基于RTOS软件中使用的一些重要概念和习惯用法非常有指导意义。

内嵌的内存访问

上个世纪八十年代中期商业化的RTOS产品中,多数嵌入式软件都有一个对执行时间有严格需求的,采用I/O查询和中断服务例程的大循环。开发人员在项目采用RTOS和执行程序,主要为了加强并行性和多任务同步,绕开其它有碍实现该目标的程序结构。这样,即使RTOS提供了I/O调用形式化方法,嵌入式程序员继续使用直接的I/O操作:

1#define DATA_REGISTER0xF00000F5

2char getchar(void){

3return(*((char*)DATA_REGISTER));/*read from port*/

4}

5void putchar(char c){

6*((char*)DATA_REGISTER)=c;/*write to port*/

7}复制代码

多数受过训练的开发者常会将这样的直接I/O代码从硬件代码中分离开来。但是我还是经常看到诸如此类的I/O调用代码。

当开始使用直接内存映射I/O的时候,新接触Linux的嵌入式开发人员总是想把这类代码移到用户空间,通过mmap()调用来替代定义寄存器地址的#define语句。这种处理方法对于一些原型是可以的,但不能支持中断处理,限制了实时响应,特别不安全,不适合商业化产品的发布。

RTOS中断服务例程

在Linux里,中断服务属于内核层;在一个RTOS里,中断服务例程代码没有特殊规

定且常与应用程序代码没什么区别(不外乎返回序列异同)。很多RTOS提供系统调用或者

宏来让代码自己检测它自己的切换状态(比如Wind River VxWorks的intContext())。中断服务例程通常也使用标准的库函数,随之而来也有可重入性和移植性等问题。

大多数RTOS支持注册中断服务例程代码、中断判断和中断服务调用。一些简单的嵌入

式程序,仅仅支持在硬件矢量表里插入中断服务例程的起始地址。

如果试图直接在用户程序空间执行读和写操作,你不得不将Linux中断服务例程放入内核程序空间。

RTOS I/O子系统

大多数RTOS会提供一个定制的标准C运行库(比如pSOS的pREPC),或者修改编译器

提供商的C库(libc)或修改glibc。在尽量最小化情况下,多数的RTOS支持标准C的I/O 子集(open/close/read/write/ioctl).大多数情况下,这些调用和从衍生出来的调用转化

为基本I/O简单封装.有趣的是,因为大多数的RTOS不支持文件系统,这些平台不提供针对flash和其他存储介质的文件存储,常采用完全不同的代码实现或者其他应用程序接口(API) (比如pSOS的pHILE).

Wind River VxWorks在这方面比其它RTOS做得好些,它提供功能丰富的I/O子集,有效广泛集成网络接口及网络媒体。

延时处理

很多RTOS也支持一种叫”下半部“("bottom half")的机制,把I/O处理放到可中断或者可抢占切换上下文中执行。其他RTOS提供类似机制比如中断嵌套来获得同样的效果.

典型RTOS应用的I/O架构

下面描述一个典型的I/O图解(仅输入)和它向主应用程序传递数据的路径,处理过程如下:

·一个硬件中断触发一个中断服务例程执行。

·中断服务例程做基本处理,完成本地输入操作,或者让RTOS调度延时处理。在一些情况下,延时处理过程由Linux里的用户进程来处理,在这里就是普通的RTOS任务。

·当获取到数据(中断服务例程或者延时切换),准备好的数据被放进队列(RTOS中断服务例程能够访问应用程序队列通过应用程序接口(API)和其它进程间通信(IPC),请看下面的API表)。

·一个或者多个应用任务从队列读消息取出数据

传统的RTOS和Linux的典型I/O比较

输出常常由类似的机制来完成-代替write()或者相似的系统调用,一个或者多个RTOS 任务,将数据放进队列.队列中的数据由以下几种过程取出:一个I/O程序或者响应“准备好发送”中断的中断服务例程,一个系统时钟,或者其它阻塞在取数据队列中的应用任务,然后执行I/O操作(可以是轮询,也可以是通过DMA).

将RTOS I/O映射到Linux中

上面描述的基于队列的生产者/消费者I/O模型,仅仅是传统多种设计中所采用的特别方法的一种。让我们继续用这个直接的例子,来讨论几种在嵌入式Linux下的实现方法:

大规模移植到用户空间

对于只是初步了解Linux设备驱动设计,或者没有经验的开发者,可能将大多数这种基于队列的程序原封不动地移植到用户空间。在这种驱动程序映射中,内存映射通过函数

mmap()提供的指针可以在用户空间操作物理I/O接口。

1#include

2#define REG_SIZE0x4/*device register size*/

3#define REG_OFFSET0xFA400000

4/*physical address of device*/

5void*mem_ptr;/*de-reference for memory-mapped access*/

6int fd;

7fd=open("/dev/mem",O_RDWR);/*open physical memory(must be root)*/ 8mem_ptr=mmap((void*)0x0,REG_AREA_SIZE,PROT_READ+PROT_WRITE,

9MAP_SHARED,fd,REG_OFFSET);

10/*actual call to mmap()*/

复制代码

一个进程下的用户线程运行类似RTOS的中断服务例程或延时任务一样的操作,然后使用SVR4进程间通信函数msgsnd()将消息放进队列,等待被另一个本地线程或者另一个进程利用函数msgrcv()获取。

这种快速缺乏技巧的处理方法是一种较好的原型,但同时给代码模型建立带来了巨大的挑战。首先重要的是要在用户空间扫描中断.象DOSEMU项目提供基于信号的I/O中断方式,但用户空间的中断处理过程非常慢(一般毫秒级中断延时相较内核中断服务例程数十微秒中断延时).进一步讲,即使采用可抢占Linux内核,和实时调度策略,用户空间的切换调度不能保证I/O线程100%的及时得到执行。

为使用Linux驱动程序重新设计

较可取的是应该至少写一个简单Linux驱动程序在内核层处理中断。一个基本的字符或者块驱动程序,能够在“上半部”直接处理中断数据,或者延时到任务队列或2.6内核新工作队列中作后续处理。一个或者多个应用线程/进程能够打开设备然后执行同步读操作,正像RTOS用队列实现同时调用一样。需注意的是,这种方法需要重写I/O线程读取,代替队列接收操作。

保留一个RTOS基于队列的I/O架构

为了减小移植到嵌入式Linux后的影响,可以在保留基于队列的方案,添加额外的线程或者守护进程,在新创建的设备上等待I/O操作.当数据准备好以后,这些线程或者守护进程被唤醒,按队列重排由应用线程或进程读取的数据。

移植方法

将RTOS移植到嵌入式Linux与商业应用程序移植概念上并无区别。当准备好移植的基础性工作:(创建make/build脚本和工具,编译器兼容性,指定所用的头文件等)之后,移植任务面临的是应用程序的结构和(API)使用问题。为了便于下面的讨论,我们假设“应

用”部分(除针对I/O以外的所有代码)会被从RTOS系统中移植到单独的一个Linux进程;RTOS任务映射到Linux线程,而任务的进程间通信(IPC)映射到Linux进程和线程相应通讯。

移植的基本概念容易理解,问题主要出现在细节上。最常见的是RTOS中的应用程序接口以及如何把它们保留到linux结构中继续使用。

映射RTOS任务到Linux基于进程的线程Process-based Threads

整体分析―重构

假如项目时间要求不是很紧,并且为了将来项目的可重用和代码可移植性,你会化时间分析当前RTOS应用程序结构以及怎样将他们映射到Linux中去。对于RTOS应用,需要考虑将任务对应一一映射到Linux基于进程的线程中去,或者考虑将RTOS应用重分配到多个Linux进程中去。基于这些考虑,应该重新考虑将RTOS进程间通信(IPC)用合适的进程间或者进程内通讯来替代。

在驱动程序上,肯定要把不规范的内嵌式RTOS代码转化成相应的驱动程序。如果已有的应用程序已经很好划分,或者使用RTOS I/O应用程序接口,或者分隔在不同的层面,转化工作将非常容易进行。如果这类I/O代码分散于整个应用程序中,将面临巨大工作量。

基于API的方法

对于急于摆脱旧RTOS,或者尝试将原型综合在一起的开发者,更倾向于将很多RTOS映射或者转化为相当Linux API。程序的接口几乎是透明的(兼容的API,IPC,系统数据类型等)。其余部分可以通过用#define重新定义和使用宏来解决。剩下的部分需要重新编码,作为完整抽象层的一部分。

通过使用仿真库-很多商业嵌入式Linux都带有(比如我们公司的针对Wind River

VxWorks和pSOS的仿真库),或者使用第三方公司提供的API映射包,比如MapuSoft,能够使你在移植基于API的程序时有良好的开端。

移植RTOS代码和API到Linux的多叉方法

大多数项目采用混合的方法,映射所有兼容的或者容易转化的API,重新配置那些对运行速度有要求的部分,重新编写剩余的部分代码直到编译通过和可以运行为止。

在内核和用户空间适用的API

对于需要重新编写和其他API实现方法,你得重新分配RTOS应用程序和I/O代码和Linux内核/用户空间相对应。

有两个非常重要的区别:

·RTOS平等地让应用程序和I/O代码能够访问任何地址,几乎可以进行任意操作,Linux则更讲究应用级别和权限。

·旧的RTOS代码能够(至少在链接时)“看见”每一个符号和系统的入口点,Linux用户代码是分离的,内核程序和用户程序完全分开。

Linux分层权限访问的结果是,仅内核代码(驱动程序)能够访问物理内存,其它用户代码必须有根用户权限才能访问。

一般情况下,用户空间代码与Linux内核相隔离,只有当内核的信息出现在/proc/ksyms 时才能被直接“看见”。进一步讲,不能直接调用对于内核可见的系统调用,只能通过用户库函数调用。Linux这种分隔是有意用来加强稳定性和安全性。

相反的当写驱动程序的时,静态链接的驱动程序专属于整个内核名字空间(不是出口),但是对于基于进程的用户空间,符号和入口点完全不可见。并且,当驱动程序封装成可动态加载的模块时,程序在内核里面通过EXPORT_SYMBOL宏来使用显示的接口。

网络驱动程序移植

如上面指出的,字符和块驱动程序移植到Linux下较为明了。而移植网络驱动程序则要困难得多。

Linux伴随TCP/IP一起成长,而大多数的RTOS到90年代晚期才将添加网络支持。这些网络常常仅支持基本功能,比如只能处理单个会话或者同时只能访问一个端口,或者只能支持单一网络媒质的物理接口。在某些情况下网络结构,在允许多重接口和物理类型连接后,才能实现(比如Wind River VxWorks MUX代码)。

糟糕的是,你不得不重写大部分或者全部的RTOS中现有网络接口。好消息是,对于Linux 网络重新划分不是太困难,而且有大量的开源网络设备驱动例子程序可供参考。

你的移植任务会是怎样用合适的封装格式和接口代码组装下图表中底部区域:

Linux网络驱动程序框图

写网络驱动程序不是初学者的事。许多RTOS网络驱动程序实际上是从GPL的Linux接口演变而来,因此,你也许通过代码本身可以发现程序易用性。更进一步的,有大量、并且一直在增长的系统集成和咨询社区以合理的收费帮助嵌入式开发者将他们的应用移植到Linux中去。

总结

本文深入分析了将软件从原有的RTOS移植到Linux时,嵌入式开发者面临的挑战和得到的好处。寥寥几千字对于深入研究许多驱动程序移植的细节来说过于简单(总线接口的驱动API,地址转换等),但是现有的众多开源GPL驱动程序代码,可以作为移植的文档参考和模板。本文肯定对你的团队在移植RTOS到Linux的时候有所帮助,对重新规划代码、更好

移入嵌入式Linux有所启发。

linux网卡驱动的配置

RedHat5.1下安装Realtek8168网卡驱动 1.先识别机器上的网卡型号: [root@localhost kernel]#kudzu --probe --class=network 2、使用命令查看kernel包是否都装全了,具体如下: [root@localhost kernel]# rpm -qa | grep kernel 如果装全了,会显示如下几个包: kernel-xen-devel-2.6.18-8.el5 kernel-devel-2.6.18-8.el5 kernel-2.6.18-8.el5 kernel-xen-2.6.18-8.el5 kernel-headers-2.6.18-8.el5 如果没有装全,就在redhat enterprise Linux 5.0第一个ISO的Server文件目录下可以找到对应的包,拷贝到某一具体目录下,进入目录后,用如下命令就可以进行安装: [root@localhost kernel]# rpm -ivh kernel-devel-2.6.18-8.el5.x86_64.rpm

注意:如果不装全这些包,在网卡编译时就会报错说找不到src目录文件。 用如下命令查看GCC是否安装,通常都装上的,还是检查一下比较好。 [root@localhost 2.6.18-8.el5]# whereis -b gcc gcc : /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc 3、将r8168-8.aaa.bb.tar.bz2解压出来变成r8168-8.aaa.bb文件夹形式,拷到U盘 在redhat下挂载U盘: 插入U盘 [root@localhost kernel]#mount /dev/sdb1 /mnt/usb 4.将r8168-8.aaa.bb文件夹拷都本地,如/home目录下 首先将u盘中的驱动程序包拷贝到/home目录下 [root@localhost media]# cp r8168-8\[1\].011.00.tar.bz2 /home/ [root@localhost media]# cd /home/ [root@localhost home]# ls r8168-8[1].011.00.tar.bz2 5.其次解压驱动程序包 [root@localhost home]# tar -vjxf r8168-8\[1\].011.00.tar.bz2

linux下安装编译网卡驱动的方法

linux下安装编译网卡驱动的方法 你还在为不知道linux下安装编译网卡驱动的方法而不知所措么?下面来是小编为大家收集的linux下安装编译网卡驱动的方法,欢迎大家阅读: linux下安装编译网卡驱动的方法 安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空。 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网上找的资料进行整理,并实际操作的过程,仅供借鉴。 一.检测linux系统内核版本和网卡类型,相关命令如下: uname -r 查看linux内核版本(uname -a 可显示所有信息)

lsmod 设备加载情况 ls /usr/share/hwdata 查看硬件设备 lspci 查看pci网卡设备ethernet controller 厂商和型号,modprobe **** ****为网卡型号,例如modprobe RTL8101E ,如果出错,说明模块不存在,该型号不识别 我在这一步时查找不到网卡型号,无奈只能由同时采购的其他相同型号预装win7的电脑下查看网卡型号,是个笨办法,嘿嘿…… 找到网卡型号后就到驱动之家下载了相应网卡的linux驱动,这些需要根据自己的实际情况下载,不多说了,重点是后面。 二.下载网卡驱动 Intel_e1000e-1.9.5.zip 为我下载的所需的网卡驱动,这个在linux下需自己编译. 三.安装网卡驱动

1.检测编译需要用到内核的源代码包和编译程序gcc。所以如果没有的话,要先装。 [root@localhost ~]# rpm -qa|grep kernel kernel-xen-2.6.18-8.el5 kernel-xen-devel-2.6.18-8.el5 kernel-headers-2.6.18-8.el5 [root@localhost ~]# rpm -qa|grep gcc gcc-c++-4.1.1-52.el5 libgcc-4.1.1-52.el5 gcc-4.1.1-52.el5 gcc-gfortran-4.1.1-52.el5 如果缺少kernel-xen-devel-2.6.18-8.el5,可以去安装光

在linux系统下如何安装网卡驱动

2011年研发二部工作 周报月报 作者:赵玉武 时间:2012-6-13

目录 一、整理漏扫系统的结构 (1) 1、整理NetScan目录中的程序。 (1) 2、整理proftpd目录中内容(插件的检测信息)。 (4) 3、整理proxyd目录中的安管(安管平台)。 (8) 二、熟悉Nessus的工作原理 (8) 1、Nessus扫描引擎的工作原理... 错误!未定义书签。 三、整理运行的整个流程.............. 错误!未定义书签。 1、通过客户端下发策略,上传到服务器上。错误!未定 义书签。 2、服务端:接收客户端下发的策略。错误!未定义书签。 3、服务端进行身份的认证....... 错误!未定义书签。

一、整理漏扫系统的结构 网卡是Linux服务器中最重要网络设备。据统计,Linux网络故障有35%在物理层、25%在数据链路层、10%在网络层、10%在传输层、10%在对话、7%在表示层、3%在应用层。由此可以看出,网络故障通常发生在网络七层模型的下三层,即物理层、链路层和网络层。对应于实际网络也就是使用的网络线缆、网卡、交换机、路由器等设备故障。Linux的网络实现是模仿FreeBSD的,它支持FreeBSD 的带有扩展的Sockets(套接字)和TCP/IP协议。它支持两个主机间的网络连接和Sockets通讯模型,实现了两种类型的Sockets:BSD Sockets和INET Sockets。它为不同的通信模型和服务质量提供了两种传输协议,即不可靠的、基于消息的UDP传输协议和可靠的、基于流的传输协议TCP,并且都是在IP网络协议上实现的。INET sockets 是在以上两个协议及IP协议之上实现的。 由于交换机、路由器通常独立于Linux或者其他操作系统。网卡设置故障是造成Linux 服务器故障最主要原因。可能因为硬件的质量或性能、磨损老化、人为误操作、不正确的网络设置、管理问题、Linux软件的BUG、系统受到黑客攻击和Linux病毒等原因造成。 Linux 服务器网卡故障排除的思路是:应当遵循先硬件后软件的方法。因为硬件如果出现物理损坏那么如何设定网卡都不能解决故障。解决问题的方法可以从自身Linux计算机的网卡查起,如果确定硬件没有问题了,再来考虑软件的设定。 1、网卡的选择 一般来说,2.4版本以后的 Linux可以支持的网卡芯片组数量已经很完备了,包括著名厂商如:Intel 以及使用广泛的 RealTek, Via 等网卡芯片都已经被支持,所以使用者可以很轻易的设定好他们的网

Linux下网卡驱动程序

Linux下8019网卡驱动程序 福建鑫诺通信有限公司陈光平(chenggp_fj@https://www.360docs.net/doc/9712413922.html,) 本文以S3C44B0的CPU为例,详细解析了linux下RTL8019网卡驱动程序工作原理,其间知识大多来源互联网络,特别是浙大潘纲的论文,在此不一一列出,此文目的只是让嵌入式linux爱好者得到更多网卡驱动的资料,并获得交流机会,不足之处请指正 (一)、硬件相关部份 1、CPU与网卡的连接方式 (s3c44B0 CPU) (RTL 8019网卡) CPU与网卡接线图 上图为S3c44b0CPU和网卡的接线图,此接法并非固定,如接法不同,则牵涉到很多相应的改动,下面会详细分析不同之处 从硬件部门得到:网卡在CPU的存储空间上接BANK4,即0x08000000(看44B0手册)外部中断号为:EXTINT3 (irqs.h文件获得值为22) 上面两个值可以查CPU手册,或询问硬件设计人员 由上图可以知道以下数据: (1)、网卡与CPU地址线连接错开8位(A0接A8) (2)、总共连线,其实4根就足够用了,因为每根线可以译码4个地址空间,总共是16个地址空间,每个地址空间对应一个寄存器地址,而8019总共就是16个寄存器(3)、一般是跳线模式,不使用9346芯片 1-1 基地址算法 首先8019的基地址是300H(见RTL8019芯片资料:选择IO总线地址),但是有些硬件已在芯片中做过了偏移,比如我们的网卡已做了处理,基址已偏移到0x08000000, 那么因为网卡A0接CPU的A8,表示基地址左移8位,下一个寄存器reg0的地址就是:0x08000100(0000,0000,0001 0001,0000,0000) 还不理解的话我们看另一种接法:

Linux下查看网卡驱动和版本信息

Linux下查看网卡驱动和版本信息 查看网卡生产厂商和信号 查看基本信息:lspci 查看详细信息:lspci -vvv # 3个小写的v 查看网卡信息:lspci | grep Ethernet 查看网卡驱动 查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息,包括网卡驱动 # lsmod 列出加载的所有驱动,包括网卡驱动 查看网卡驱动版本 查看模块信息:modifo # 其中包含version信息 或# ethtool-i RHEL 6.3中的网卡驱动版本: # modinfo igb filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/igb/igb.ko version: 3.2.10-k license: GPL description: Intel(R) Gigabit Ethernet Network Driver # modinfo e1000e filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000e/e1000e.ko version: 1.9.5-k license: GPL

description: Intel(R) PRO/1000 Network Driver author: Intel Corporation, # modinfo e1000 filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000/e1000.ko version: 8.0.35-NAPI license: GPL description: Intel(R) PRO/1000 Network Driver # modinfo ixgbe filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/ixgbe/ixgbe.ko version: 3.6.7-k license: GPL description: Intel(R) 10 Gigabit PCI Express NetworkDriver # modinfo r8169 filename: /lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/r8169.ko version: 2.3LK-NAPI license: GPL description: RealTek RTL-8169 Gigabit Ethernet driver 查看网络接口队列数 查看网卡接口的中断信息:#cat /proc/interrupts | grep eth0 或# ethtool-S eth0 查看网卡驱动源码的版本号 解压Intel网卡驱动源码,打开解压缩目录下的*.spec文件查看驱动的版本。 例如:解压e1000-8.0.35.tar.gz网卡驱动后,查看e1000.spec文件。

linux下安装无线网卡驱动

换了linux系统后发现无线不能使用,很是苦恼,于是在网上找到各位大神的做法,终于成功安装。下面给大家介绍一下。本例以安装Fedora 14无线网卡驱动为例。参考文章 https://www.360docs.net/doc/9712413922.html,/Linux/2011-05/35366.htm。 首先在https://www.360docs.net/doc/9712413922.html,/support/802.11/linux_sta.php 上下载32位的驱动, 下载完成之后进入到下载的文件夹下 #cd ~/Downloads 按照readme的做法,新建一个文件夹,并且将该压缩文件移动到新建的文件夹当中 #mkdri hybrid_wl #mv hybrid-portsrc-x86_32-v5.60.48.36.tar.gz hybrid_wl/ 进入文件夹,进行解压, #cd hybrid_wl/ #tar -zxvf hybrid-portsrc-x86_32-v5.60.48.36.tar.gz 由于自述文件当中的做法是指定解压目录,因此为了保险,再把这个压缩文件移动到上一级目录 #mv hybrid-portsrc-x86_32-v5.60.48.36.tar.gz ../ 根据自述文件的说法(The cards with the following PCI Device IDs are supported with this driver.),查看支持的版本 # lspci -n | grep 14e4 0c:00.0 0280: 14e4:4315 (rev 01) BRCM PCI PCI DellProduct Name Vendor ID Device ID Product ID ------------- ---------- --------- ----------- 4311 2.4 Ghz 0x14e4 0x4311 Dell 1390 4311 Dualband 0x14e4 0x4312 Dell 1490

Linux网卡驱动程序详解

当网络上一台计算机准备发送数据时,他的网卡开始工作了,首先网卡的芯片侦听在网络上是否有数据在流动,如果没有,他就把数据发送到网络上,在侦听和发送之间有一段极小的时间延迟,在这段时间内,也有可能在网络上有其他的计算机也准备发送数据,也侦听到网络上没有数据在流动,这就可能两台甚至多台的数据一起发送到网络上,产生数据的碰撞,发送数据的计算机的网卡芯片当然要在发送完成后再校验返回的数据,如果发现和发送的数据不一致,那就是说产生了碰撞,所以在一个以太网络中的计算机数量不宜过多,他不但会增加广播包在网络中的数量,也请也会增加数据包的碰撞次数. 我们的计算机的网卡芯片在接收到一完整的数据包后,芯片的一引脚通知8259中断控制器,中断控制器再发出中断给CPU,由此,CPU随即调用该网卡的中断例程,如: DOS是这样的 屏蔽所有中断(cli) push any register 因为中断向量在段0 所以xor ax,ax mov ds,ax mul ax,中断号 那么在数据段的[ax]偏移处是该中断例程的指针了call [ax]就到该中断例程了...(DOS是比较遥远的事情了,我所描述的是他的原理,当然不会这么简单,如果那位网友有兴趣详细描述一下上面的原理,纠正或替换掉我所写的就感激不尽了) 总之,在本例程中,CPU将调用elintr中断例程,并带有参数unit即该种网卡的第几块(因为在计算机中,你有可能装了相同的网卡有几块),elintr的作用是把数据从网卡的数据存储器中读到我们在该网卡初始化时预先分配好的数据缓冲区中,他调用的函数就只有elread,同样elread也只调用了elget一个函数.elread函数比较简单,就是调用elget,elget则相对比较复杂一点,涉及到核心内存分配mbuf,mbuf是比较恐怖的东西,正如STEVEN所写的,为了节约当时"巨大"的4M内存,牺牲了性能搞出了这个mbuf东东,mbuf是必须要弄懂的,虽然在设备驱动程序中调用他的宏和函数不多,但在后面的IP协议,TCP协议中有不少涉及的地方. 关于数据发送方面和接收差不多,在上层协议放置好数据到mbuf链后,调用el_start函数,该函数把mbuf链中的数据放置到本块网卡的发送队列缓冲el_pktbuf中,然后再调用el_xmit 函数,此函数把发送队列缓冲el_pktbuf中的数据有传递到网卡的数据存储器中.我认为,这中间的内存拷贝是多于的,应该在el_start函数中直接把mbuf中的数据传递到网卡的数据存储器中,这样会使性能有较大幅度的提升,因为在驱动程序设计时,最好减少大量的内存拷贝,他占用的时间太多了. */ /* FreeBSD的3COM以太网设备驱动程序*/ /*本段头文件是在编译核心时产生的*/ #include "el.h" /*此三文件为编译时产生的头文件,内容是定制核心的一些常量*/ #include "opt_inet.h"

LINUX下安装无线网卡驱动程序

1.1下载驱动程序 一、首先弄清楚当前使用的是什么版本的Linux,如:Redhat9.0、Freda core5等。Linux用的是什么版本的内核,可以用uname –a得知内核版本号。 二、使用的是什么接口类型的无线网卡,常见的接口类型有PCI (台式机)、Cardbus/PCMCIA(笔记本)、USB(台式机、笔 记本)等。 三、无线网卡使用的是哪一种类型的芯片,判断方法如下,到相 关网站下载与其相对应的驱动程序。常用的无线网卡驱动及其支 持的芯片类型和接口类型如下表1所示。 PCMCIA卡:将无线网卡插入笔记本电脑中,用命令lspci可以看到芯片类型,如: Realtek Semiconductor Co.. Ltd, RTL8180L802.11b MAC (rev 20)

其中RTL8180L即为网卡芯片类型,用参数v可以看到更详细的信 息。 USB卡:用命令lsusb可以看到芯片类型(fc5没有此命令)。通过其它方法查找。 驱动程序芯片类型接口类型官方网站下载页 Linux-wlan-ng Prism2/2.5/3 Cardbus/PCI/USB https://www.360docs.net/doc/9712413922.html,/download.shtml Madwifi Atheros系列Cardbus/PCI https://www.360docs.net/doc/9712413922.html,/ islsm ISL38XX USB/PCI http://jbnote.free.fr/prism54usb/index.html 表1:网卡驱动程序有关信息 1.2驱动程序的安装 每款驱动的安装方法各不相同,阅读INSTALL文档,获得驱动程 序的具体安装方法及系统内核要求。阅读驱动程序附带的 README文档,获得有关此驱动的详细信息,如驱动所支持的网 络模式、接口类型、所包含的模块的功能及无线网卡的配置等。 下面是安装网卡驱动程序的一般步骤: 编译网卡驱动程序 #make

linux查看网卡型号、驱动版本、队列数

一、如何查看网卡生产厂家和型号? lspci命令 查看基本信息 lspci,详细信息lspci -vvv 00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 13) 00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 13) 00:02.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 2 (rev 13) 00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 13) 00:04.0 PCI bridge: Intel Corporation 5520/X58 I/O Hub PCI Express Root Port 4 (rev 13) 00:05.0 PCI bridge: Intel Corporation 5520/X58 I/O Hub PCI Express Root Port 5 (rev 13) 00:06.0 PCI bridge: Intel Corporation 5520/X58 I/O Hub PCI Express Root Port 6 (rev 13) 00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 13) 00:08.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 8 (rev 13) 00:09.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 9 (rev 13) 00:0a.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 10 (rev 13) 00:0d.0 Host bridge: Intel Corporation Device 343a (rev 13) 00:0d.1 Host bridge: Intel Corporation Device 343b (rev 13) 00:0d.2 Host bridge: Intel Corporation Device 343c (rev 13) 00:0d.3 Host bridge: Intel Corporation Device 343d (rev 13) 00:0d.4 Host bridge: Intel Corporation 5520/5500/X58 Physical Layer Port 0 (rev 13) 00:0d.5 Host bridge: Intel Corporation 5520/5500 Physical Layer Port 1 (rev 13) 00:0d.6 Host bridge: Intel Corporation Device 341a (rev 13) 00:0e.0 Host bridge: Intel Corporation Device 341c (rev 13) 00:0e.1 Host bridge: Intel Corporation Device 341d (rev 13) 00:0e.2 Host bridge: Intel Corporation Device 341e (rev 13) 00:0e.3 Host bridge: Intel Corporation Device 341f (rev 13) 00:0e.4 Host bridge: Intel Corporation Device 3439 (rev 13) 00:14.0 PIC: Intel Corporation 5520/5500/X58 I/O Hub System Management Registers (rev 13) 00:14.1 PIC: Intel Corporation 5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers (rev 13)

linux无线网络配置无线网卡驱动安装与wlan802.11配置

Linux无线网络配置——无线网卡驱动安装与WLAN 802.11 配置 Linux无线网络配置——无线网卡驱动安装与WLAN 802.11配置2008-05-10 18:27 20739人阅读 评论(5) 收藏 举报 Linux无线网络配置 ——无线网卡驱动安装与WLAN 802.11配置 WLAN (Wireless Local Area Network)类似于有线以太网,WLAN 的802.11a 标准使用5 GHz 频段,支持的最大速度为54 Mbps,而802.11b 和802.11g 标准使用2.4 GHz 频段,分别支持最大11 Mbps 和54 Mbps 的速度。使用Windows操作系统,WLAN配置很简单。无线网卡厂 商将Windows下的驱动随网卡一起销售。而Linux新兴的操作系统,这方面的驱动不多。以前购买无线网卡时也没考虑Linux下的驱动程序,于是需要编译驱动程序源码。 现在市场上大部分的无线网卡都是对于Atheros芯片的。

如TP—LINK的310G、350G、510G、550G、650G。对于Atheros芯片的网卡,可以到https://www.360docs.net/doc/9712413922.html,网站上找到驱动程序,根据源代码包里面的README和INSTALL文件来获得足够的安装信息。最新驱动源码包(0.9.2版本)下载地址 https://www.360docs.net/doc/9712413922.html,/madwifi/madwifi-0.9.2.tar .bz2?modtime=1154005765&big_mirror=0 下面详细介绍无线网卡驱动程序的安装和WLAN的配置。操作步骤: 下载驱动源码包存放在/root/downloads目录下 步骤一、解压源码压缩包 1). 进入文件所在目录 cd /root/downloads 2). 解压.bz2格式的压缩包 bunzip2 madwifi-0.9.2.tar.bz2 生成.tar格式压缩包 3). 解压.tar格式的压缩包 tar xvf madwifi-0.9.2.tar 步骤二、编译安装驱动

新装Linux系统没有网卡驱动的解决办法

新装Linux系统没有网卡驱动的解决办法 你还在为不知道新装Linux系统没有网卡驱动而不知所措么?新装Linux系统没有网卡驱动你了解多少?下面来是小编为大家收集的新装Linux系统没有网卡驱动的解决办法,欢迎大家阅读: 新装Linux系统没有网卡驱动的解决办法 首先说明几个命令: #lsmod ——显示已载入系统的模块。 执行lsmod指令,会列出所有已载入系统的模块。Linux 操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。你可以将这些功能编译成一个个单独的模块,待需要时再分别载入。 #dmidecode

——以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息。这些信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。 #lspci ——list all PCI devices:列出机器中的PCI 设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能列出来),通过该命令可以查到网卡的厂商和型号。 #modprobe ——自动处理可载入模块。modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。 #depmod ——分析可载入模块的相依性。depmod可检测模块的相依性,供modprobe在安装模块时使用。

Linux E1000网卡驱动分析

Linux-千兆网卡驱动实现机制浅析 作者: Minit, 出处:博客,责任编辑: 罗丽艳, 2009-03-29 00:00 1.引言 本分析主要针对e1000网卡,驱动源码为7.3.20-k2。本文的目的不是为了讲述如何编写驱动程序,主要是分析网卡驱动内部的实现机制。通过此分析,希望可以理解驱动程序中的各个部分的关系,对网卡发送和接收数据包有直观的了解,同时也希望对设计网卡驱动程序有帮助。由于网卡驱动程序与硬件和操作系统都有很紧密的联系,故要把某些问题完全弄清楚,需要很多的经验与相关知识,介于自身的水平有限,且自身经验较少,故肯定存在很多问题,希望本文的读者发现了问题不吝与作者联系。 2.网卡驱动的体系结构 网卡作为一个PCI设备,其必须遵守相应的PCI规范,即必须为网卡定义相应的标识号,每个PCI外设由一个总线编号、一个设备编号及一个功能编号来标识。网卡驱动程序则需要定义相应的pc i_devic e_id结构来表示其支持的PCI外设的标识,通过在驱动程序的pci_device_id中查找设备标识号,将驱动程序与设备联系起来。网卡作为PCI设备,其包括两类空间,一种是配置空间, C PU不能直接访问,访问这个空间,需要借助BIOS功能;另一种是普通的控制寄存器空间,这部分经过映射后,CPU可以直接访问控制。 在硬件加电初始化时,BIOS统一检查所有的PC I设备,并为每个设备分配一个物理地址,该地址通过BIOS获得并写到设备的配置空间内,驱动程序就可以将网卡的普通控制寄存器映射到一段内存空间内,C PU通过访问映射后的虚拟地址来操控网卡的寄存器。当操作系统初始化时,其为每个PC I设备分配一个pc i_dev结构,并将前面分配的物理地址写到pc i_dev的res ourc e字段中。在网卡驱动程序中则可以通过读取pc i_dev中的res ourc e字段获得网卡的寄存器配置空间地址,其由函数pc i_res ource_s tart()和 pci_resourc e_end()获得该空间的起始位置,通过ioremap()将该段位置映射到主存中,以便CPU访问控制网卡的I/O和内存空间。如重启网卡设备,则是通过向映射后的网卡的相应寄存器写入命令实现,其通过映射后的首地址及相应的寄存器偏移量找到该寄存器的位置,然后通过函数writeb()写该寄存器。有关相关寄存器对应的偏移量,一般是通过网卡的相关的datasheet获得。如果要获取网卡的MAC地址,则一般通过函数readb()读取首地址开始的前六位内容即可得到。

Linux服务器网卡驱动安装

Linux服务器网卡驱动安装及故障排除一(图)时间:2005-10-18 08:00 来源:网管之家https://www.360docs.net/doc/9712413922.html, 字体:[大中小] 网卡是Linux服务器中最重要网络设备。据统计,Linux网络故障有35%在物理层、25%在数据链路层、10%在网络层、10%在传输层、10%在对话、7%在表示层、3%在应用层。由此可以看出,网络故障通常发生在网络七层模型的下三层,即物理层、链路层和网络层。对应于实际网络也就是使用的网络线缆、网卡、交换机、路由器等设备故障。Linux的网络实现是模仿FreeBSD的,它支持FreeBSD的带有扩展的Sockets(套接字)和TCP/IP协议。它支持两个主机间的网络连接和Sockets通讯模型,实现了两种类型的Sockets:BSD Sockets 和INET Sockets。它为不同的通信模型和服务质量提供了两种传输协议,即不可靠的、基于消息的UDP传输协议和可靠的、基于流的传输协议TCP,并且都是在IP网络协议上实现的。INET sockets是在以上两个协议及IP协议之上实现的。它们之间的关系见图1所示。 图1 Linux网络模型 由于交换机、路由器通常独立于Linux或者其他操作系统。网卡设置故障是造成Linux 服务器故障最主要原因。可能因为硬件的质量或性能、磨损老化、人为误操作、不正确的网络设置、管理问题、Linux软件的BUG、系统受到黑客攻击和Linux病毒等原因造成。 Linux 服务器网卡故障排除的思路是:应当遵循先硬件后软件的方法。因为硬件如果出现物理损坏那么如何设定网卡都不能解决故障。解决问题的方法可以从自身Linux计算机的网卡查起,如果确定硬件没有问题了,再来考虑软件的设定。 1.网卡的选择 一般来说,2.4版本以后的 Linux可以支持的网卡芯片组数量已经很完备了,包括著名厂商如:Intel 以及使用广泛的 RealTek, Via 等网卡芯片都已经被支持,所以使用者可以很轻易的设定好他们的网络卡。但是由于Linux发行版本众多(目前超过188个),使用前最好查看Linux发行版本的文档。以Redhat Linux 9.0为例,这个设备列表在Ethernet- HOWTO 文档中。另外最直接的方法是查看一个目录:/lib/modules/release/kernel/drivers/net,其中release是内核版本,可以使用命令:“uname -r”获得。对于Redhat Linux 9.0是2.4.20-8。 #ls /lib/modules/2.4.20-8/kernel/drivers/net/ 3c501.o atp.o eth16i.o ni52.o smc-ultra.o 3c503.o bonding.o ethertap.o ni65.o starfire.o 3c505.o cs89x0.o ewrk3.o ns83820.o strip.o 3c507.o de4x5.o fc pcmcia sundance.o 3c509.o de600.o fealnx.o pcnet32.o sungem.o 3c515.o de620.o hamachi.o plip.o sunhme.o 3c59x.o defxx.o hamradio ppp_async.o tc35815.o 8139cp.o depca.o hp100.o ppp_deflate.o tg3.o 8139too.o dgrs.o hp.o ppp_generic.o tlan.o 82596.o dl2k.o hp-plus.o ppp_synctty.o tokenring 8390.o dmfe.o irda r8169.o tulip

linux下安装无线网卡驱动

凡使用红旗LINUX 6.0 sp1的可在开始菜单点击实用工具--软件包管理器如图,找到带有“BCM43XX”字样的软件包卸载。 重启红旗LINUX 6.0 sp1。 1,从https://www.360docs.net/doc/9712413922.html,/下载ndiswrapper 1.53软件。此软件是用来使Linux 运行windows无线网卡驱动,从而达到驱动无线的目的。 2,从windows系统中提取无线网卡驱动文件。以便供ndiswrapper使用。 到windows中找驱动文件也比较简单,先是我的电脑-->属性-->硬件-->设备管理器。 如图:

点击无线网卡的属性弹出属性框。如图:年 在“驱动程序详细信息”中,可以看到ar5211.sys文件。用系统的搜索功能搜索c盘中的“5211”文件,可以查出4个包含“5211”的文件。其中有两个是相同的,复制其中3个到自建的net文件夹中。拷贝到Linux中。 3,解压ndiswrapper 1.53软件。到压缩文件目录下运行tar -xzvf ndiswrapper-1.53.tar.gz 如图:

4,进入ndiswrapper目录编译软件。命令:make如图: 5,保持在ndiswrapper目录安装软件,先用su命令切换到root用户,确定变成root用户后目录没有变。如图:

成功切换到root用户后,命令:make install 安装软件。如图 就此ndiswrapper安装就完成了。接下来安装windows驱动到系统中。 6,进入net目录,也就是刚拷贝到Linux中的windows无线网卡驱动文件目录。运行命令:/usr/sbin/ndiswrapper -i net5211.inf 安装windows驱动,如图:

linux网卡驱动安装方法

linux网卡驱动安装方法 1、查找网卡芯片,确立网卡型号,并确立linux内核版本,到对应的网卡官网下载驱动。 2、安装步骤(这里以RTL8110为例) 1)cd到网卡驱动所在文件夹,解压: # tar vjxf r8168-8.aaa.bb.tar.bz2 //关于解压命令查看《Linux下软件包的解压方式大全》 2)进入文件夹: # cd r8168-8.aaa.bb 3)安装(需安装kernel-source,否则会失败): # make clean modules (as root or with sudo) # make install # depmod -a # insmod ./src/r8168.ko (or r8168.o in linux kernel 2.4.x) 4)通过以下指令查看驱动是否已经启动. # lsmod | grep r8168 # ifconfig -a 如果能看到类似“ethX”的结果输出, 说明已成功驱动网卡. 5)配置并激活ethX. # ifconfig ethX up ,where X=0,1,2,... 3、附realtek RTL8168B驱动readme文档: This is the Linux device driver released for RealTek RTL8168B/8111B and RTL8168C/8111C, Gigabit Ethernet controllers with PCI-Express interface. - Kernel source tree (supported Linux kernel 2.6.x and 2.4.x) - For linux kernel 2.4.x, this driver supports 2.4.20 and latter. - Compiler/binutils for kernel compilation Unpack the tarball : # tar vjxf r8168-8.aaa.bb.tar.bz2 Change to the directory: # cd r8168-8.aaa.bb If you are running the target kernel, then you should be able to do :

手动编译安装Linux网卡驱动

首页网页制作脚本专栏

QQ 空间新浪微博腾讯微博搜狐微博人人网开心网百度搜藏更多 2015-05-27CentOS7系统进行IP 和主机名的网络配置的过程图解2015-05-26CentOS 服务器进行初始化设置的方法2015-05-22CentOS 下rpm 包与yum 安装与卸载方法2015-05-05centos 忘记密码怎么重置root 密码?2015-05-05Centos 系统网卡怎么手动配置? 2015-04-30Linux 系统怎么更新补丁?Centos6更新系统的教程2015-04-23CentOS 6误删除的boot 分区该如何还原恢复2015-04-21在 CentOS 7 系统上安装 Kernel 4.0的方法2015-04-20Centos6下使用yum 安装Varnish 的配置方法2015-04-20Centos6下Varnish 启动失败的解决办法2015-04-17CentOS7创建本地YUM 源的三种方法 2015-04-17 CentOS7设置日期和时间方法以及基本概念介绍 3.编译下载的模块 下载完整的驱动程序源代码,如文件名为:dlkfet-4.24.tar.gz 1.将取得的文件放置到/tmp 下,并解压文件cp dlkfet-4.24.tar.gz /tmp cd tmp tar -zxvf dlkfet-4.24.tar.gz cd dlkfet-4.242.开始编译make 会产生一个文件模块:rhinefet.o,将它移动到模块放置的目录后,执行depmod -a 即可.cp rhinefet.o /lib/modules/`uname -r`/kennel/drivers/net depmod -a 4.模块测试 内核模块编译完成后,就要测试能否正常运行,因为我们已经运行depmod -a,所以直接以modprobe 进行模块的加载. 1.加载模块测试modprobe rhinefet.o 注意,不要写完整的名称,.o 不需要写.rhinefet 就是刚刚编译出来的rhinefet.o.lsmod 2.设置开机加载摸块就是编辑/etc/modules.conf vi /etc/modules.conf 在文件中加入下面一行:alias eth0 rhinefet 3.重新启动,看是否正常启动模块sync;sync;reboot 上面我们使用的是rhinefet 模块,如果不是这个名称,就请依你的实际情况来修改.接下来就是测试这个网卡是否正常工作. [收藏] [复制链接发给好友] [打印] [关闭] 上一篇:Linux 系统通过手机GPRS 无线上网下一篇:linux 系统挂载光盘镜像ISO 的方法 相关文章

linux服务器安装网卡驱动一般步骤(总结)

1.linux服务器安装网卡驱动一般步骤(总结) 现在很多服务器安装linux可能会出现网卡,硬盘raid驱动无法等现象,现在将一般安装驱动方法介绍如下: 一般服务器自带的光盘里面,有一张是专门的驱动盘。 1、将盘放入光驱 2、挂载mount /dev/cdrom /mnt/cdrom 当挂载U盘时,可以到vi /etc/fstab 查看U盘的挂载属性目录 3、找到驱动目录,猜测是如下目录 cd /mnt/cdrom/driver/net/linux/redhat4.2 4、里面会有tgz后缀的文件,拷贝到root cp 名.tgz /root 5、解压编辑安装 tar xvfz 名.tgz cd 名 make make install 6、扫描硬件 service kudzu start 7、会跳出兰框,按任意键,选择configure,设置IP地址。OK 案例1: IBM X 3650 安装网卡驱动 Red Hat Enterprise Linux4.2以后版本可以自动识别IBM X 3650网卡驱动,但是以前版本却不行,下面介绍低版本安装网卡驱动方法: 1 Red Hat Enterprise Linux 3版本U6以上可以识别阵列卡,但是无法加载网卡驱动;如果不是U6的版本,需要手动输入linux dd加载阵列卡驱动来继续安装操作系统。 2 安装前题: 在开发工具和系统内核全安装 安装GCC、kernel-devel、rpmbuild 3个相关包。说明:rpmbuild ---SRPM是RPM包source 的发布形式, 可分为包含原始代码的(src.rpm)包和不包含原始代码的(nosrc.rpm)包两种.其中,src.rpm包含原始代码 也就是src.rpm类似的包都要用rpmbuild命令安装。 rpm -ivh rpm-build-4.2-1.i386.rpm rpm -ivh kernel-devel-2.6.9-5.EL.i686.rpm 3、下载网卡驱动bnx2-1.4.36c-1.src.rpm,

相关主题
相关文档
最新文档