Next Previous Contents

4. 使用方法以及特色

4.1 用來建構以及監控 PCMCIA 設備的工具

如果所有的模組都被正確地載入了,在沒有卡片被插入的狀態下, lsmod 命令的輸出會看起來像以列的樣子。

Module                  Size  Used by
ds                      5640   2 
i82365                 15452   2 
pcmcia_core            30012   3  [ds i82365]

系統日誌也應該包含插槽驅動程式對於哪些主控制器被發現了、有幾個插槽 被偵測到了的輸出。

cardmgr建構精靈

cardmgr 精靈負責監控 PCMCIA 插槽,有需要時載入 其他的驅動程式,並且執行使用者階層的手稿來反應卡片的插入與移出。它 會把它的動作記錄在系統日誌內並用嗶聲來回應卡片狀態的改變。嗶聲的音 調表示建構步驟是成功還是失敗。兩個高音聲響表示步片已被成功地辨視與 建構了。一高音一低音聲響表示卡片被辨視,但因某些原因無法被建構。一 低音嗶聲表示卡片無法被辨視。

Cardmgr 會把每一個插槽的設備資訊記錄在 /var/run/stab �堙C以下是 /var/run/stab 的列表例子:

Socket 0: Adaptec APA-1460 SlimSCSI
0       scsi    aha152x_cs      0       sda     8       0
0       scsi    aha152x_cs      1       scd0    11      0
Socket 1: Serial or Modem Card
1       serial  serial_cs       0       ttyS1   5       65

在這幾行所描述的設備中,第一個欄位表示插槽、第二為設備類別、第三為 驅動程式名稱、第四被用來指定在同一驅動程式下使用的每個設備取號碼、 第五個是設備名稱、最後兩個欄位是這個設備的主要及次要號碼。(如果可 找到的話)

cardmgr 精靈依據被存在 /etc/pcmcia/config 內的已知之 卡片資料庫來建構這些卡片。這個檔案描述了許多個別的驅動程式,以及如 何辨視許多的卡片,還有哪個驅動程式屬於哪個卡片的。這個檔案的格式在 pcmcia(5) 的 man 頁�埵雩埴茠爾禤ヾC

cardctl 及 cardinfo 公用程式

cardctl 命令可以用來檢查插槽的狀態, 或看它們是如何被建構的。 它也可以被用來警示一個卡片的建構狀態。 這兒有個 ``cardctl config'' 命令的輸出例子:

Socket 0:
Socket 1:
  Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0
  Card type is memory and I/O
  IRQ 3 is dynamic shared, level mode, enabled
  Speaker output is enabled
  Function 0:
    Config register base = 0x0800
      Option = 0x63, status = 0x08
    I/O window 1: 0x0280 to 0x02bf, auto sized
    I/O window 2: 0x02f8 to 0x02ff, 8 bit

``cardctl suspend'' 和 ``cardctl resume'' 兩個命令可以用 來在不需卸下它的相關驅動程式的狀況下關閉卡片。``cardctl reset'' 命令會重新設定及建構卡片。 ``cardctl insert'' 和 ``cardctl eject'' 摸擬當一個實體的卡片插入或抽出時所做的動作 ,這包含載入或卸下驅動程式以及建構或關閉設備。

如果您正執行 X, cardinfo 公用程式會產生一個圖 示來顯示所有的 PCMCIA 插槽的現況, 內容和執行 ``cardctl config'' 類似。它還提供其他 cardctl 功能的圖形化功能。

插入與抽出卡片

在理論上,你可以在任何時間插入或移出 PCMCIA 卡片。然而,把正在被其 他程式使用中的卡片移出來並不是個好主意。在核心 1.1.77 版以前的系統 常會在串列/數據機卡片被移出時造成當機,但現在已有修正方法了。

卡片服務程式與進階能源管理

卡片服務程式可以編譯成支援 APM ( 進階能源管理) , 如果你已安裝了這個套件到你的系統內的話。 APM 在核心 1.3.46 (含)以後就被整合了。 現在這套件被 Rick Faith (faith@cs.unc.edu) 所維護, APM 工具可以由 ftp://ftp.cs.unc.edu/pub/users/faith/linux 拿到。如果你的系 統被偵測出有個相容的版本在的話, PCMCIA 模組會被自動地建構成支援 APMM 功能。

如果沒有藉著 APM, 你可以在懸置你的筆記電腦前執行 ``cardctl suspend'',以及在回覆後執行 ``cardctl resume'',才能適當地關 上或重啟你的 PCMCIA 卡。 這對正在使用中的數據機並不適用, 田因序 列驅動程式並無法儲存與回應數據機的運作參數。

APM 在有些系統上似乎有點不太穩定。 如果你遇到 APM 和 PCMCIA 共用時 有任何問題,請您在提出程式小虫報告前先試著把問題簡化。

有些驅動程式, 比如說 PCMCIA SCSI 驅動程式,無法從懸置/重新動作週 期下回覆過來。 在使用 PCMCIA SCSI 卡時, 在懸置系統前先執行 ``cardctl eject''。

關閉 PCMCIA 系統

要卸下整個的 PCMCIA 套件, invoke rc.pcmcia with:

/etc/rc.d/rc.pcmcia stop

這個手稿會花幾秒鐘來執行,給全部的客戶自訂驅動程式來完美地關閉 。如果有個 PCMCIA 設備正被使用中,這樣關可能不會很完整地關閉,有些 核心模組可能不會被卸下。 要防止發生這種狀況, 請在執行 rc.pcmcia 之前使用 ``cardctl eject'' 來關閉所有的插槽。 cardctl 命令的離開狀態會顯示如果有任何的插槽不能被關閉的。

4.2 PCMCIA建構手稿的概要

每一個 PCMCIA 設備都會有個相對應的 `` 類別 '' 來描述它應該如何被建 構與管理的。這些類別與設備驅動程式都被組織在 /etc/pcmcia/config 內。目前共有五種輸出輸入設備的類別 (網 路、 SCSI、 cdrom、硬碟以及串列 ) 以及二種記憶體設備類別 (記憶體與 FTL)。在每一個類別中,都有二個手稿放在 /etc/pcmcia/config 內:一個主要建構手稿 (例如, /etc/pcmcia/scsi 是 SCSI 設 備的 ),以及一個選項手稿 (例如, /etc/pcmcia/scsi.opts)。 主手稿在卡片被插入時會被啟用來建構該設備,當卡片被抽出時關掉該設備 。對於支援多種設備的卡片,針對各別不同的設備的手稿都會被啟用。

這 config 手稿會從 /var/run/stab �婺悒X一些有關於設備上的 資料開始。 每一個手稿會構築一個 `` 設備位址 '',它是獨一無二的位址 用來描述該設備在 ADDRESS shell 變數內被要求被建構的方式。它會 被傳遞到 *.opts 手稿上, 該手稿再回應有關於在這位址上的設備應 該要怎樣地建構才可以的資訊。 有些設備, 它的設備位址就是插槽號碼。 還有其他的設備,它會包含另外的有用資訊可以用來決定如何來建構該設備 。例如,網路設備會傳遞他們的硬碟乙太網路位址做為設備位址的一部份, 來讓 network.opts 手稿能夠使用這項資訊來從許多不同的建構中做 正確的選擇。

所有的設備位址的首要部份是目前的 PCMCIA ``scheme''。這個參數是被用 在只有一個外部使用者指定變數時用來對設備建構之多種設定的。對於它的 應用, 例如我們可以有個 ``home'' scheme 以及一個 ``work'' scheme, 它們包括了不同的網路建構參數的組合。 目前的 scheme 可以使用 ``cardctl scheme'' 命令來做選擇。如果沒有 scheme 被指定的話就 以內定值來設定。

一般原則上,當要建構 Linux 在筆記型電腦上時,PCMCIA 的設備只能被經 由 PCMCIA 設備手稿來建構。 請不以試著以建構固定設備的方式來建構 PCMCIA 設備。然而,有些 Linux 供應版商提供已接在他們自已的設備建構 工具上的 PCMCIA 套件。在這種情況下,以下的幾個主題可能無法使用,而 供應版商應該會有他們自己的這類文件。

4.3 PCMCIA 網路卡

Linux 的乙太型網路卡介面通常被稱做 eth0、eth1 等等。環形 卡亦同樣地被看待。 然而它們被稱做 tr0、 tr1 等等。 ifconfig 命令是被用來觀看及修改網路介面狀態的。Linux 的另一特 點是網路介面並不會像其他設備一樣地被看成是一個在 /dev �� 頭的檔案。所以如果您在 /dev 內找不到它們時請不要覺得驚訝。

當一個 PCMCIA 乙太網路卡被偵測到時,它會被指定為第一個可用的介面卡 名字, 通常為 eth0。 Cardmgr 命令會執行 /etc/pcmcia/network 手稿來建構它的介面。

請勿將您的 PCMCIA 乙太網路卡建構在 /etc/rc.d/rc.inet1 內 ,因為當這個手稿被執行時也許卡片並不在插槽�堙C 在 rc.inet1 內 除了回歸的項目之外, 其它的命令列請將他們註解掉。 而另外修改 /etc/pcmcia/network.opts 來配合您的本地網路設定。 network 和 network.opts 手稿只有在您的乙太網路卡存在時才 會被執行。 如果您的系統有自動網路建構程式, 它也許是也許不是 PCMCIA-aware。 請從您的 Linux 供應版本的文件中查看看是否 PCMCIA 網 路設備是否需要使用自動化工具來建構或只需編輯 network.opts 即 可。

傳到 network.opts 的設備位址中包含了四個以逗號來分開的欄位: scheme、插槽號碼、設備提議及卡片硬體的乙太網路位址。設備提議是用來 給有許多網路介面的卡片取號碼之用,通常為 0。如果您有許多不同使用目 地的卡片時,另一按照插槽位置而建構的選項應該被設定,如同在:

case "$ADDRESS" in
*,0,*,*)
    # definitions for network card in socket 0
    ;;
*,1,*,*)
    # definitions for network card in socket 1
    ;;
esac

或是,它們可能被以自己的硬體位址被建構,如下:

case "$ADDRESS" in
*,*,*,00:80:C8:76:00:B1)
    # definitions for a D-Link card
    ;;
*,*,*,08:00:5A:44:80:01)
    # definitions for an IBM card
esac

網路設備參數

以下的參數可在 network.opts內被使用:

IF_PORT

指定乙太網路收發器類型, 這是針對那些無法自動偵測的卡使用。 請看 ``man ifport'' 內有收發器名稱。

BOOTP

布林 (y/n) 設定: 表示是否主機的 IP 位址和分路資訊是否可以經由 BOOTP 協定來獲取。

IPADDR

指定IP位址。

NETMASK, BROADCAST, NETWORK

基本網路參數: 請參閱 networking HOWTO

GATEWAY

給主機的子網路使用的通訊閘 IP 位址。只要是在這個子網路以外的封包都 會被轉到這個閘道。

DOMAIN

給主機的網路 domain name,被用來建立 /etc/resolv.conf。

DNS_1, DNS_2, DNS_3

主機名稱或是 IP 位址給這個介面的 nameservers, 被加到 /etc/resolv.conf內。

MOUNTS

A 給這個介面使用來做 NFS 掛入點的列表。

IPX_FRAME, IPX_NETNUM

對 IPX 網路: frame type 及網路號碼將被傳輸到 ipx_interface 命令上。

例如:

case "$ADDRESS" in
*,*,*,*)
    IF_PORT="10base2"
    BOOTP="n"
    IPADDR="10.0.0.1"
    NETMASK="255.255.255.0"
    NETWORK="10.0.0.0"
    BROADCAST="10.0.0.255"
    GATEWAY="10.0.0.1"
    DOMAIN="domain.org"
    DNS_1="dns1.domain.org"
    ;;
esac

若想自動掛上或卸下網路檔案系統,首先將檔案系統加到 /etc/fstab 內,在掛上選項上加上 noauto。 在 network.opts 內 使用 MOUNTS 變數列明檔案系統的掛入點。 這特別是在使用 cardctl 或 cardinfo 命令來關閉當網路檔案系統是用這個方法 建構而掛上的網路卡時。如果在沒預警下網路卡被移出時,是無法完全地卸 下網路檔案系統的。

