📄 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 byds 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 SlimSCSI0 scsi aha152x_cs 0 sda 8 00 scsi aha152x_cs 1 scd0 11 0Socket 1: Serial or Modem Card1 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>cardctlconfig</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>cardctlreset</CODE>'' 命令会重新设定及建构卡片。 ``<CODE>cardctl insert</CODE>'' 和``<CODE>cardctl eject</CODE>'' 摸拟当一个实体的卡片插入或抽出时所做的动作,这包含载入或卸下驱动程式以及建构或关闭设备。<P>如果您正执行 X, <CODE>cardinfo</CODE> 公用程式会产生一个图示来显示所有的 PCMCIA 插槽的现况, 内容和执行 ``<CODE>cardctlconfig</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>cardctlsuspend</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 cardesac</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 eth0eth0 2 (10base2)</PRE></CODE></BLOCKQUOTE><P>目前的 3c589 驱动程式版本会自动侦测网路的连结, 但还无法完全发挥它的功能。若想以自动侦测来工作,在网路卡被建构前网路线应该是已连接著
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -