歡迎您光臨本站 註冊首頁

Linux下即插即用設備的安裝

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

   即插即用,在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帶給你的樂趣吧.
  
  
  


[火星人 ] Linux下即插即用設備的安裝已經有137次圍觀

http://coctec.com/docs/linux/show-post-55816.html