除了一般的網路建構參數之外,network.opts 手稿可用來在介面已經 被建構起後或被關閉後做另外的動作時使用。 如果 network.opts 定 義了一個叫 start_fn 的命令層功能呼叫, 當介面被建構後它會被網 路手稿所啟用,而介面名稱將會被傳送到這個功能函數做為第一個參數(也 只有這個)。相同地,如果 stop_fn 被定義了,那麼它會在關閉一個 介面前被啟用。

收發器類型可以用 IF_PORT 來設定。它可以是 PCMCIA 之前版本的數 值表示或是識別收發器的關鍵字。所有的網路驅動程式儘可能將它設定為自 動偵測(如果可能的話)介面或是 10baseT 的。 ifport 命令可用來 檢查或設定目前的收發器類型,例如:

# ifport eth0 10base2
# 
# ifport eth0
eth0    2 (10base2)

目前的 3c589 驅動程式版本會自動偵測網路的連結, 但還無法完全發揮它 的功能。若想以自動偵測來工作,在網路卡被建構前網路線應該是已連接著 網路卡上的。要不然,等網路接好後,您可以下列命令迫使驅動程式檢查連 結:

ifconfig eth0 down up

特定卡片的評語

診斷網路卡的問題

4.4 PCMCIA 串列與數據機設備

Linux 的串列設備都是被經由 /dev/cua* 和 /dev/ttyS* 特殊設備檔案來做取用。 ttyS* 的設備被使用在進來的連接,例如直 接地連接終端機。cua* 的設備被使用在往外的連接,比如說數據機。 而每一個實體串列埠都各有 ttyS 和 cua 兩個設備檔: 要使用 哪個適當的設備到你的應用上都由您來決定。

對於串列設備的建構,您可使用 setserial 命令來檢查與修改。

當一個 PCMCIA 串列卡或數據卡被偵測到時,它會被指定成為第一個可用的 串列設備。通常是 /dev/ttyS1 (cua1) 或 /dev/ttyS2 (cua2) ,這完成看原已內建的串列埠數目。 ttyS* 設備會被 報告在 /var/run/stab 內。 原內定的串列設備選項手稿 /etc/pcmcia/serial.opts 會將之連結到相對應的 cua* 設 備檔案成為 /dev/modem。這樣就很便利了。

請勿使用 /etc/rc.d/rc.serial 來建構 PCMCIA 數據機。這個手 稿應該只能被用來建構那些非可移動的設備。如果你想要設定你的數據機來 做任何特別的動作時,請修改 /etc/pcmcia/serial.opts 這個手 稿。 另外, 也請勿使用 setserial 來改變 PCMCIA 串列設備的設備 IO 埠和插斷設定。 這樣做只會告訴串列驅動程式到不對的地方尋找串列設 備,但不會改變卡片硬體方面真正被建構的事實。串列建構手稿允許您指定 其他的 setserial 選項, 以及是否您該在 /etc/inittab 內為這個埠加一行設定。

快傳送到 serial.opts 的設備位址共有三個由逗點所分開的欄位:第 一是 scheme、 第二是插槽號碼以及第是 device instance。 The device instance 會為支援多串列埠的卡選用多個數據,但對於單一埠卡來說, 它 永遠都是零。 如果你常使用不只一個的 PCMCIAl 數據機,你可能需要針對 各別插槽內的數據機做不同的設定。如下:

case "$ADDRESS" in
*,0,*)
    # Options for modem in socket 0
    LINK=/dev/modem0
    ;;
*,1,*)
    # Options for modem in socket 1
    LINK=/dev/modem1
    ;;
esac

如果 PCMCIA 數據卡在 Linux 啟動時即被建構好了, 那它可能已被錯誤地 被辨識成為一般的內建串列埠了。這雖然無害處,但是,當 PCMCIA 驅動程 式接手來控制數據機時, 它會被指派成不一樣的設備插孔。 最好是 parse /var/run/stab 或使用 /dev/modem, 而不是期望 PCMCIA 數據機總是被指派成相同的設備。

如果你建構你的核心來載入基本的 Linux 串列埠驅動程式成為一個模組, 你必須編修 /etc/pcmcia/config 來指出該模組必須被載入。 編 修串列設備那列如下:

device "serial_cs"
  class "serial" module "misc/serial", "serial_cs"

串列裝置參數

以下的參數可以茬 serial.opts內被定義:

