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 里。以下是 /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 页里有详细的资料。

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 里解出一些有关于设备上的 资料开始。 每一个手稿会构筑一个 `` 设备位址 '',它是独一无二的位址 用来描述该设备在 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 的乙太型网路卡界面通常被称做 eth0eth1 等等。环形 卡亦同样地被看待。 然而它们被称做 tr0tr1 等等。 ifconfig 命令是被用来观看及修改网路界面状态的。Linux 的另一特 点是网路界面并不会像其他设备一样地被看成是一个在 /dev 里 头的文档。所以如果您在 /dev 内找不到它们时请不要觉得惊讶。

当一个 PCMCIA 乙太网路卡被侦测到时,它会被指定为第一个可用的界面卡 名字, 通常为 eth0Cardmgr 命令会执行 /etc/pcmcia/network 手稿来建构它的界面。

请勿将您的 PCMCIA 乙太网路卡建构在 /etc/rc.d/rc.inet1 内 ,因为当这个手稿被执行时也许卡片并不在插槽里。 在 rc.inet1 内 除了回归的项目之外, 其它的命令列请将他们注解掉。 而另外修改 /etc/pcmcia/network.opts 来配合您的本地网路设定。 networknetwork.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 变数列明文档系统的挂入点。 这特别是在使用 cardctlcardinfo 命令来关闭当网路文档系统是用这个方法 建构而挂上的网路卡时。如果在没预警下网路卡被移出时,是无法完全地卸 下网路文档系统的。

除了一般的网路建构参数之外,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* 的设备被使用在往外的连接,比如说数据机。 而每一个实体串列埠都各有 ttyScua 两个设备档: 要使用 哪个适当的设备到你的应用上都由您来决定。

对于串列设备的建构,您可使用 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.ctoaster_cs.cfdomain_cs.c) 以及正常的 Linux SCSI 驱动 程序。

当一个新的 SCSI 主卡被侦测到时, SCSI 驱动程序会寻找连接著的设备。 请检查系统日志你的设备被正确地侦测到了。新的 SCSI 设备会被指定为第 一个可用的 SCSI 设备档。第一个 SCSI 硬盘是 /dev/sda,第一 个 SCSI 磁带机是 /dev/st0, 还有, 第一个 CD-ROM 会是 /dev/scd0

在 1.3.X (含 ) 以后的核心里,PCMCIA 核心驱动程序可以从系统核心中找 出有哪些 SCSI 设备有连接在界面卡上。它们会被列表在 /var/run/stab , 而 SCSI 构建手稿 /etc/pcmcia/scsi 也会被每一个连接著的 设备所呼叫来建构或关闭该设备。内定的手稿并不会做任何建构 SCSI 设备 的动作,但它会妥当地在界面卡被移走时卸下在 SCSI 设备上文档系统。

在 1.2.X 核心里,PCMCIA 驱动程序无法自动地推测哪个设备被安装在哪个 特定的 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 设备都被正确 地卸下与关闭了。 最好的确认方法是在实体抽出卡片前使用 cardctlcardinfo 来要求卡片的移出动作。 就这样,所有的 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 在写入保护的卡片上并无法工作, 有时还有可能会出错误。 如果卡片被误判了,当你在使用像 ddmkfs 这样的命令时, 它的容量应要明确地被指定。

记忆设备参数

下列参数可以放在 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 卡前请使 用 cardctlcardinfo 程序把它先关闭, 因为这个驱动程序 并没有被设计成可 ``防止热置换的''。

传送到 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