在开始前, 您应该想想是否需要自己来编译 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
内的资源给排除掉。
以下是某些特定的笔记型电脑之资源设定: