LPI 101 考试准备: 硬件和体系结构之三

来源:互联网 发布:RecyclerView 添加数据 编辑:程序博客网 时间:2024/05/20 14:26

原贴:

LPI 101 考试准备: 硬件和体系结构之三
   

调制解调器和声卡

本节涵盖了针对初级管理员(LPIC-1)101 考试的主题 1.101.3 所需要的资料。此话题的权重为 1。

调制解调器

调制解调器(modem)(来自 modulator/demodulator)是用来将计算机中所使用的数字信号转换为通过电话线传输的连继模拟数据流的设备。在早期的 PC 中,调制解调器是连接到串行端口的外部设备。后来,调制解调器被做成一张设备卡,可以安装到计算机的内部,节省了空间和电源,也不再需要串行端口和调制解调器之间的线缆。当某些通常由调制解调器完成的功能转移给 PC 中的软件后,又一次降低了开销。这种类型的调制解调器可能会称为 softmodem、HCF 调制解调器、HSP 调制解调器、HSF 调制解调器、或者不需要控制器的调制解调器,等等。虽然 Winmodem® 是 U.S. Robotics(一些以此为名的调制解调器的制造商)的注册商标,但是通常还是称此类设备为 winmodem

大部分外置的调制解调器和全功能的内置调制解调器在 Linux 中可以毫无问题地工作。有些需要 PC 操作系统提供软件支持的调制解调器也可以在 Linux 中使用,此类可用调制解调器的列表还正在不断增长。在 Linux 中应用的需要软件支持的调制解调器通常称作 linmodems,有一个专门的站点(linmodems.org)。如果有这种调制解调器,那么首先要查看 linmodems 站点(见 参考资料),并下载最新版本的 scanModem 工具。它会告诉您关于您的调制解调器可用的驱动程序(如果有)的情况。

如果有一个 ISA 调制解调器,那么需要确保端口、IRQ 和 DMA 通道与其他设备不相冲突。查看先前的章节 BIOS 设置 来了解另外的信息。

本节中所讨论的调制解调器是 异步的(asynchronous) 调制解调器。另外有一类称作 同步(synchronous) 调制解调器,用于 HDLC、SDLC、BSC 或 ISDN。简言之,我们可以认为异步传输所传输的是信息的单个字节,而同步通信是传输整个信息块。

大部分 Linux 通信是使用 Internet ProtocolIP)来完成的。所以,Linux 系统需要异步线路上使用看起来像是 IP 的协议,那种线路原本并不是为 IP 等块协议而设计的。完成此任务的第一种方法叫做 Serial Line Interface ProtocolSLIP)。使用压缩头的一个变种称作 CSLIP。当前,大部分 Internet 服务提供商(Internet Service Providers,ISP)支持使用 Point-to-Point ProtocolPPP)的拨号连接。

在 Linux Documentation Project 可以找到 Linux Networking-HOWTOThe Network Administrators' Guide (见 参考资料),它们提供了关于 SLIP、CSLIP 和 PPP 配置的资料。

当使用调制解调器进行通信时,可能需要在 Linux 系统中进行很多设置。最重要的是,需要设置系统与调制解调器之间的通信速度。这个速度通常比额定的线路速度更高,通常设置为串行端口和调制解调器所支持的最大值。设置或查看串行驱动器将要使用的调制解调器参数的一个途径是使用 setserial 程序。在清单 13 中演示了 setserial 命令。注意,-G 选项会以适于使用 setserial 设置参数的格式打印输出。在本例中, UART(Universal Asynchronous Receiver Transmitter)是具有缓存的 16550,它是在现代 PC 中常见的 UART。速度设置为 115,200 bps,这也是此 UART 和大部分较新的外置 56kbps 调制解调器所常用的。注意,在某些较新的系统中,默认速度可能设置得高达 460,800bps。如果调制解调器不能响应,那么可能应该首先检查这一设置。


清单 13. setserial 命令
 [root@attic4 ~]# setserial /dev/ttyS0/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4[root@attic4 ~]# setserial -G /dev/ttyS0/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test

需要注意一点是,setserial 不会去检测硬件。它能做的所有事情就是告诉串行驱动程序要使用哪个参数,如果不使用 autoconfig 和 auto_irq 参数的话。在本例中,setserial 会要求内核去检测硬件。查看 setserial 的手册页,以获得此命令的这些选项以及其他选项的更多资料。

在针对 LPI 102 考试的教程中,我们将深入讨论网络(见 参考资料)。同时,如果希望建立 PPP 连接,有一些优秀的工具可以帮助您完成。kppp 程序有一个非常好用的 GUI,易于使用。wvdial 命令提供了建立拨号连接的智能命令行工具。除了这些以外,发行版本可能会有其他工具,或者是专门用于 PPP 或拨号连接,或者是作为更通用的网络配置工具的一部分,比如 Fedora Core 4 中的 system-config-network

流控制(flow control) 是调制解调器通信的另一个问题,它通常受通信程序的控制,但可以被设置,或者在调制解调器本身中设置默认值。这是当接收端清除数据缓冲区时,一端告知另一端进行等待的一个途径。这可以在软件中通过发送 XON 和 XOFF 字符来完成。首选的方式是 硬件流控制(hardware flow control),这也是 PPP 连接所使用的方式,在这种方式中,使用特定调制解调器信号线的状态来表示已经准备好接收数据。所使用的信号是 Clear to SendCTS)和 Ready to SendRTS),所以会经常看到这会被描述为使用 RTS/CTS 的流控制,或者类似的说法。图 4 展示了如何使用 kppp 程序设置速度和硬件流控制。


图 4. 使用 kppp 配置调制解调器参数
使用 kppp 配置调制解调器参数



回页首

声卡