LINK

為符號連結 (symbolic link)指定個要被建立的路徑 ``dialout'' 或是 /dev/cua* 設備。

SERIAL_OPTS

指定有哪些選項將被傳送到 setserial 命令。

INITTAB

如果有指定的話,它將被用來在 inittab 中為該設備建立一個條目。

例如:

case "$ADDRESS" in
*,*,*,*)
    LINK="/dev/modem"
    SERIAL_OPTS=""
    INITTAB="/sbin/getty"

診斷串列設備的問題

4.5 PCMCIA SCSI卡

目前所有被支援的 PCMCIA SCSI 卡都工作的像下列的 ISA 匯流排卡的樣子 : Qlogic、Adaptec AHA-152X 或是 Future Domain TMC-16x0。PCMCIA 驅 動程式被建立成與 PCMCIA 特別程式碼相連結 (如 qlogic_cs.c、 toaster_cs.c 或 fdomain_cs.c) 以及正常的 Linux SCSI 驅動 程式。

當一個新的 SCSI 主卡被偵測到時, SCSI 驅動程式會尋找連接著的設備。 請檢查系統日誌你的設備被正確地偵測到了。新的 SCSI 設備會被指定為第 一個可用的 SCSI 設備檔。第一個 SCSI 硬碟是 /dev/sda,第一 個 SCSI 磁帶機是 /dev/st0, 還有, 第一個 CD-ROM 會是 /dev/scd0。

在 1.3.X (含 ) 以後的核心�堙APCMCIA 核心驅動程式可以從系統核心中找 出有哪些 SCSI 設備有連接在介面卡上。它們會被列表在 /var/run/stab , 而 SCSI 構建手稿 /etc/pcmcia/scsi 也會被每一個連接著的 設備所呼叫來建構或關閉該設備。內定的手稿並不會做任何建構 SCSI 設備 的動作,但它會妥當地在介面卡被移走時卸下在 SCSI 設備上檔案系統。

在 1.2.X 核心�堙APCMCIA 驅動程式無法自動地推測哪個設備被安裝在哪個 特定的 SCSI 介面卡上。然而,如果你有一個正常的 SCSI 設備之建構,你 可以將這些設備列明在 /etc/pcmcia/scsi.opts 中。例如,如果 你正常都有個 SCSI 磁碟以及一個 CD-ROM,你可以使用以下:

# For 1.2 kernels: list of attached devices
SCSI_DEVICES="sda scd0"

被傳到 <scsi.opts 的設備位址有點複雜, 那是因為有許多種類的東 西可以被連接到 SCSI 介面卡上。這些位址包含了不是 6 個就是 7 個以逗 號來分開的欄位資料: 現在的架構、設備種類、插槽號碼、SCSI 頻道、識 別號、邏輯單位號碼,以及選擇性的分割號碼。設備種備為 ``sd'' 指磁碟 、``st'' 指磁帶、``sr'' 指 CD-ROM 設備, 還有 ``sg'' 指一般的 SCSI 設備。 大部份的設定中,SCSI 頻道還有邏輯單位號碼都設為 0。對於有許 多磁碟分割區的磁碟設備,scsi.opts 會先被以 5 個欄位的位址所呼 叫。 這手稿應該要設一個 PARTS 變數來列明這些分割。 然後, scsi.opts 會被每一個磁區以較長的 7 欄位位址所呼叫使用。

如果你的核心沒有針對特定的 SCSI 設備給上層驅動程式 (磁碟、磁帶等 ) ,那麼這些設備就不會被  PCMCIA 驅動程式所建構。但有個邊際效應是, 該設備的名字在 /var/run/stab 內會變為像 ``sd#nnnn'' 的名字。這 ``nnnn'' 是個 4 個數字的十六進位號碼。只要 cardmgr 無法轉譯一個 SCSI 設備的識別號碼到相對應的 Linux 設備名字時都會發 生這種事。

要將上層的 SCSI 驅動程式模組化成只有當 PCMCIA SCSI 卡被偵測到時它 們才會被載入是有可能的。要這麼做,你需要編修 /etc/pcmcia/config 來告訴 cardmgr 有哪個另外的模組在介面卡被建構時也要將它載入。 例如:

