打印

[原创] 【Linux 学习笔记 5】Linux 的硬件 (3) 硬件篇终于结束了

【Linux 学习笔记 5】Linux 的硬件 (3) 硬件篇终于结束了





谁都知道,硬件是一切的基础。但是真正的能够好好的把硬件搞懂的,也真的很少。恐怕,这个就是Windows给我们带来的后遗症吧
--------Silver

Parallel Ports(LPTn)
并口同样也有LPT1~LPT4.虽然,通常最多用2个。如果你的系统只有一个LPT端口在用,那么它的端口是IO PORT 378和IRQ 7。要注意的是,LPT×所使用的端口是3BC-3BE,这个端口通常是用在显卡上面的并行口的。许多主板会把这个地址给LPT1,其他LPT2会变成LPT1,LPT3会变成LPT2.

许多系统不在打印口上使用中断,所以,IRQ可能就不会被使用。我们经常使用打印口的中断来共享声卡IRQ7。在早期的时候,打印端口只是用来链接打印机传送打印数据和控制信号。后来被用来链接外置的CD-ROM或者磁带机,所有的信号都是单向向外输出。现在的打印端口的标准是IEEE 标准。1284-1994标准信号是一个双向打印接口并行口界面。你的BIOS可以给你5个设置选项,双向(bi-directional), EPP,ECP,ECP&EPP. EPP代表了Ehanced ParallelPort(加强型并行口),这个并行口是为了链接类似于CD-ROM或者四代机这种需要输出大量数据的双向传输(有进有出)。默认的BIOS选址是选择ECP。一般是无需改动的。

Floppy disk port
如果你的系统拥有传统的软盘控制器,它就会使用端口3F0-3F7。如果你原来没有软驱,是以后安装的,你必须要在BIOS里面开启软驱控制器。

键盘和鼠标

键盘或者鼠标是使用控制器端口0060 和0064. 这个就是主机上那个圆口的PS2连接器。许多系统在启动的时候,会检查键盘是否插入。现在的许多机器都会忽略没有键盘的这个错误。
一旦一个系统已经被安装,没有键盘或者鼠标并不是一个大的问题。许多服务器都是这么运行的。管理服务器是通过网络或者Web administration 工具,或者telnet ,ssh这种命令行来完成。
在一个无键盘的系统上安装通常是通过链接在一个串口端口的终端来完成。一般来说,你还是需要个一个键盘和显示器来保证BIOS的设定正确并且已经开启了串口。 你可能需要一个自定义的启动软盘或者CD来完成Linux的安装。 另外一个方法,比如类似于IBMJS20刀锋服务器是在网络上模拟一个串口来做的。

Section 3. Modems和声卡
----------------注意:
在前面的笔记里面,偶已经比较详细的阐述了一些关于Modem和声卡的事情。但是确实也写的比较混乱。而这个教材里面包含了一些偶以前没有讲述到的东西。因此偶还是决定老老实实的重新做一次笔记。毕竟,脚踏实地才是Linux所需要的。
----------------注意完毕.

一个modem(也就是调制/解调器)是一个用来把电脑里面的数字信号(1、0)转换成一串在电话线路上的模拟信号。在早期的PC中,Modem是一个外设,并链接到一个串口上。后来,内置modem出现。modem可以是一个卡,插在主板上面。这样可以减少空间,和电力,并且削除对连接modem和串口的连接线的需要。另外一个成本的减少主要表现在一些原本需要Modem来解决的事情可以让PC的软件来做。这种modem被称为软猫,HCFmodem,HSP,modem,HSFmodem或者无需控制的modem。这种modem是被设计用windows操作系统锁采用的平台上使用。另外一个术语,winmodem就是被用来标称这些设备的,虽然winmodem已经被另外一家公司锁注册,但是我们依然这么称呼。
大部分的外置modem和全内置MODEM都可以在Linux下工作。 一些Modem同样要求Linux下安装某些软件来实现。 通过Linux软件支撑的Modems我们称为linmodems,大家可以去查看linmodems.org来找到这样的modem。
如果你有一个ISA的modem,你需要确定IO端口,IRQ和DMA通道不与其他设备冲突。
我们现在讨论的是非同步的modem。另外一个modem的类别是同步modem,这些modem是用在HDLC,SDLC,BSC,或者ISDN上面。简单点说,非同步传输就是传输信息的每个字节,而同步传输是传输一整块信息。
大部分的LInux通讯都是发生在IP协议的基础上。而Linux需要运行一个看上去叫做IP over 非同步线路,但是IP并不是设计用来传输非同步的单字节信息,IP传输是用来传输信息块的。 因此,第一种方法来解决这个问题的是叫做SLIP(SerialLIne InterfaceProtocol).后来,一个带有压缩功能的信息头部的协议叫做CSLIP。仙子,大部分的ISP头支持一个拨号协议,PPP协议。

当用modem来通信的时候,你必须事先在LInux上设计很多设置。最重要的是,你要设置你的Modem和你的机器之间的通讯速度。一般来说,这个会依据你串行口芯片的最大速度来定。 你可以用setserial命令来查看。(这个命令在F7里面通过,但是要注意大小写)。你可以通过setserial/dev/ttyS0来查看信息。UART(Universal Asynchronous ReeciverTransmitter)的buffer设置可以是16550,这个是一个非常普遍的值。你可以用-G这个参数来显示详细的输出参数。其中速度是设置在115,200bps,这个数值是非常普通的。有一些modem的数值可能设置为460,800的bps。如果你的modem没有正常反应,那你就要好好检查了。

还有一件事情要提到的是,setserial命令并不会探测硬件设备。这条命令是用来告诉串行设备用什么参数,除非你用autoconfig和auto_irq参数,如果用了这个参数,setserial会询问核心来探测硬件。

我们会在LPI 102里面来提及这个问题。同时,如果你希望设置一个PP链接,这里有几个很好的软件来帮助你实现。kppp是一个带有GUI的程序。很容易设置(偶没有在F7里面找到)。另外一个程序是wvdial命令行。另外,系统也自带有system-config-network可以帮助你测试(F7中有)。另外一个有关modem通讯的设置是通信的控制流。这个控制流是用来告诉另外一端结束通信并等待一段时间当接收器正在处理数据并清空缓存。这个可以通过传送XON和XOFF来控制。一般来说,我们在PPP链接中,是被称为hardware flow control。 所采用的信号是CTS(Clear toSend)或者RTS(Ready to Send).


声卡:
声卡端口(Sound Blaster)
Creative的声卡几乎已经是声卡的默认标准。最早的声卡是在IBMPC上的8位卡。后来16位卡也在PC-AT出现,它们使用了16-bit或者ISA总线。今天,大多数卡是使用PCI总线。许多主板都是采用了板载声卡。声卡也可以通过USB链接来实现。但是我们现在不做研究。
一个ISA总线的Sound Blaster声卡占用的IO端口是0220-022F,虽然其他端口240,260,280也同样可以进行配置。 同样,IRQ也是通常选择2,5,7,或者10. 默认的IRQ是5.声卡同样也占用DMA通道。

只要是ISA设备,你就必须确保端口,IRQ和DMA不与其他设备冲突。

MIDI 端口(MPU-401)
许多声卡都有一个MIDI接口(用来链接乐器的数字输出接口)。 通常来说,这个接口来模拟Roland MPU-401. 这个标准MPU-401使用的是ISA界面的端口是0200-020F。

配置Linux声卡
2.4和2.6核心已经对大多数声卡有了广泛的支持,并且已经加入和核心, 作为模块存在。我们可以使用pnpdump(不支持F7)来显示ISA设备,或者采用lspci(支持F7)来显示PCI设备的信息。

核心模块是我们通常用来支持各种设备的方法。 不同设备要装载不同的模块,如果不需要,我们可以随时卸载,而无需重新启动机器。对于2.4或者早期的核心来说,模块的配置信息是存储在/etc/modules.conf里面。对于2.6核心来说,模块信息是存储在/etc/modprobe.conf(F7所采用)。 不管如何,都可以通过lsmod(F7采用)命令来修改/proc/modules,和模块的显示以及状态。

在2.4或者早期的版本的核心中,声音系统是通过OSS(Open Sound System)免费驱动来支持的。许多系统今天依旧使用ALSA(AdvancedLinux Sound Architecture)驱动。 可以通过sndconfig 程序来创建并辅助配置ISAPNP声卡。对于PCI声卡也同样适合。这个sndconfig会在不采用ALSA驱动的系统中出现。 这个程序会探测声卡,会发出一个测试声音的程序。 然后更新/etc/modules.conf。

Section 4. 安装SCSI 设备
SCSI又称为小型计算机系统接口。是一个用来链接流设备的接口,比如磁带机,块存储设备像磁盘,CD-ROM,DVD等。 有些扫描仪和打印机也同样使用这个接口。 SCSI可以让多个设备占用总线。 有一个控制器来管理该总线。SCSI设备可以是外置也可以是内置。

市面上,主要有3中SCSI标准。
SCSI:
这个是原始的标准(X3.131-1986),现在被称为SCSI-1。这个标准支持在一个线缆上最多8个设备。SCSI-1使用了被动终端方法。现在这个标准已经被撤回,虽然依旧有一些设备支持这个标准。 数据接口是8位同时传输的串行,最高速度达到每秒5MB。FConnection是使用一个50个的连接器。有点像DB-25 RS-232串行连接器。

SCSI-2:
这个是ANSI X3.131-1994的标准。 这个标准把速度提高了10MBps,同时也可以传输16位的数据。一个16位的总线运行在10MBps传输速度可以传输20MBps的数据。新的传输线是68pin的。SCSI-2标准化了SCSI命令并且引进了差异信号来改进高速传输中的品质。 这个就是后来称为HDV信号(Highvoltage differential)。 HDV激活了终端的需求。使在一根传输线缆上混合8-bit和16-bit的传输称为可能。SCSI-2支持最多16个设备,在窄线上最多支持8个设备。

SCSI-3:
SCSI-3是一组标准而不是一个标准。整个构架是ANSI X3.270-1996定义的,也被称为SCSI-3 Architecture Model 或者SAM。早期的SCSI标准已经被镶嵌在SCSI并行接口或者SPI标准里面。速度再一次增加。现在16位设备可以最高传输速度达到320MBps在一个速度在160MBps总线上。
SCSI-3也引进了光纤通道的SCSI,这个SCSI支持每个总线最多126个设备,在几公里的传输范围内,速度可以超过1GBps甚至2GBps。另外一个值得注意的引进是SCA(single Connector attachment),这个是用来链接16位设备的。SCA是一个80pin的连接器。 SCA允许设备安全的进行热插拔,通常都是用在RAID中(RedundantArray of Independent disks)。

我们前面不断提到了终端,但是没有详细的解释。SCSI的总线要求每个总线的尾端必须要要合理的被终端。你必须在你的总线上选择合适的终端类型;被动,HVD,或者LVD。如果你在一根总线上混用宽带和窄带,终端会有所不同。如果控制器只是控制一个内部的总线或者只控制一个外部的总线,它通常会提供终端,要么是通过自动分配,或者BIOS设置。如果一个控制器同时控制内部和外部段, 它一般来说就不应该提供终端。有一些设备可以通过一个开关或者一个跳线来提供终端。如果没有,终端应该是有一个插入线缆的终端块来构成。 无论如何,如果你混装宽带和窄带,终端不要插错。

SCSI Ids
到现在位置,你肯定很奇怪,系统是如何在一根电缆上管理许多设备。每一个设备,包括控制器,都有一个数字ID。对于窄带(8-bit)SCSI,这个ID号码的范围是0~7.宽带增加了8~15.一般来说,控制器得到的都是ID7。设备的ID可以通过跳线,开关或者在设备上的播盘,或者软件来设定。使用SCA的设备会自动配给ID因为这些设备可能是热插拔的。

在SCSI总线上的设备有一个优先级。在窄带上的优先级从0(最低)到7(最高),因此一个拥有7的控制器是拥有最高优先级的。额外ID的宽带优先级拥有8(最低)到15(最高),如果是15个登记,则是0是最低。对于慢速设备和无法接受延迟设备(比如刻录机)应该给与高优先级ID来确保他们有足够的服务。

