欢迎 chinavb 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2009年01月08日 星期四  您现在位于: 首页 → 技术文章 → Linux操作系统下即...
   Linux操作系统下即插即用设备的安装
作者:chinaitlab  出处:chinaitlab  更新时间: 2007年01月15日 
即插即用,在Linux底下这可能是困扰大家好久的问题,我也曾经妥协过,用老的非即插即用设备取代它。 

随着时间的推移,Linux玩友渐渐总结出两种方法。一是先从DOS启动,初始化设备后,再用loadlin加载到Linux中。但这种方法耗时太大。二是用isapnptools的应用程序,这是一种很好的方法。 

现在,大多数发行套件中都有isapnptools。如果你的套件中有,安装它即可。如果你的发行套件中没有它,到http://www.roestock.demon.co.uk/isapnptools/去下载一份,解压后把isapnp 和 pnpdump 拷贝到目录 /sbin中即可。 

下面就是实战阶段了。需要准备的就是把你所有要装的即插即用设备全部装好,以ROOT身份登陆。然后运行以下命令/sbin/pnpdump > /etc/isapnp.conf,这会把你机器上所有的即插即用设备信息写入文件/etc/isapnp.conf中,下面是我的机器上的/etc/isapnp.conf文件的一部分: 


  
  # $Id: plugnplay.html,v 1.1.1.1 1998/12/26 04:41:14 jack Exp $ 
  # This is free software, see the sources for details. 
  # This software has NO WARRANTY, use at your OWN RISK 
  # 
  # For details of this file format, see isapnp.conf(5) 
  # 
  # For latest information on isapnp and pnpdump see: 
  # http://www.roestock.demon.co.uk/isapnptools/ 
  # 
  # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER 
  # 
  # Trying port address 0203 
  # Board 1 has serial identifier c5 c0 7f 53 05 01 22 05 07 
  # Board 2 has serial identifier 5a 80 86 00 01 20 00 a8 65 
  # Board 3 has serial identifier e8 46 46 46 46 90 30 72 56 
  # (DEBUG) 
  (READPORT 0x0203) 
  (ISOLATE PRESERVE) 
  (IDENTIFY *) 
  (VERBOSITY 2) 
  (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING 
  # Card 1: (serial identifier c5 c0 7f 53 05 01 22 05 07) 
  # Vendor Id AXE2201, Serial Number 3229569797, checksum 0xC5. 
  # Version 1.0, Vendor version 0.0 
  # ANSI string -->Ethernet PnP ISA Card /S <-- 
  # 
  # Logical device id AXE2201 
  # Device support I/O range check register 
  # 
  # Edit the entries below to uncomment out the configuration required. 
  # Note that only the first value of any range is given, this may be 
  # changed if required 
  # Don't forget to uncomment the activate (ACT Y) when happy 
  
  (CONFIGURE AXE2201/3229569797 (LD 0 
  # Compatible device id PNP80d6 
  # Logical device decodes 10 bit IO address lines 
  # Minimum IO base address 0x0240 
  # Maximum IO base address 0x0380 
  # IO base alignment 32 bytes 
  # Number of IO addresses required: 32 
  # (IO 0 (SIZE 32) (BASE 0x0240)) 
  # IRQ 3, 5, 9, 10, 11, 12 or 15. 
  # High true, edge sensitive interrupt 
  # (INT 0 (IRQ 3 (MODE +E))) 
  # (ACT Y) 
  )) 
  # End tag... Checksum 0x00 (OK) 
  # 略去声卡部分 
  #略去modem卡部分 
  
  # Returns all cards to the "Wait for Key" state 
  
  (WAITFORKEY)
 

   
我的系统中共有三个即插即用设备,分别是NE2000兼容网卡,Yamaha OPL~SA2声卡和一个USR 56K modem。由于文件太长,我略去了声卡和modem部分。 

接下来就是为每个设备分配所需资源。有许多方法可以实现。第一种,也是最简单的方法就是,如果你在同一台机器上也装了WIN95或WIN98,通过控制面板的系统的属性页,可以看到在WINDOWS系统下各即插即用设备的资源,记下用到Linux即可。如果你的机器中没有其它的操作系统,采用第二种方法。即手动分配资源,只要各设备资源不发生冲突就行。手动分配资源以前,最好先看一下已经使用的中断列表、I/O列列表,它们分别位于/proc/interrupts、/proc/ioports、/proc/dma。一旦你确定了各设备使用的资源,就可以分配了。 

选择分配给每个设备的资源非常简单。你只要去掉你的设备所需资源前的注释号即可。描述资源的行很容易找到,因为它们总是以INT, IO或 DMA开头。在这些行之前是你所能使用资源的描述。你可以选一组,因为象下面这样的一行说明它们有优先权的区别。 


  
  # Start dependent functions: priority preferred
 

   
在去掉所需资源的注释号后,你还必须去掉(ACT Y)行上的注释号来告诉ISAPNP激活该设备。 

下面是我的/etc/isapnp.conf经过编辑并去掉注释行后的样本: 


  
  READPORT 0x0203) 
  (ISOLATE PRESERVE) 
  (IDENTIFY *) 
  (VERBOSITY 2) 
  (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING 
  
  (CONFIGURE AXE2201/3229569797 (LD 0 
  (IO 0 (SIZE 32) (BASE 0x0240)) 
  (INT 0 (IRQ 3 (MODE +E))) 
  (ACT Y) 
  )) 
  
  (CONFIGURE YMH0020/2156265473 (LD 0 
  (IO 0 (SIZE 16) (BASE 0x0220)) 
  (IO 1 (SIZE 8) (BASE 0x0530)) 
  (IO 2 (SIZE 4) (BASE 0x0388)) 
  (IO 3 (SIZE 2) (BASE 0x0330)) 
  (IO 4 (SIZE 2) (BASE 0x0370)) 
  (INT 0 (IRQ 5 (MODE +E))) 
  (DMA 0 (CHANNEL 0)) 
  (DMA 1 (CHANNEL 1)) 
  (ACT Y) 
  )) 
  
  (CONFIGURE YMH0020/2156265473 (LD 1 
  (IO 0 (SIZE 1) (BASE 0x0201)) 
  (NAME "YMH0020/2156265473[1]{OPL3-SA2 Sound Chip }"
  (ACT Y) 
  )) 
  
  (CONFIGURE USR3090/1179010630 (LD 0 
  (IO 0 (SIZE 8) (BASE 0x02f8)) 
  (INT 0 (IRQ 3 (MODE +E))) 
  (NAME "USR3090/1179010630[0]{U.S. Robotics 56K Voice INT}"
  (ACT Y) 
  )) 
  
  (WAITFORKEY)
 

   
如果喜欢,留着其余的注释也行。下一步就是测试你的配置是否正确。使用以下命令/sbin/isapnp /etc/isapnp.conf,屏幕会出现一些信息,样本如下: 


  
  Board 1 has Identity c5 c0 7f 53 05 01 22 05 07: AXE2201 
  Serial No 3229569797 [checksum c5] 
  Board 2 has Identity 5a 80 86 00 01 20 00 a8 65: YMH0020 
  Serial No 2156265473 [checksum 5a] 
  Board 3 has Identity e8 46 46 46 46 90 30 72 56: USR3090 
  Serial No 1179010630 [checksum e8]
 

   
如果你的配置文件有问题或发生资源冲突,它就会告诉你。发生问题不要着急,从头慢慢查找原因,一步一步再来。如果一切平安无事,你还必须保证你的即插即用设备在启动时能进行认证。不幸的是许多发行套件的初始脚本执行方式不同。如果你的发行套件中有isapnptools的话,可能你已经有正确的初始脚本。如果没有,仿照/etc/rc.d/init.d中的格式,自己写一个。 

最后一步是让你的内核支持即插即用设备。目前,内核支持isapnp设置的即插即用设备的唯一方法是把它们编译为模块。所以,对每一个被认为是即插即用的设备,确信把它编译为内核支持的模块。 

好了,不用再为你的新的设备不能被Linux接受而烦恼了,去尽情享受Linux带给你的乐趣吧。 

 (本文已被浏览 1338 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:Linux操作系统中用安装盘来修复Grub
下篇文章:教你在Linux系统轻松切换X窗口管理器
 相关文章:
没有相关文章

相关搜索
查看百度中关于Linux操作系统下即插即用设备的安装的更多内容
查看google中关于Linux操作系统下即插即用设备的安装的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.