当前所出售的大部分个人计算机都有音频(声卡)功能。

声音端口(Sound Blaster)

Creative Labs Sound Blaster 系列声卡已经为声卡建立了事实上的工业标准。尽管存在很多其他品牌的非常好的声卡,但这些声卡大部分都提供了与一个或多个 Sound Blaster 系列相兼容的模式。最初的 Sound Blaster 声卡是 8-位 的,用于原来的 IBM PC 中。后来的用于 PC-AT 和兼容结构的 16-位 模型使用了 16-位 PC-AT 或 ISA 总线。当前,大部分声卡使用 PCI 总线。很多母板甚至板载了具备 Sound Blaster 兼容性的声音芯片。也可以通过 USB 连接来接入声音设备,不过我们不会在此进行论述。

ISA 总线 Sound Blaster 声卡所使用的端口是 0220-022F,不过通常可以配置为基地址 240、260 或 280。与之类似,IRQ 也通常是可配置的,常见的选择是 2、5、7 或 10。默认设置是使用 IRQ 5。通常也可以配置声卡来使用另外的 DMA 通道。

与所有 ISA 设备一样,需要确保端口、IRQ 和 DMA 通道不与其他设备冲突。参阅前面的章节 BIOS 设置,以获得另外的资料。

MIDI 端口(MPU-401)

很多声卡还拥有连接 MIDI(Musical Instrument Digital Interface 的缩写)设备的接口。通常,这个接口会模拟 Roland MPU-401。 MPU-401 ISA 接口使用的标准端口是 0200-020F。

与所有 ISA 设备一样,需要确保端口、IRQ 和 DMA 通道不与其他设备冲突。参阅前面的章节 BIOS 设置,以获得另外的资料。

配置 Linux 声音支持

较新的 2.4 和 2.6 内核都在内核中为多种声音设备构建了声音支持,通常是以模块的形式实现的。与其他设备相同,可以使用针对 ISA 设备的 pnpdump 命令或者针对 PCI 设备的 lspci 命令来显示关于设备的信息。清单 14 是对系统母板上的 Intel 声音系统执行 lspci 命令的输出。


清单 14. 使用 lspci 显示声音资源
  [root@lyrebird root]# lspci | grep aud00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM                (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)

内核模块是提供对各种设备的支持的首选方式。只需要为实际存在的设备加载模块,不需要重新引导 Linux 系统就可以卸载或者重新加载它们。对于 2.4 及更早的内核而言,模块配置信息存储在 /etc/modules.conf 中。对于 2.6 内核,内核模块系统经过了重新设计,此信息现在存储在 /etc/modprobe.conf 中。无论哪种情形,lsmod 命令都会格式化 /proc/modules 的内容,并显示已加载模块的状态。

清单 15 展示了 2.6 内核 /etc/modprobe.conf 的内容,清单 16 展示了与这个系统中声音设备相关的 lsmod 输出。


清单 15. 示例 /etc/modprobe.conf(2.6 内核)
  [root@attic4 ~]# cat /etc/modprobe.confalias eth0 e100alias snd-card-0 snd-intel8x0install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 &&/ /usr/sbin/alsactl restore >/dev/null 2>&1 || :remove snd-intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; //sbin/modprobe -r --ignore-remove snd-intel8x0alias usb-controller ehci-hcdalias usb-controller1 uhci-hcd


清单 16. lsmod 与声音相关的输出(2.6 内核)
   [root@attic4 ~]# lsmod |egrep '(snd)|(Module)'Module                  Size  Used bysnd_intel8x0           34689  1snd_ac97_codec         75961  1 snd_intel8x0snd_seq_dummy           3653  0snd_seq_oss            37057  0snd_seq_midi_event      9153  1 snd_seq_osssnd_seq                62289  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_eventsnd_seq_device          8781  3 snd_seq_dummy,snd_seq_oss,snd_seqsnd_pcm_oss            51185  0snd_mixer_oss          17857  1 snd_pcm_osssnd_pcm               100169  3 snd_intel8x0,snd_ac97_codec,snd_pcm_osssnd_timer              33605  2 snd_seq,snd_pcmsnd                    57157  11 snd_intel8x0,snd_ac97_codec,snd_seq_oss,  snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timersoundcore              10913  1 sndsnd_page_alloc          9669  2 snd_intel8x0,snd_pcm

清单 17 展示了 2.4 内核 /etc/modules.conf 的内容,清单 18 展示了与这个系统中声音设备相关的 lsmod 输出。注意 modules.conf 文件和 modprobe.conf 文件的相似之处。


清单 17. 示例 /etc/modules.conf (2.4 内核)
   [root@lyrebird root]# cat /etc/modules.confalias eth0 e100alias usb-controller usb-uhcialias usb-controller1 ehci-hcdalias sound-slot-0 i810_audiopost-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :


清单 18. lsmod 与声音相关的输出(2.4 内核)
   Module                  Size  Used by    Not taintedsmbfs                  43568   1  (autoclean)i810_audio             28824   0  (autoclean)ac97_codec             16840   0  (autoclean) [i810_audio]soundcore               6436   2  (autoclean) [i810_audio]st                     30788   0  (autoclean) (unused)

在很多 2.4 和更早的系统中,声音支持是通过 Open Sound System (OSS) Free 驱动程序提供的。现在很多系统使用 Advanced Linux sound architectureALSA)驱动程序。Reh Hat 创建了 sndconfig 来帮助配置 ISA PnP 声卡。它也可用于 PCI 声卡。在不使用 ALSA 驱动程序的系统中可能会有这个工具,尽管较新的模块支持已经使它几乎没有用武之地。这个工具会检测声卡,发出 Linus Torvalds 说话的测试声音,然后更新 /etc/modules.conf 文件。典型的操作如图 5 和图 6 所示。