像RAID控制器的设备通常占用一个ID,但是经常是几个硬盘一起工作。因此, 除了ID以外,SCSI地址分配一个LUN(Logical Unit Number,感觉有点像LBA). 磁带和单独磁盘驱动要么不具有LUN,要么LUN是0.

一个SCSI适配器可能支持超过一个以上的SCSI线缆或者通道。 而一个系统里面可能具有多个SCSI适配器。 一个设备因此可能有,适配器号码,通道号码,设备号码和一个LUN号码。

像CD刻录机的这种IDE-SCSI模拟的设备和USB存储设备具有他们自己的适配器。

Linux关于SCSI设备的命名和文件

回到我们前面在BIOS区域讨论的IDE驱动的命名,比如/dev/hda和/dev/hdc。这个命名对于支持一个或者两个硬盘的IDE控制器来说,是非常简单的。 即使在整个机器只有2个硬盘,另外一个就是挂在第一个适配器上的主硬盘,在第二个IDE适配器上的IDE磁盘总是/dev/hdd。 对于SCSI来说,情况就变得相当的复杂。

Linux在启动完成后,会把启动时检测出来的设备分配设备名。 因此,在第一个适配器上的第一个通道上的第一个硬盘会变成/dev/sda。第二个会变成/dev/sdb、以此类推。 第一个磁带机会变成/dev/st0第二个会变成/dev/sr1或者/dev/scd1。用SCSI模拟器的设备,比如USB存储设备(在2.6核心前)的IDE CD 或者DVD驱动器也会在名字空间里给分配名字。

我们现在暂时不讨论SCSI命名,最总要的是我们要知道,每次启动以后,这些数字都会改变。如果你增加或者删除一个SCSI设备,高于那个设备的所有驱动器会在下次启动的时候有不同的名字。因此,我们必须警告你,因为每个磁盘可以有最多15个分区,每一个都是和名字相关(/dev/sda1,/dev/sda2~/dev/sda15),当你加载文件系统的时候,这个有可能会造成havoc。 你必须在执行前计划的非常详细小心,尽量在使用SCSI磁盘的时候,使用磁盘标号而不是磁盘名字。

我们可以使用/proc来查看信息。只要进入/proc/scsi/scsi就可以看到。如果你想看到那个设备相应/dev/sda,你可以使用scsi_info来看。 (F7中没有该命令)

然后,有一些核心没有这个命令,这个命令是属于kernal-pcmcia-cs包里面。

许多系统现在都改用了SCSI Generic(sg)通用磁盘。 当使用sg磁盘时, 你会发现在/proc/scsi/sg下。你也会在设备下发现/dev/sg0,/dev/sg1等。 这些设备通常是代表了其他设备,注入/dev/sda或者/dev/st0

在sg3_utils包里面包含了几个程序尅操控SCSI子系统的不同方面。 尤其是sg_map命令提供了显示sg名字和其他设备的链接。 你可以用sginfo命令(F7没有)来查看。

SCSI BIOS 和启动次序

当大部分服务器有SCSI的时候,单机依旧没有安装SCSI设备。单机一般是从软驱或者光驱启动。一般来说,启动次序是从BIOS里面设置,或者有时候按某些键来启动系统。
BIOS bootspecification定义了一种方法,可以在启动的时候显示SCSI卡的信息。这样,用户就可以进入SCSI卡来进行对SCSI卡的设置。一旦进入SCSI卡的BIOS,你就会看到典型的选择屏幕来让你设置SCSI适配器的地址(一般都是7),SCSI可启动的设备(一般ID是0),总线速度和是否让适配器提供终端等。一些旧的卡还可能需要启动设备必须ID是0,但是现在的新卡已经允许你选择任何设备啦iqidong。你还可有可能可以format一个硬盘。当你设置完璧SCSI的BIOS后,你可能还是要回到BIOS里面,设置让SCSI作为启动设备。

TOP

兄弟挺不容易,看了都要顶
niczhao

TOP