device "aha152x_cs"
  class "scsi" module "scsi/scsi_mod", "scsi/sd_mod", "aha152x_cs"

會在載入一般的 PCMCIA 驅動程式模組前將主要的 SCSI 模組和上層的磁碟 驅動程式模組給載入。PCMCIA 建構手稿不會自動地偵測被模組化了的 SCSI 模組,所以你必需手動建構選項來將 SCSI 支援的功能打開。

每次在開機您的筆記型電腦前先將 SCSI 設備開機,或是在插入控制卡前, 這樣子 SCSI 匯流排會在控制卡被建構後正確地被終止。另外還要注意抽出 SCSI 控制卡。 記得要確認在抽出控制卡前被連接著的 SCSI 設備都被正確 地卸下與關閉了。 最好的確認方法是在實體抽出卡片前使用 cardctl 或 cardinfo 來要求卡片的移出動作。 就這樣,所有的 SCSI 設備必 須在插上 SCSI 控制卡前已開啟了電源,而在你抽出控制卡和/或關機筆記 電腦前都須要保持著它們是連接著的。

使用一般的 ISA 匯流排介面卡時可能會有潛在的複雜性, 尤其是無法啟動 。 SCSI 匯流排搭載一個為了適當地使用被動式 SCSI 終端器所必須的 `` 終端電源 '' 信號。PCMCIA SCSI 卡並不供應終端電源,所以如果需要該電 源的話,就必須由外接的設備來供應它。有些外接的 SCSI 設備可以被建構 成供應這個終端電源。其他的,如 Zip 磁碟以及 Syquest EZ-Drive,它們 使用主動式終端電阻就不需要如此了。有時候,可能需要使用一個特別的終 端電阻器如 APS SCSI Sentry 2,它有個外接的電源供應。 當您建構 SCSI 設備串接時,請注意是否其中有任何的設備需要或可以提供終端電阻電源的 。

Adaptec APA-460 SlimSCSI 卡並不被支援。這張卡原本是以 Trantor 的名 稱被販賣的, 當 Adaptec 併購了 Trantor 後,他們仍繼續以 Adaptec 的 商標來賣 Trantor 的卡,反正,APA-460 不被現有的任何一 Linux 驅動程 式所相容。

我不確定要寫個驅動程式會有多難, 我不認為有任何人可以從 Adaptec 那 兒拿到技術資訊。

(未被支援的 ) Trantor SlimSCSI 可用以下方法被識別:

Trantor / Adaptec APA-460 SlimSCSI
FCC ID: IE8T460
Shipped with SCSIworks! driver software

(未被支援的) Adaptec SlimSCSI 可用以下方法被識別:

Adaptec APA-1460 SlimSCSI
FCC ID: FGT1460
P/N: 900100
Shipped with EZ-SCSI driver software

SCSI 設備的參數

以下的參數可以被定義在 scsi.opts內:

DO_FSTAB

布林 (y/n) 設定:指定是否這個設備應該在 /etc/fstab 內加個 條目。

DO_FSCK

布林 (y/n) 設定:指定是否檔案系統應該在被掛上前以 ``fsck -Ta'' 來檢查一下。

DO_MOUNT

布林 (y/n) 設定: 指定是否這個設備應該在卡片被插入的同時被自動地被 掛上。

FSTYPE, OPTS, MOUNTPT

檔案系統型態、 掛上選項、以及被用來做為 fstab 的項目及/或掛上該設 備的掛上點。

例如,以下是一個建構一個 SCSI ID 為 3、有 2 個分割區的磁碟設備還有 一個 SCSI ID 為 6 的 CD-ROM 之手稿:

case "$ADDRESS" in
*,sd,*,0,3,0)
    # This device has two partitions...
    PARTS="1 2"
    ;;
*,sd,*,0,3,0,1)
    # Options for partition 1:
    #  update /etc/fstab, and mount an ext2 fs on /usr1
    DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="ext2"
    OPTS=""
    MOUNTPT="/usr1"
    ;;
*,sd,*,0,3,0,2)
    # Options for partition 2:
    #  update /etc/fstab, and mount an MS-DOS fs on /usr2
    DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="msdos"
    OPTS=""
    MOUNTPT="/usr2"
    ;;
*,sr,*,0,6,0)
    # Options for CD-ROM at SCSI ID 6
    PARTS=""
    DO_FSTAB="y" ; DO_FSCK="n" ; DO_MOUNT="y"
    FSTYPE="iso9660"
    OPTS="ro"
    MOUNTPT="/cdrom"
    ;;
esac

診斷SCSI卡的問題

4.6 PCMCIA 記憶卡

1tt/memory_cs/ 驅動程式負責所有型態的設憶卡, 並且還提供對於那些有 其他功能的卡的 PCMCIA 記憶體位址空間直接存取功能。當被載入時,它建 立了一個字元與區塊設備的組合體。 請看這模組的 man 頁中有個完整的設 備取名規則的描述。區塊設備被用來做磁碟類型的存取 (建立和掛上檔案系 統等等 )。而字元設備被用來做 " 未加工 " 的未被緩衝之隨意位置上讀與 寫。

被傳送到 memory.opts 的設備位址包含了 2 個欄位: 架構和插槽號 碼。這個選項被放在相對應的記憶卡內的第一個共同記憶分割區中。

有些舊型的記憶卡, 還有大部份的簡單靜態 RAM 卡,都缺少 `` 卡片資訊 架構 '' (CIS),e PCMCIA 卡用來辨視它們自已的一種 scheme。 一般來說 , cardmgr 會將任何缺少 CIS 的卡片視為一個簡單記憶卡, 並載入 memory_cs 驅動程式。 因此,有個邊際效應是,一般的識別問題是其 他型式的卡片可能會錯誤地被偵測為記憶卡了。

memory_cs 驅動程式使用了 heuristic 來猜測這些卡片的容量。 heuristic 在寫入保護的卡片上並無法工作, 有時還有可能會出錯誤。 如果卡片被誤判了,當你在使用像 dd 或 mkfs 這樣的命令時, 它的容量應要明確地被指定。

記憶設備參數

下列參數可以放在 memory.opts內:

DO_FSTAB

布林 (y/n) 設定:指定是否這個設備應該在 /etc/fstab 內加個 條目。

DO_FSCK

布林 (y/n) 設定: 指定是否檔案系統應該在被掛上前以 ``fsck -Ta'' 來檢查一下。

DO_MOUNT

布林 (y/n) 設定: 指定是否這個設備應該在卡片被插入的同時被自動地被 掛上。

FSTYPE, OPTS, MOUNTPT

檔案系統型態、 掛上選項、以及被用來做為 fstab 的項目及/或掛上該設 備的掛上點。

以下範例會針對插上任一插槽的記憶卡做自動掛上動作的手稿:

case "$ADDRESS" in
*,0,0)
    # Mount filesystem, but don't update /etc/fstab
    DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="ext2" ; OPTS=""
    MOUNTPT="/mem0"
    ;;
*,1,0)
    # Mount filesystem, but don't update /etc/fstab
    DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="ext2" ; OPTS=""
    MOUNTPT="/mem1"
    ;;
esac

使用快閃記憶卡

傳到 ftl.opts 內的設備位址有 3 或 4 個欄位: the scheme、插槽 號碼、區號碼以及另外的選項,分割號碼。大部份的快閃卡只有一個快閃記 憶體區,所以大部份的區號碼都是 0 的。

要將快閃記憶卡當成一般的磁碟來使用, 首先要建立 FTL,或 `` 快閃轉譯層級 (flash translation layer)'',它是一個使 用 ftl_format 命令在設備上做成的一個分割。 這層資料隱藏了快閃 記憶體程式的設備指定細節,並讓卡片看起來就像是個簡單的區塊設備。例 如:

ftl_format -i /dev/mem0c0c

記得這個命令是經由 `` 未加工的 '' 記憶體卡片介面來存取卡片的。一經 格式化後, 這個卡就可以經由 ftl_cs 驅動程式將它當成一般的區塊 設備那樣地做存取了。例如:

mke2fs /dev/ftl0c0
mount -t ext2 /dev/ftl0c0 /mnt

