在開始前, 您應該想想是否需要自己來編譯 PCMCIA 套件。 因為大部份的 Linux 供應商版本已含有已編譯過的 PCMCIA 驅動程式套件。一般上來說, 如果您需要最新的驅動程式或您更動的 Linux 供應商版本內的核心和您原 本的 PCMCIA 驅動程式無法相容時才會需要自己動手做。 雖然編譯 PCMCIA 套件在技術上並不難,但還是需要您對 Linux 已有一定的熟悉的。
下列的東西必須在您開始安裝PCMCIA程式之前先行安裝妥當:
目前的驅動程式套件事實上可在核心版本 1.2.8 開始的核心版本上正常工 作。而用舊一點的核心版本就背道而馳了些,最好不要這樣。
您還需要完整的 Linux 原始程式樹, 不是只有最新版的核心映像檔就可用 來編譯 PCMCIA 套件的。 PCMCIA 模組含有一些對核心原始程式檔案的參考 指令, 也許您會想做個不含那些不必要的驅動程式的核心, 但是安裝 PCMCIA 並不需要您這麼做。
目前穩定的的核心程式的原始檔及修補檔可以在
ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0
或
ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0
內找到。 發展中的核心程式可在 v2.1
目錄內找到,目前的模組公用
程式也可在同樣的地方找到。
在核心 2.0 及 2.1 版所用的 Linux 原始程式樹內的 Documentation/Changes
檔案中描述了核心程式所需要的各種類別的系統元件。您可檢視它並核對您
的系統是否為最新版本,尤其當您已更新了核心程式。 如果您使用 2.1 版
核心,請確認您用了正確的程式庫和模組工具的組合。
當您建構核心時,如果您計畫要用 PCMCIA 網路卡,您應該打開網路支援並 關上正常的 Linux 網路卡驅動程式, 這包括口袋型可攜式型介面卡。 PCMCIA 網路卡驅動程式都設計成可載入式模組, 所以將驅動程式編譯到核 心程式內只會浪費空間而已。
如果您要使用 SLIP、PPP 或 PLIP,可在建立核心時將這些功能打開,或者 使用這些功能的可載入模組版本。 但是在核心 1.2.X 版本下建構作業時有 小缺撼,就是不能為載入式模組設定建構選項 (例如 SLIP 壓縮 ),所以如 果您需要這個功能,只好將 SLIP 連結到核心程心裏了。
為了要使用 PCMCIA 拓樸鏈網路卡, 您的核心程式應該將 ``Token Ring
driver support'' (CONFIG_TR
) 這項目開啟,並將 CONFIG_IBMTR
這項關閉。
如果您要使用 PCMCIA IDE 卡,針對核心 1.3.72 至 2.1.7 版, 核心建構
時應該要將 CONFIG_BLK_DEV_IDE_PCMCIA
功能打開,舊版的核心並不
支援可移式 IDE 設備,而較新的核心就不需這麼特別設定了。
如果您要使用 PCMCIA SCSI 卡, 在建構核心時應將 CONFIG_SCSI
功
能打開。 並且,將您要使用的 SCSI 設備項目之驅動程式打開 (SCSI 磁碟
機、磁帶機、唯讀光碟機等等 )。所有給特定介面卡的低層次驅動程式應該
要關掉,因為它們只會佔用空間而已。
如果您想把給 PCMCIA 設備使用的驅動程式模組化,請修改 /etc/pcmcia/config
來指定哪些模組在哪種卡片使用下需被載入。例如,如果串列埠驅動程式被
模組化了,那麼串列埠設備的定義應該如下:
device "serial_cs"
class "serial" module "misc/serial", "serial_cs"
在套件裏還有個 X 環境使用的卡片狀態公用程式 cardinfo
。 此程式
是奠定在一個免費供應的使用者介面工具套件 XForms 程式庫。通常被附在
大部份的 Linux 供應商的產品內。 如果您想建造 cardinfo
,您得在
建構 PCMCIA 套件前安裝好 XForms 和所有的一般 X 程式頭檔及程式庫。
以下是安裝過程的簡要步驟:
pcmcia-cs-3.0.?
目錄內執行 ``make config
''make all
'',再執行 ``make install
''。/etc/pcmcia
內自訂 PCMCIA 啟動手稿和選擇檔案
。如果您想安裝其他非主要 PCMCIA 分享套件程式所包含的客戶端驅動程式, 將它們解開到 PCMCIA 原始程式樹的頂層,再依正常的建造指令,即可將這 增加的驅動程式編譯及安裝起來。
執行 ``make config
'' 會列出一些建構選項,請檢查您的系統並比對
這些選項是否符合安裝 PCMCIA 支援的條件。請小心檢查此命令的輸出訊息
,尤其哪邊有問題時。
如果您想編譯個 PCMCIA 套件給其他機器使用,在建構手稿執行到出現指定
目標目錄時請指定個替代的目錄,它應該是個絕對路徑,所有的 PCMCIA 工
具將被安裝在這目錄的相對位置裏。然後,您就可以 tar
這個目錄起
來,再把它拷貝到其他機器上,解壓縮到相對目錄上後再安裝它們到適當的
地方。
如果您想編譯個 PCMCIA 套件給其他機器使用,在建構手稿執行到要求您指
定目標目錄時請指定個替代的目錄, 它應該是個絕對路徑,所有的 PCMCIA
工具將被安裝在這目錄的相對位置裏。然後,您就可以 tar
這個目錄
起來,再把它拷貝到其他機器上,解壓縮到相對目錄上後再安裝它們到適當
的地方。
如果您在其他電腦上做交叉編譯,您可以指定替代檔名給編譯器及連結器。 這對混合著 a.out 及 ELF 系統時很有助益。此手稿會要求輸入做為除錯時 使用的編譯旗標。
某些支援公用程式 (cardctl
和 cardinfo
) 可以在安全或可信
的形式下編譯。在安全形式下可以防止非 root 的使用者更改卡片的建構。
可信的形式下允許一般使用者執行暫停、繼續、重置卡片的命令及改變目前
的建構。建構手稿會問你要將公用程式編譯成安全或可信的形式,內定為安
全形式。
有些核心程式建構選項會影響到 PCMCIA 的工具。建構手稿(一般狀況下) 會在執行核心程式時推斷出這些影響。另外,如果您是編譯來安裝到其他機 器上的,它能從核心原始程式樹裏讀到這些建構,或是互動地設定每個選項 。
執行 ``make all
'' 後,接著 ``make install
'' 將建立並安裝
核心程式模組及公用程式。 核心模組會被安裝在 /lib/modules/<
版本 >/pcmcia
內。 cardmgr
和 cardctl
兩程式被安
裝在 /sbin
目錄內。 如果 cardinfo
有被建立的話,它會
被安裝在 /usr/bin/X11
裏。
建構檔會被安裝在 /etc/pcmcia
目錄內。如果您安裝在一個舊版
本之上,您的舊版建構手稿會被備份起來不會被蓋掉,被保存下來的檔案名
稱會被加個 *.~1~
、*.~2~
之類的檔名。
如果您不知道您的 PCMCIA 控制晶片是什麼廠牌的, 您可以使用
cardmgr/
目錄下的 probe
公用程式來探測它。目前最主要
的晶片有:Databook TCIC-2 晶片及 Intel i82365SL 相容晶片。
在少數情況下,probe
命令將無法自動地判斷您的控制器之類別。 如
果您有個 Halikan NBD 486 系統, 它有個放在不同地方的 TCIC-2 控制器
: 此時您就需要修改 rc.pcmcia
來載入 tcic
模組, 並且將
PCIC_OPTS
參數設定成 ``tcic_base=0x02c0
''。
有些使用 Cirrus 控制器的系統, 包括 NEC Versa M 系統的 BIOS 會在系
統啟動時將控制器置於一個特別的懸置狀態下。在這類系統上,probe
命令並無法找到任何已知的 PCMCIA 控制器。 如果發生這種事, 請修改
rc.pcmcia
將 PCIC
設為 i82365
, PCIC_OPTS
為
``wakeup=1
''。
有些 Linux 供應商,包括 Slackware,使用 BSD 的安排方式做為系統啟動
手稿的方排。 如果有 /etc/rc.d/rc.M
這個檔的系統就屬這類型
的。安裝在 /etc/rc.d
內的 rc.pcmcia
手稿會控制啟動和
關閉 PCMCIA 系統。 在 ``make install
'' 時會用 probe
命令
來決定您的控制器種類並適當修改 rc.pcmcia
的內容。您可在系統啟
動檔 /etc/rc.d/rc.M
內加上一行如下面的指令來執行 PCMCIA
啟動手稿。
/etc/rc.d/rc.pcmcia start
將這行插排在哪行前面都可以,只要 PCMCIA 驅動程式在 syslogd
後
啟動即可。
Red Hat、
Caldera 及 Debian 等供應商的 Linux 使用 System V 型的安排系統啟動
檔案。 如果有個 /etc/init.d
或 /etc/rc.d/init.d
目錄的系統就是這類型。 rc.pcmcia
手稿會被安裝到
/etc/rc.d/init.d/pcmcia
或是 /etc/init.d/pcmcia
下。它會自動啟動 PCMCIA 功能,不必去修改任何的啟動手稿了。
如果 /etc/sysconfig
目錄在系統內, 那麼有另一個建構檔
/etc/sysconfig/pcmcia
會被建立起來做為啟動選項。 如果您需
要更改任何的模組選項 (如 PCIC=
或 PCIC_OPTS=
設定 ), 只
需編輯這個建構檔而不必修改真正的 PCMCIA 啟動手稿。此檔案也不會被往
後的安裝而覆蓋掉。
有些以前的版本使用 /etc/sysconfig/pcmcia-scripts
目錄而不
是現在的 /etc/pcmcia
目錄。現在所有的系統的版本都已或將改
用 /etc/pcmcia
目錄了,。
有些 PCMCIA 控制器擁有其他的功能可能會也可能不會被特別的系統所採用 。而插槽驅動程式也沒有辦法偵測到是否這些功能被採用與否。請檢查您的 插槽驅動程式的 man 說明頁看看您的控制器有哪些其他的功能。
低階的插槽驅動程式 tcic
及 i82365
有許多匯流排分時參數特
別是在採用高速處理器的系統上時需做些修改。分時發生問題的症狀像卡片
辨認問題、在重負載下的閉鎖、錯誤比率高,或是造成設備性能變差。詳情
請參閱相關的 man 頁會有更多的細節,在此簡述如下:
cmd_time
旗標, 它用來決定 PCMCIA 匯流排週期的長度。 速度快的 486 系統(如
DX4-100 )下將它從 6 (內定值 ) 加大成為 12 或 16 時可看到它效果。fast_pci
旗標,如果 PCI 匯流排的速
度比 25 MHz 快時應該設定它。async_clock
旗標必須更改為與 PCMCIA 匯流排和主匯流排相對的週期速度。更改這個旗
標會使某些操作上增加等待的時間。然而,我好像還沒聽說有哪個筆記型電
腦需要這麼做的。pcmcia_core
模組有個 cis_speed
參數, 它是用來更改取存卡
片的卡片資訊結構 Card Information Structure (CIS) 之記憶體速度。有
些速度快的匯流排時序的系統上,增加這個參數(例如,減慢卡片的存取)
可以解決卡片辨識的問題。i82365
模組應
該和參數設為 1 的 extra_sockets
一起被載入, 但對於
PCI-to-PCMCIA 或 PCI-to-CardBus 橋接器者就不必這麼做。所有的這些選項應修改 /etc/rc.d/rc.pcmcia
來建構,例如:
# Should be either i82365 or tcic
PCIC=i82365
# Put socket driver timing parameters here
PCIC_OPTS="cmd_time=12"
# Put pcmcia_core options here
CORE_OPTS="cis_speed=500"
這裏有一些特殊系統的分時設定:
freq_bypass=1 cmd_time=8
''。cmd_time=12
''
。cmd_time=16
''。
卡片服務系統應該自動地去避免分配到已被其他標準設備使用了的 IO
埠和插斷。它也會試著偵測本身與不知名設備間的衝突,只不過還不是很完
全可靠。 如果遇到這種情形, 您需要將
/etc/pcmcia/config.opts
內的資源給排除掉。
以下是某些特定的筆記型電腦之資源設定: