📄 pcmcia-howto-4.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
<TITLE>Linux PCMCIA HOWTO 中文版: 使用方法以及特色</TITLE>
<LINK HREF="PCMCIA-HOWTO-5.html" REL=next>
<LINK HREF="PCMCIA-HOWTO-3.html" REL=previous>
<LINK HREF="PCMCIA-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="PCMCIA-HOWTO-5.html">Next</A>
<A HREF="PCMCIA-HOWTO-3.html">Previous</A>
<A HREF="PCMCIA-HOWTO.html#toc4">Contents</A>
<HR>
<H2><A NAME="s4">4. 使用方法以及特色</A></H2>
<H2><A NAME="ss4.1">4.1 用来建构以及监控 PCMCIA 设备的工具</A>
</H2>
<P>如果所有的模组都被正确地载入了,在没有卡片被插入的状态下, <CODE>lsmod</CODE>
命令的输出会看起来像以列的样子。
<P>
<BLOCKQUOTE><CODE>
<PRE>
Module Size Used by
ds 5640 2
i82365 15452 2
pcmcia_core 30012 3 [ds i82365]
</PRE>
</CODE></BLOCKQUOTE>
<P>系统日志也应该包含插槽驱动程式对於哪些主控制器被发现了、有几个插槽
被侦测到了的输出。
<P>
<H3>cardmgr建构精灵</H3>
<P><CODE>cardmgr</CODE> 精灵负责监控 PCMCIA 插槽,有需要时载入
其他的驱动程式,并且执行使用者阶层的手稿来反应卡片的插入与移出。它
会把它的动作记录在系统日志内并用哔声来回应卡片状态的改变。哔声的音
调表示建构步骤是成功还是失败。两个高音声响表示步片已被成功地辨视与
建构了。一高音一低音声响表示卡片被辨视,但因某些原因无法被建构。一
低音哔声表示卡片无法被辨视。
<P><CODE>Cardmgr</CODE> 会把每一个插槽的设备资讯记录在 <CODE>/var/run/stab</CODE>
□。以下是 <CODE>/var/run/stab</CODE> 的列表例子:
<P>
<BLOCKQUOTE><CODE>
<PRE>
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
</PRE>
</CODE></BLOCKQUOTE>
<P>在这几行所描述的设备中,第一个栏位表示插槽、第二为设备类别、第三为
驱动程式名称、第四被用来指定在同一驱动程式下使用的每个设备取号码、
第五个是设备名称、最後两个栏位是这个设备的主要及次要号码。(如果可
找到的话)
<P><CODE>cardmgr</CODE> 精灵依据被存在 <CODE>/etc/pcmcia/config</CODE> 内的已知之
卡片资料库来建构这些卡片。这个档案描述了许多个别的驱动程式,以及如
何辨视许多的卡片,还有哪个驱动程式属於哪个卡片的。这个档案的格式在
<CODE>pcmcia(5)</CODE> 的 man 页□有详细的资料。
<P>
<H3>cardctl 及 cardinfo 公用程式 </H3>
<P>
<P><CODE>cardctl</CODE> 命令可以用来检查插槽的状态, 或看它们是如何被建构的。
它也可以被用来警示一个卡片的建构状态。 这儿有个 ``<CODE>cardctl
config</CODE>'' 命令的输出例子:
<P>
<BLOCKQUOTE><CODE>
<PRE>
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
</PRE>
</CODE></BLOCKQUOTE>
<P>``<CODE>cardctl suspend</CODE>'' 和 ``<CODE>cardctl resume</CODE>'' 两个命令可以用
来在不需卸下它的相关驱动程式的状况下关闭卡片。``<CODE>cardctl
reset</CODE>'' 命令会重新设定及建构卡片。 ``<CODE>cardctl insert</CODE>'' 和
``<CODE>cardctl eject</CODE>'' 摸拟当一个实体的卡片插入或抽出时所做的动作
,这包含载入或卸下驱动程式以及建构或关闭设备。
<P>如果您正执行 X, <CODE>cardinfo</CODE> 公用程式会产生一个图
示来显示所有的 PCMCIA 插槽的现况, 内容和执行 ``<CODE>cardctl
config</CODE>'' 类似。它还提供其他 <CODE>cardctl</CODE> 功能的图形化功能。
<P>
<H3>插入与抽出卡片</H3>
<P>在理论上,你可以在任何时间插入或移出 PCMCIA 卡片。然而,把正在被其
他程式使用中的卡片移出来并不是个好主意。在核心 1.1.77 版以前的系统
常会在串列/数据机卡片被移出时造成当机,但现在已有修正方法了。
<P>
<H3>卡片服务程式与进阶能源管理</H3>
<P>卡片服务程式可以编译成支援 APM ( 进阶能源管理) , 如果你已安装了这个套件到你的系统内的话。 APM 在核心
1.3.46 (含)以後就被整合了。 现在这套件被 Rick Faith
(faith@cs.unc.edu) 所维护, APM 工具可以由
<A HREF="ftp://ftp.cs.unc.edu/pub/users/faith/linux">ftp://ftp.cs.unc.edu/pub/users/faith/linux</A> 拿到。如果你的系
统被侦测出有个相容的版本在的话, PCMCIA 模组会被自动地建构成支援
APMM 功能。
<P>如果没有藉著 APM, 你可以在悬置你的笔记电脑前执行 ``<CODE>cardctl
suspend</CODE>'',以及在回覆後执行 ``<CODE>cardctl resume</CODE>'',才能适当地关
上或重启你的 PCMCIA 卡。 这对正在使用中的数据机并不适用, 田因序
列驱动程式并无法储存与回应数据机的运作参数。
<P>APM 在有些系统上似乎有点不太稳定。 如果你遇到 APM 和 PCMCIA 共用时
有任何问题,请您在提出程式小虫报告前先试著把问题简化。
<P>有些驱动程式, 比如说 PCMCIA SCSI 驱动程式,无法从悬置/重新动作周
期下回覆过来。 在使用 PCMCIA SCSI 卡时, 在悬置系统前先执行
``<CODE>cardctl eject</CODE>''。
<P>
<H3>关闭 PCMCIA 系统</H3>
<P>要卸下整个的 PCMCIA 套件, invoke <CODE>rc.pcmcia</CODE> with:
<P>
<BLOCKQUOTE><CODE>
<PRE>
/etc/rc.d/rc.pcmcia stop
</PRE>
</CODE></BLOCKQUOTE>
<P>这个手稿会花几秒钟来执行,给全部的客户自订驱动程式来完美地关闭
。如果有个 PCMCIA 设备正被使用中,这样关可能不会很完整地关闭,有些
核心模组可能不会被卸下。 要防止发生这种状况, 请在执行
<CODE>rc.pcmcia</CODE> 之前使用 ``<CODE>cardctl eject</CODE>'' 来关闭所有的插槽。
<CODE>cardctl</CODE> 命令的离开状态会显示如果有任何的插槽不能被关闭的。
<P>
<H2><A NAME="ss4.2">4.2 PCMCIA建构手稿的概要</A>
</H2>
<P>每一个 PCMCIA 设备都会有个相对应的 `` 类别 '' 来描述它应该如何被建
构与管理的。这些类别与设备驱动程式都被组织在
<CODE>/etc/pcmcia/config</CODE> 内。目前共有五种输出输入设备的类别 (网
路、 SCSI、 cdrom、硬碟以及串列 ) 以及二种记忆体设备类别 (记忆体与
FTL)。在每一个类别中,都有二个手稿放在 <CODE>/etc/pcmcia/config</CODE>
内:一个主要建构手稿 (例如, <CODE>/etc/pcmcia/scsi</CODE> 是 SCSI 设
备的 ),以及一个选项手稿 (例如, <CODE>/etc/pcmcia/scsi.opts</CODE>)。
主手稿在卡片被插入时会被启用来建构该设备,当卡片被抽出时关掉该设备
。对於支援多种设备的卡片,针对各别不同的设备的手稿都会被启用。
<P>这 config 手稿会从 <CODE>/var/run/stab</CODE> □解出一些有关於设备上的
资料开始。 每一个手稿会构□一个 `` 设备位址 '',它是独一无二的位址
用来描述该设备在 <CODE>ADDRESS</CODE> shell 变数内被要求被建构的方式。它会
被传递到 <CODE>*.opts</CODE> 手稿上, 该手稿再回应有关於在这位址上的设备应
该要怎样地建构才可以的资讯。 有些设备, 它的设备位址就是插槽号码。
还有其他的设备,它会包含另外的有用资讯可以用来决定如何来建构该设备
。例如,网路设备会传递他们的硬碟乙太网路位址做为设备位址的一部份,
来让 <CODE>network.opts</CODE> 手稿能够使用这项资讯来从许多不同的建构中做
正确的选择。
<P>所有的设备位址的首要部份是目前的 PCMCIA ``scheme''。这个参数是被用
在只有一个外部使用者指定变数时用来对设备建构之多种设定的。对於它的
应用, 例如我们可以有个 ``home'' scheme 以及一个 ``work'' scheme,
它们包括了不同的网路建构参数的组合。 目前的 scheme 可以使用
``<CODE>cardctl scheme</CODE>'' 命令来做选择。如果没有 scheme 被指定的话就
以内定值来设定。
<P>一般原则上,当要建构 Linux 在笔记型电脑上时,PCMCIA 的设备只能被经
由 PCMCIA 设备手稿来建构。 请不以试著以建构固定设备的方式来建构
PCMCIA 设备。然而,有些 Linux 供应版商提供已接在他们自已的设备建构
工具上的 PCMCIA 套件。在这种情况下,以下的几个主题可能无法使用,而
供应版商应该会有他们自己的这类文件。
<P>
<H2><A NAME="ss4.3">4.3 PCMCIA 网路卡</A>
</H2>
<P>Linux 的乙太型网路卡介面通常被称做 <CODE>eth0</CODE>、<CODE>eth1</CODE> 等等。环形
卡亦同样地被看待。 然而它们被称做 <CODE>tr0</CODE>、 <CODE>tr1</CODE> 等等。
<CODE>ifconfig</CODE> 命令是被用来观看及修改网路介面状态的。Linux 的另一特
点是网路介面并不会像其他设备一样地被看成是一个在 <CODE>/dev</CODE> □
头的档案。所以如果您在 /dev 内找不到它们时请不要觉得惊讶。
<P>当一个 PCMCIA 乙太网路卡被侦测到时,它会被指定为第一个可用的介面卡
名字, 通常为 <CODE>eth0</CODE>。 <CODE>Cardmgr</CODE> 命令会执行
<CODE>/etc/pcmcia/network</CODE> 手稿来建构它的介面。
<P>请勿将您的 PCMCIA 乙太网路卡建构在 <CODE>/etc/rc.d/rc.inet1</CODE> 内
,因为当这个手稿被执行时也许卡片并不在插槽□。 在 <CODE>rc.inet1</CODE> 内
除了回归的项目之外, 其它的命令列请将他们注解掉。 而另外修改
<CODE>/etc/pcmcia/network.opts</CODE> 来配合您的本地网路设定。
<CODE>network</CODE> 和 <CODE>network.opts</CODE> 手稿只有在您的乙太网路卡存在时才
会被执行。 如果您的系统有自动网路建构程式, 它也许是也许不是
PCMCIA-aware。 请从您的 Linux 供应版本的文件中查看看是否 PCMCIA 网
路设备是否需要使用自动化工具来建构或只需编辑 <CODE>network.opts</CODE> 即
可。
<P>传到 <CODE>network.opts</CODE> 的设备位址中包含了四个以逗号来分开的栏位:
scheme、插槽号码、设备提议及卡片硬体的乙太网路位址。设备提议是用来
给有许多网路介面的卡片取号码之用,通常为 0。如果您有许多不同使用目
地的卡片时,另一按照插槽位置而建构的选项应该被设定,如同在:
<P>
<BLOCKQUOTE><CODE>
<PRE>
case "$ADDRESS" in
*,0,*,*)
# definitions for network card in socket 0
;;
*,1,*,*)
# definitions for network card in socket 1
;;
esac
</PRE>
</CODE></BLOCKQUOTE>
<P>或是,它们可能被以自己的硬体位址被建构,如下:
<P>
<BLOCKQUOTE><CODE>
<PRE>
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
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H3>网路设备参数</H3>
<P> 以下的参数可在 <CODE>network.opts</CODE>内被使用:
<P>
<DL>
<DT><B><CODE>IF_PORT</CODE></B><DD><P>指定乙太网路收发器类型, 这是针对那些无法自动侦测的卡使用。 请看
``<CODE>man ifport</CODE>'' 内有收发器名称。
<DT><B><CODE>BOOTP</CODE></B><DD><P>布林 (y/n) 设定: 表示是否主机的 IP 位址和分路资讯是否可以经由
BOOTP 协定来获取。
<DT><B><CODE>IPADDR</CODE></B><DD><P>指定IP位址。
<DT><B><CODE>NETMASK</CODE>, <CODE>BROADCAST</CODE>, <CODE>NETWORK</CODE></B><DD><P>基本网路参数: 请参阅 networking HOWTO
<DT><B><CODE>GATEWAY</CODE></B><DD><P>给主机的子网路使用的通讯闸 IP 位址。只要是在这个子网路以外的封包都
会被转到这个闸道。
<DT><B><CODE>DOMAIN</CODE></B><DD><P>给主机的网路 domain name,被用来建立 <CODE>/etc/resolv.conf</CODE>。
<DT><B><CODE>DNS_1</CODE>, <CODE>DNS_2</CODE>, <CODE>DNS_3</CODE></B><DD><P>主机名称或是 IP 位址给这个介面的 nameservers, 被加到
<CODE>/etc/resolv.conf</CODE>内。
<DT><B><CODE>MOUNTS</CODE></B><DD><P>A
给这个介面使用来做 NFS 挂入点的列表。
<DT><B><CODE>IPX_FRAME</CODE>, <CODE>IPX_NETNUM</CODE></B><DD><P>对 IPX 网路: frame type 及网路号码将被传输到 <CODE>ipx_interface</CODE>
命令上。
</DL>
<P>例如:
<P>
<BLOCKQUOTE><CODE>
<PRE>
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
</PRE>
</CODE></BLOCKQUOTE>
<P>若想自动挂上或卸下网路档案系统,首先将档案系统加到 <CODE>/etc/fstab</CODE>
内,在挂上选项上加上 <CODE>noauto</CODE>。 在 <CODE>network.opts</CODE> 内
使用 <CODE>MOUNTS</CODE> 变数列明档案系统的挂入点。 这特别是在使用
<CODE>cardctl</CODE> 或 <CODE>cardinfo</CODE> 命令来关闭当网路档案系统是用这个方法
建构而挂上的网路卡时。如果在没预警下网路卡被移出时,是无法完全地卸
下网路档案系统的。
<P>除了一般的网路建构参数之外,<CODE>network.opts</CODE> 手稿可用来在介面已经
被建构起後或被关闭後做另外的动作时使用。 如果 <CODE>network.opts</CODE> 定
义了一个叫 <CODE>start_fn</CODE> 的命令层功能呼叫, 当介面被建构後它会被网
路手稿所启用,而介面名称将会被传送到这个功能函数做为第一个参数(也
只有这个)。相同地,如果 <CODE>stop_fn</CODE> 被定义了,那麽它会在关闭一个
介面前被启用。
<P>收发器类型可以用 <CODE>IF_PORT</CODE> 来设定。它可以是 PCMCIA 之前版本的数
值表示或是识别收发器的关键字。所有的网路驱动程式尽可能将它设定为自
动侦测(如果可能的话)介面或是 10baseT 的。 <CODE>ifport</CODE> 命令可用来
检查或设定目前的收发器类型,例如:
<P>
<BLOCKQUOTE><CODE>
<PRE>
# ifport eth0 10base2
#
# ifport eth0
eth0 2 (10base2)
</PRE>
</CODE></BLOCKQUOTE>
<P>目前的 3c589 驱动程式版本会自动侦测网路的连结, 但还无法完全发挥它
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -