-------------------------------------------------------------------------------- 9.雜項 所有不適合放在別處的相關信息都堆在這裡。可能不相干,也可能大家不感興趣,但還是放在這兒了。 9.1向內核傳遞以太網參數 有兩個通用的內核命令可以在啟動時向內
--------------------------------------------------------------------------------
9. 雜項
所有不適合放在別處的相關信息都堆在這裡。可能不相干,也可能大家不感興趣,但還是放在這兒了。
9.1 向內核傳遞以太網參數
有兩個通用的內核命令可以在啟動時向內核傳遞以太網參數(ether 和reserve)。可以用LILO、loadlin或其它接受可選參數的啟動工具完成該操作。
例如,如果命令為“blah”,希望接收3個參數(假定為123、456和789),那麼在使用LILO時就應該如下:
LILO:
linux blah=123,456,789
要了解啟動時參數的更多信息(和完全的列表),請參見 BootPrompt-HOWTO
ether命令
ether=參數與直接構建在內核的驅動程序一起使用。ether=參數對一個模塊化的驅動程序完全不起作用。它的最通用形式如下:
ether=IRQ,BASE_ADDR,PARAM_1,PARAM_2,NAME
所有的參數都是可選的。第一個非數字的參數被用做NAME。
IRQ: 很明顯。為“0”的IRQ值(一般為缺省值)意味著autoIRQ。首先設置IRQ而不是base_addr是一個歷史性的巧合——無論在改變別的什麼時都可以順便改正這一點。
BASE_ADDR: 也很明顯。值為“0”(一般為缺省值)意味著探測以太網卡的網卡類型特定的地址列表。
PARAM_1: 這開始是用來覆蓋WD80*3這樣的共享內存網卡的起始內存的值。有些驅動程序使用該值的低4位來設置診斷信息級別。0——缺省值,1-7——級別1..7,(7是最完全的信息)8——級別0(沒有信息)。另外,LANCE驅動程序使用該值的低4位來選擇DMA通道。否則就使用auto-DMA。
PARAM_2: 3c503驅動程序使用它來選擇內部還是外部收發器。0——缺省/內部,1——外部AUI。Cabletron的E21XX網卡還使用PARAM_2的低4位來選擇輸出媒介。否則就自動檢測。
NAME: 選擇該值所指的
網絡設備。標准內核對附屬於總線的以太網卡使用名稱“eth0”、“eth1”、“eth2”和“eth3”,對並口“袖珍”以太網適配器使用“atp0”。arcnet驅動程序使用名稱“arc0”。可以使用這些LILO參數明確設置基址來啟用多塊網卡。1.0內核把基於LANCE的以太網卡作為特殊情況進行處理:LILO參數被忽略,LANCE網卡總是被分配為從“eth0”開始的名稱“eth
”。附加的非LANCE網卡必須被明確指定為“eth”,並用諸如“ether=0,-1,eth0”的方式禁止通常的“eth0”探測。(對,這是個Bug。)
reserve命令
這個緊接著的LILO命令用法與上面的“ether=”一樣,即附加在lilo.conf裡指定的啟動選擇名稱後面。
reserve=IO-base,extent{,IO-base,extent...}
在某些機器上,可能需要防止設備驅動程序在某個特定區域裡檢查設備(自動探測)。其原因可能是由於設計低劣的硬件使啟動凍結(如某些以太網卡)、被錯誤識別的硬件、在較早的探測中狀態被改變的硬件、或者僅僅是不想讓內核初始化硬件。
啟動時的參數reserve通過指定無需探測的I/O端口區域來解決這個問題。該區域保留在內核的端口注冊表裡,就象該區域裡已經發現了一個設備一樣。注意,這一機制在大多數機器上是不必要的。只有在有問題或特定的情況下才有必要使用它。
指定區域裡的I/O端口受到保護,不被設備探測影響。在某些驅動程序被NE2000掛起,或其它設備被錯誤地識別為NE2000時使用這一方法。正確的設備驅動程序不該探測一個保留區域,除非另一個啟動參數明確指定它這麼做。這隱含了reserve經常與其它啟動參數一起使用。因此,如果指定了一個reserve區域來保護某個特定設備,通常就必須明確指定對該設備的探測。大多數驅動程序在給定了明確地址後就忽略了端口注冊表。
例如,啟動行
LILO: linux reserve=0x300,32 ether=0,0x300,eth0
使以太網卡驅動程序以外的所有設備驅動程序都不探測0x300-0x31f。
一般啟動時的參數限制是11個,因此每個reserve關鍵詞只能指定5個保留區域。如果請求很復雜,可以使用多個reserve指令。
9.2 把以太網驅動程序作為模塊使用
現在大多數Linux發行版裡的內核都只包含很少幾個內建的驅動程序。驅動程序都采用獨立的動態可加載模塊的形式提供。這些模塊化驅動程序通常由管理員使用modprobe(8)命令載入,或者在某些情況下由內核通過“kerneld”(在2.0版)或“kmod”(在2.1版)自動載入,然後調用modprobe。
你所用的發行版可能會提供良好的圖形配置工具來設置以太網模塊。如果可能就先使用它們。下面描述了在這些花俏的配置程序下的信息,以及這些程序改變了哪些東西。
控制使用哪些模塊和每個模塊提供哪些選項的信息一般保存在文件/etc/conf.modules裡。在這個文件裡使用的兩個感興趣的主要選項(對以太網卡而言)是alias和options。modprobe命令查閱該文件以了解模塊信息。
實際的模塊本身一般保存在名為/lib/modules/`uname -r`/net的目錄下,其中uname -r命令給出內核的版本(如2.0.34)。你可以在這裡看看哪一個模塊與你的網卡匹配。
在你的conf.modules文件裡首先需要的是告訴modprobe對於eth0(和eth1以及......)網絡接口使用什麼驅動程序。為此要使用
--------------------------------------------------------------------------------
alias
--------------------------------------------------------------------------------
命令。例如,有一塊使用smc-ultra.o驅動程序模塊的ISA SMC EtherEZ網卡,需要增加如下一行把該驅動程序alias到eth0上:
alias eth0 smc-ultra
其次,可能需要一個options行來指出與某個特定模塊(或模塊別名)一起使用哪些選項。還采用上面那個例子,如果只有一行alias而沒有options行,內核會警告(參見dmesg)說自動探測ISA網卡不好。要消除這個警告,需要增加另一行來告訴模塊網卡被配置在哪個I/O基址上,比方說是16進制地址0x280。
options smc-ultra io=0x280
大多數ISA模塊在insmod命令行接受io=0x340和irq=12這樣的參數。提供這些參數以避免探測該網卡是必須的或至少是強烈建議的。與PCI和EISA設備不同,對大多數ISA設備而言沒有真正安全的自動探測方法,所以在把驅動程序作為模塊使用時應當避免自動探測。
每個模塊所接受的所有選項列表可以在以下文件中找到:
/usr/src/linux/Documentation/networking/net-modules.txt
推薦閱讀該文件以了解對你的特定網卡可以使用哪些選項。注意,對於單個模塊能夠處理多個設備的模塊,有些支持用逗號分開的值列表,如所有基於8390的驅動程序和PLIP驅動程序。例如:
--------------------------------------------------------------------------------
options 3c503 io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1
--------------------------------------------------------------------------------
上面就是一個模塊控制四塊3c503網卡,其中網卡2和4使用外部收發器。不要在“=”或逗號周圍使用空格。
還要注意,一個忙的模塊不能被刪除。這也就是說在刪除模塊前需要使用ifconfig eth0 down(關閉以太網卡)。
命令lsmod可以顯示哪些模塊被載入、它們是否正在被使用,而rmmod可以刪除這些模塊。
9.3 相關文檔
本文檔的很多信息來自comp.os.linux新聞組保存的帖子,這表明該新聞組是一個有價值的信息源。其它的有用信息來自Donald自己的一大堆小文件。當然,如果你正在設置一塊以太網卡,你還要讀一下NET-2 Howto才能真正配置好你要用的軟件。另外,如果你想做個黑客,你總能從驅動程序的源碼裡找到些有用的信息。在開始實際代碼之前,總有一到兩段描述關鍵點的文字。
對於那些尋找不是Linux特有信息(如什麼是10BaseT、什麼是AUI、Hub是干什麼的等等)的人,我強烈推薦使用新聞組comp.dcom.lans.ethernet或comp.sys.ibm.pc.hardware.networking。那些在dejanews.com上的新聞組檔案也是很有價值的信息源。你可以從以下URL的RTFM(保存所有新聞組的FAQ)獲取新聞組的FAQ:
Usenet FAQs
你還可以在以下URL看一下可以說是“Ethernet-HomePage”的主頁:
Ethernet-HomePage
9.4 聲明與版權
本文檔不是福音書。它可能是你所找到的最新的資料。除了你自己,沒人會對你的硬件出現的問題負責。如果你的以太網卡或其它的硬件冒煙的話(幾乎不可能!),我們也不承擔任何責任。也就是說,本文作者不對任何使用本文信息采取行動造成的損失負責。
Copyright (c) 1993-1999 本文的版權所有人為Paul Gortmaker。在保留版權信息和本許可內容的條件下,本文檔允許任意復制和傳播。
在保留原始版權信息的條件下,允許復制和傳播本文檔修改後的版本;在本許可內容不變的條件下,允許傳播所有依據本文檔推導出的結果。
在上述針對修改版本的條件下,允許復制和傳播本文檔的其它語言翻譯版本。
對翻譯者的提示。首先,翻譯SGML源文件(可以用FTP從HowTo主站點獲得),這樣可以生成其它的輸出格式。請注意保留一份翻譯的原始英文SGML源文件!在發布更新後的HowTo時,獲取該版本的新SGML源文件,簡單地使用diff -u old.sgml new.sgml就可以知道何處有變動,並把這些變動放入你的翻譯版本,無需重新閱讀或重新翻譯全部內容。
如果你想在公開出版物中使用本文檔,請聯系本文作者(通過e-mail),這樣可以獲得最新的資料。以前有些Linux HowTo的過時版本被公開出版,使得開發者為一些在更新版本中已經回答過的問題飽受折磨。
This document is not gospel. However, it is probably the most up to date info that you will be able to find. Nobody is responsible for what happens to your hardware but yourself. If your ethercard or any other hardware goes up in smoke (...nearly impossible!) we take no responsibility. ie. THE AUTHORS ARE NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION INCLUDED IN THIS DOCUMENT.
This document is Copyright (c) 1993-1999 by Paul Gortmaker. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that this copyright notice is included exactly as in the original, and that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions.
A hint to people considering doing a translation. First, translate the SGML source (available via FTP from the HowTo main site) so that you can then generate other output formats. Be sure to keep a copy of the original English SGML source that you translated from! When an updated HowTo is released, get the new SGML source for that version, and then a simple diff -u old.sgml new.sgml will show you exactly what has changed so that you can easily incorporate those changes into your translated SMGL source without having to re-read or re-translate everything.
If you are intending to incorporate this document into a published work, please make contact (via e-mail) so that you can be supplied with the most up to date information available. In the past, out of date versions of the Linux HowTo documents have been published, which caused the developers undue grief from being plagued with questions that were already answered in the up to date versions.
9.5 結束語
如果你在本文檔中發現有錯別字或過時信息,請給我發e-mail。本文檔比較大,所以很容易出現疏漏。如果你曾發e-mail要求改正,而在新版本中依然沒改過來,請把改正要求再發一遍,可能你的上一封e-mail被我平時收到的大量垃圾信件掩蓋了。
謝謝!
Paul Gortmaker, [email protected] (戈紹男,[email protected])
--------------------------------------------------------------------------------