被命名成 FTL 類的設備都有點怪怪的。Minor device numbers 有三個部份 : 卡片號碼、卡片內的區域號碼以及選項-在區域號碼內的分割。這兒的區 域可以被看成為沒有分割表格的單一區塊設備 (就像軟體片一樣 ) 或者它 也可以被分割,就像是個硬碟設備一樣。 ``ftl0c0'' 設備是卡片 0,共同 記憶體區域為 0, 整個區域。 如果這個區域已被分割了, 那麼從 ``ftl0c0p1'' 到 ``ftl0c0p4'' 的設備是主分額區 1 到 4 了。

快閃記憶體卡片有兩種主要的格式: FTL 型式, 以及 Microsoft 的快閃檔案系統 Flash File System。FTL 格式是最有彈性的 ,因為它允許一般的任何高階檔案系統 (ext2、ms-dos 等等 ) 都可視為一 般磁碟設備般地來使用。FFS 則完全是個不同的檔案系統類型了。Linux 目 前無法處理用 FFS 格式化的卡片。

4.7 PCMCIA ATA/IDE 卡式硬碟機

對 ATA/IDE 磁碟機的支援需要 1.3.72 或更新的核心版本。 驅動程式內 指定 PCMCIA 的部份是 fixed_cs。 請記得在抽出 ATA/IDE 卡前請使 用 cardctl 或 cardinfo 程式把它先關閉, 因為這個驅動程式 並沒有被設計成可 ``防止熱置換的''。

傳送到 fixed.opts 內的設備位置包含三或四個欄位: 目前的 scheme、插槽號碼、磁碟的序號以及選項的分割號碼。ide_info 可以 被用來獲得 IDE 磁碟的序號。 使用 SCSI 設備時,fixed.opts 會在 第一次被呼叫給整個設備做設定。 如果 fixed.opts 回應了一個在 PARTS 變數內的一串分割資訊, 命令手稿接著就會為每一個分割做設 定。

ATA/IDE 固定磁碟設備參數

以下的參數可以被定義在 fixed.opts內:

DO_FSTAB

布林 (y/n) 設定:指定是否這個設備應該在 /etc/fstab 內加個 條目。

DO_FSCK

布林 (y/n) 設定:指定是否檔案系統應該在被掛上前以 ``fsck -Ta'' 來檢查一下。

DO_MOUNT

布林 (y/n) 設定: 指定是否這個設備應該在卡片被插入的同時被自動地被 掛上。

FSTYPE, OPTS, MOUNTPT

檔案系統型態、 掛上選項、以及被用來做為 fstab 的項目及/或掛上該設 備的掛上點。

以下是個 fixed.opts 檔案的例子用來掛上任一個 ATA/IDE 卡的第一 個分割到 /mnt 目錄上。

case "$ADDRESS" in
*,*,*)
    PARTS="1"
    ;;
*,*,*,1)
    DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
    FSTYPE="msdos"
    OPTS=""
    MOUNTPT="/mnt"
    ;;
esac

診斷 ATA/IDE 卡的問題

4.8 多功能卡

從 1.3.73 Linux 核心開始,幾個驅動程式可以共用單一個插斷,像串列埠 驅動程式與一個乙太網路驅動程式。在新的核心下使用多功能卡片時,所有 的卡片可以不用在載入或御下驅動程式的狀況下使用卡片的所有功能。

很多的硬體廠商自已做了不太能互相相容的 (有些可說是獨立的 ) 插斷共 享方法來模擬使用二個卡的功能。有些卡片 (Diamonds 的 Ositech Jack、 、3Com 的 3c562、Linksys) 的驅動程式可以正確地支援這樣的模擬存取, 但是有些卡 (特別是 Megahertz) 則不能。

早期的核心並不支援插斷分享給不同的設備驅動程式。所要 PCMCIA 驅動程 式不可能建構此卡片讓它可模擬乙太網路卡與數據卡的存取。乙太網路卡與 串列埠驅動程式會被自動地載入。然而,內定上是乙太網路驅動程式 `` 擁 有 '' 這張卡片的插斷。要使用數據機,你可以卸下乙太網路驅動程式,然 後使用以列方法重新建構串列埠:

ifconfig eth0 down
rmmod 3c589_cs
setserial /dev/modem autoconfig auto_irq
setserial /dev/modem

第二個 setserial 會查証出該埠在先前是由乙太網路驅動程式所使用 的插斷。


Next Previous Contents