lpi 1.docx

上传人:b****7 文档编号:9591750 上传时间:2023-02-05 格式:DOCX 页数:47 大小:241.14KB
下载 相关 举报
lpi 1.docx_第1页
第1页 / 共47页
lpi 1.docx_第2页
第2页 / 共47页
lpi 1.docx_第3页
第3页 / 共47页
lpi 1.docx_第4页
第4页 / 共47页
lpi 1.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

lpi 1.docx

《lpi 1.docx》由会员分享,可在线阅读,更多相关《lpi 1.docx(47页珍藏版)》请在冰豆网上搜索。

lpi 1.docx

lpi1

BIOS设置

本节涵盖了针对初级管理员101考试(LPIC-1)的主题1.101.1的资料。

此主题的权重为1。

首先大概了解现代的个人计算机,然后讨论建立系统的配置问题。

我们将集中关注的是使用x86处理器(比如Intel®Pentium®或AMDAthlon处理器)并拥有一条PCI总线的系统,因为当前这些是最为常见的。

这里所涉及的很多话题与针对具体外围设备的LPI目标有非常多重叠之处。

本教程后面的章节将引用到本节的基本资料。

系统和BIOS概述

现代的个人计算机(PC)系统都包括一个用于进行计算的中央处理单元(CPU)以及用来存储处理器所使用的数据的一些内存。

为了使用此设备,我们需要连接外围设备,比如键盘、鼠标、显示器、硬盘、CD或DVD驱动器、打印机、扫描仪和网卡,这就使我们能够输入、存储、打印、显示和传输数据。

在刚刚描述的计算机中,处理器所使用的内存称为随机访问存储器(RandomAccessMemory,RAM)。

在典型的PC中,此内存是易失的(volatile),也就是说,它需要有电源才能保存数据。

关闭PC,内存就会被清空。

从另一个角度来说,当我们关闭一台PC后,它就只是一堆硬件组件,什么也做不了,直到它被重构(reprogrammed)。

当启动机器时会发生重构;这个过程称作引导(bootstrapping或booting)计算机。

引导过程和BIOS

引导的过程涉及到从外部存储设备(比如软盘、CD、DVD、硬盘或者存储钥匙(memorykey))中加载操作系统。

执行这一初始加载的程序固化存储在计算机中,称为基本输入输出系统(BasicInputOutputSystem,BIOS)。

BIOS存储在非易失性的(non-volatile)存储器中,有时也称作只读存储器(ReadOnlyMemory,ROM)。

在早期的PC中,ROM芯片通常焊接或者套接在计算机的主板上(或者母板)。

更新BIOS意味着要更换ROM芯片。

后来,使用了ElectricallyErasableProgrammableReadOnlyMemories(EEPROMs)。

EEPROM支持使用磁盘在运行中进行更新,而不需要专门的工具。

现今您应该会更经常接触到的一种称为闪存(Flash)存储器的非易失性存储器,数码相机和存储钥匙也使用了它。

闪存存储器也支持在运行时更新BIOS。

除了控制PC的初始引导之外,现今的BIOS程序通常还允许用户设置或者检查系统中的一些配置选项。

包括检查已经安装的部件,比如RAM、硬盘驱动器、光驱(opticaldrive)、键盘、鼠标,以及可能的板载显示部件、声音部件和网络连接。

用户可以启用或者禁用某些部件。

例如,为了使用安装的声卡,板载的声音部件可能被禁用。

用户还可以选择考虑使用哪些设备来引导系统,以及是否使用口令保护系统。

要访问BIOS设置屏幕,通常需要有一个连接到系统的键盘。

当系统加电启动时,会执行PowerOnSelfTest或者POST。

在某些系统中,会简短地提示您按下一个特定的键来进入设置,否则就会进行正常引导。

在其他系统上,需要知道在调用正常引导过程之前按哪个键,因为可能没有提示,或者在先前对设置选项的定制删除了提示。

在某些系统中,除了进入BIOS设置以外,可能还会有其他选择,如图1所示。

否则,应该会看到如图2所示的BIOS概要屏幕。

图1.访问BIOS设置

图2.BIOS设置概要

以上插图是可能会看到的内容示例,不过,各个BIOS设置屏幕差异很大,所以如果看到了不同的屏幕不要感到惊讶。

图2告诉我们,闪存EEPROM(或者系统BIOS)版本号是24KT52AUS,其日期标记是2004年3月4日,而系统的当前时间是2005年6月9日。

查看制造商(IBM)的支持站点,会找到一些较新的可用BIOS版本,所以,升级这个系统的BIOS可能是个好主意。

在图2中您会注意到其他一些菜单选项。

在本教程后面的章节中我们将讨论这些选项。

不过,在开始之前,让我们先再多研究一些PC的内部工作方式。

总线、端口、IRQ和DMA。

PCI和ISA总线

外围设备(包括那些可能构建在系统板中的)通过总线与CPU通信。

当前最常见的总线类型是PeripheralComponentInterconnect(PCI)总线,它几乎已经完全取代了更早的IndustryStandardArchitecture(ISA)总线。

1984年IBMPC-AT中首次使用它,之后ISA总线有时也称为AT总线。

在从ISA到PCI总线的过渡过程中,很多系统同时包含了这两类总线的插槽,以使得ISA或PCI外围设备都能够使用。

ISA总线支持8-位和16-位设备卡,而PCI总线支持32-位设备。

还有一些也应该了解的其他总线标准。

很多系统中包括一个AcceleratedGraphicsPort(AGP)插槽,这是一个基于PCI2.1总线规范的特殊插槽,但是为图形卡所需要的高带宽和快速响应进行了优化。

它正在慢慢被更新的PCIExpress(PCI-E)所取代,后者解决了先前PCI设计中的很多限制。

在本系列的最后一篇教程中将深入了解Linux文件系统,不过,在此先介绍/proc文件系统。

这不是一个磁盘上的真实文件系统,而是一个“假的文件系统”,提供关于正在运行的系统的信息。

在这个文件系统中,文件/proc/pci包含了系统PCI总线上设备的信息。

曾经有一些关于废除这个特殊文件的讨论,因为lspci命令可以给出类似的信息。

运行cat/proc/pci命令,可以看到类似于清单1的输出。

清单1./proc/pci

PCIdevicesfound:

Bus0,device0,function0:

Hostbridge:

IntelCorp.82845G/GL[Brookdale-G]ChipsetHostBridge

(rev1).

Prefetchable32bitmemoryat0xd0000000[0xdfffffff].

Bus0,device2,function0:

VGAcompatiblecontroller:

IntelCorp.82845G/GL[Brookdale-G]Chipset

IntegratedGraphicsDevice(rev1).

IRQ11.

Prefetchable32bitmemoryat0x88000000[0x8fffffff].

Non-prefetchable32bitmemoryat0x80000000[0x8007ffff].

Bus0,device29,function0:

USBController:

IntelCorp.82801DBUSB(Hub#1)(rev1).

IRQ11.

I/Oat0x1800[0x181f].

Bus0,device29,function1:

USBController:

IntelCorp.82801DBUSB(Hub#2)(rev1).

IRQ10.

I/Oat0x1820[0x183f].

Bus0,device29,function2:

USBController:

IntelCorp.82801DBUSB(Hub#3)(rev1).

IRQ5.

I/Oat0x1840[0x185f].

Bus0,device29,function7:

USBController:

IntelCorp.82801DBUSB2(rev1).

IRQ9.

Non-prefetchable32bitmemoryat0xc0080000[0xc00803ff].

Bus0,device30,function0:

PCIbridge:

IntelCorp.82801BA/CA/DB/EBPCIBridge(rev129).

MasterCapable.Nobursts.MinGnt=4.

Bus0,device31,function0:

ISAbridge:

IntelCorp.82801DBLPCInterfaceController(rev1).

Bus0,device31,function1:

IDEinterface:

IntelCorp.82801DBUltraATAStorageController

(rev1).

IRQ5.

I/Oat0x1860[0x186f].

Non-prefetchable32bitmemoryat0x60000000[0x600003ff].

Bus0,device31,function3:

SMBus:

IntelCorp.82801DB/DBMSMBusController(rev1).

IRQ9.

I/Oat0x1880[0x189f].

Bus0,device31,function5:

Multimediaaudiocontroller:

IntelCorp.82801DBAC'97Audio

Controller(rev1).

IRQ9.

I/Oat0x1c00[0x1cff].

I/Oat0x18c0[0x18ff].

Non-prefetchable32bitmemoryat0xc0080c00[0xc0080dff].

Non-prefetchable32bitmemoryat0xc0080800[0xc00808ff].

Bus2,device8,function0:

Ethernetcontroller:

IntelCorp.82801BDPRO/100VE(LOM)Ethernet

Controller(rev129).

IRQ9.

MasterCapable.Latency=66.MinGnt=8.MaxLat=56.

Non-prefetchable32bitmemoryat0xc0100000[0xc0100fff].

I/Oat0x2000[0x203f].

您可能希望对此输出与lspci命令的输出进行比较。

后者通常在root用户的路径中,但非-root用户可能需要给出完全的路径/sbin/lspci。

在自己的系统去进行尝试。

IO端口

当CPU需要与某个外围设备通信时,它要通过一个IO端口(有时只是简单的端口)。

当CPU需要向外围设备发送数据或者控制信息时,它向某个端口写入数据。

当设备为CPU准备好了数据或者状态,CPU从某个端口去读取数据或状态。

大部分设备都拥有不止一个与之相关联的端口,通常是2的若干次幂(指数较小),比如8、16或者32。

数据传输通常是每次一个或两个字节。

设备不能共享端口,所以,如果有ISA卡,那么必须确保每个设备都有其分配到了自己的端口。

以前,这需要通过设备卡上的开关或者跳线来实现。

一些晚期的ISA卡使用了一个名为PlugandPlay(PnP)的系统,本节稍后将讨论到。

PCI卡全都有PnP配置。

在/proc文件系统中,/proc/ioports文件告诉我们关于系统中可用IO端口的信息。

运行cat/proc/ioports命令可以看到类似清单2所示的输出。

清单2./proc/ioports

0000-001f:

dma1

0020-003f:

pic1

0040-005f:

timer

0060-006f:

keyboard

0070-007f:

rtc

0080-008f:

dmapagereg

00a0-00bf:

pic2

00c0-00df:

dma2

00f0-00ff:

fpu

0170-0177:

ide1

01f0-01f7:

ide0

02f8-02ff:

serial(auto)

0376-0376:

ide1

0378-037a:

parport0

03c0-03df:

vga+

03f6-03f6:

ide0

03f8-03ff:

serial(auto)

0cf8-0cff:

PCIconf1

1800-181f:

IntelCorp.82801DBUSB(Hub#1)

1800-181f:

usb-uhci

1820-183f:

IntelCorp.82801DBUSB(Hub#2)

1820-183f:

usb-uhci

1840-185f:

IntelCorp.82801DBUSB(Hub#3)

1840-185f:

usb-uhci

1860-186f:

IntelCorp.82801DBUltraATAStorageController

1860-1867:

ide0

1868-186f:

ide1

1880-189f:

IntelCorp.82801DB/DBMSMBusController

18c0-18ff:

IntelCorp.82801DBAC'97AudioController

18c0-18ff:

IntelICH4

1c00-1cff:

IntelCorp.82801DBAC'97AudioController

1c00-1cff:

IntelICH4

2000-203f:

IntelCorp.82801BDPRO/100VE(LOM)EthernetController

2000-203f:

e100

端口编号是十六进制的(基数为16)。

肯定会发现有一些看起来很熟悉,比如键盘、计时器、并行端口(打印机)、串行端口(调制解调器)和显示器(vga+)。

将这些与清单3中给出了在PC中某些标准IO端口分配进行比较。

例如,要注意的是,在/proc/ioports中为第一个并行端口(parport0)分配的地址范围是从0378到037A,而标准中允许它(LPT!

)使用的是从378到37F。

清单3.标准I/O端口设置

1FO-1F8-HardDriveController,16-bitISA

200-20F-GameControl

210-GameI/O

220-Soundcard

278-27F-LPT2

2F8-2FF-COM2

320-32F-HardDriveController,8-bitISA

378-37F-LPT1

3B0-3BF-MonochromeGraphicsAdapter(MGA)

3D0-3DF-ColourGraphicsAdapter(CGA)

3F0-3F7-FloppyController

3F8-3FF-COM1

中断

那么,CPU如何知道最后一次输出何时完成?

或者何时有数据在等待读取?

通常,在一个状态寄存器中可以获得此信息,通过读取与某设备想关联的一个(或多个)IO端口可以访问它。

在这种情况下会出现两个问题。

首先,CPU不得不花费时间来检查状态。

其次,如果设备持有来自某处的数据,比如连接的调制解调器,那些数据必须要及时被读取,否则就可能被下一个可用的数据字节所覆盖。

不浪费多余CPU周期,并确保数据能被及时读写,这两个问题是由中断(interrupt)的概念所解决的。

中断也称为中断请求(InterruptRequests)或IRQs。

当设备中发生CPU需要知道的某事件时,设备就会发出一个中断,CPU则临时停止正在做的其他工作,来处理那件事情。

根据上一节的经验,毫无疑问关于中断的信息也保存在/proc文件系统中,在/proc/interrupts中。

运行cat/proc/interrupts命令,可以看到类似于清单4的输出。

清单4./proc/interrupts

CPU0

0:

226300426XT-PICtimer

1:

92913XT-PICkeyboard

2:

0XT-PICcascade

5:

0XT-PICusb-uhci

8:

1XT-PICrtc

9:

2641134XT-PICehci-hcd,eth0,IntelICH4

10:

0XT-PICusb-uhci

11:

213632XT-PICusb-uhci

14:

1944208XT-PICide0

15:

3562845XT-PICide1

NMI:

0

ERR:

0

这一次,中断数字是从0到15的十进制数。

同样,将这些中断与清单5所示的PC标准IRQ分配进行比较。

清单5.标准IRQ设置

IRQ0-SystemTimer

IRQ1-Keyboard

IRQ2(9)-VideoCard

IRQ3-COM2,COM4

IRQ4-COM1,COM3

IRQ5-Available(LPT2orSoundCard)

IRQ6-FloppyDiskController

IRQ7-LPT1

IRQ8-Real-TimeClock

IRQ9-RedirectedIRQ2

IRQ10-Available

IRQ11-Available

IRQ12-PS/2Mouse

IRQ13-MathCo-Processor

IRQ14-HardDiskController

IRQ15-Available

最初,每个设备都有自己的私有IRQ。

做为示例,注意,在清单5中,IRQ5通常用于声卡或者第二个并行端口(打印机)。

如果两个都要使用,那么不得不去寻找一个能够配置的卡(通常是通过硬件跳线设置)来使用另一个IRQ,比如IRQ15。

目前的PCI设备是共享IRQ的,所以,当某个设备中断CPU时,会有一个中断处理程序检查它并判断那个中断是否为它所用的中断,如果不是,则将它传递给链中的下一个处理程序。

清单4和5并没有向我们展示这种共享。

在后面的教程中我们将会学习grep命令,不过,现在我们可以使用它来过滤dmesg命令的输出,来查看关于IRQ的引导消息,如清单6所示。

在此突出显示了共享的中断。

清单6.引导过程中发现的中断

[ian@lyrebirdian]$dmesg|grep-iirq

PCI:

Discoveredprimarypeerbus01[IRQ]

PCI:

UsingIRQrouterPIIX[8086/24c0]at00:

1f.0

PCI:

FoundIRQ5fordevice00:

1f.1

PCI:

SharingIRQ5with00:

1d.2

Serialdriverversion5.05c(2001-07-08)withMANY_PORTSMULTIPORT

SHARE_IRQSERIAL_PCIISAPNPenabled

ttyS0at0x03f8(irq=4)isa16550A

ttyS1at0x02f8(irq=3)isa16550A

PCI:

FoundIRQ5fordevice00:

1f.1

PCI:

SharingIRQ5with00:

1d.2

ICH4:

not100%nativemode:

willprobeirqslater

ide0at0x1f0-0x1f7,0x3f6onirq14

ide1at0x170-0x177,0x376onirq15

PCI:

FoundIRQ11fordevice00:

1d.0

PCI:

SharingIRQ11with00:

02.0

usb-uhci.c:

USBUHCIatI/O0x1800,IRQ11

PCI:

FoundIRQ10fordevice00:

1d.1

usb-uhci.c:

USBUHCIatI/O0x1820,IRQ10

PCI:

FoundIRQ5fordevice00:

1d.2

PCI:

SharingIRQ5with00:

1f.1

usb-uhci.c:

USBUHCIatI/O0x1840,IRQ5

PCI:

FoundIRQ9fordevice00:

1d.7

ehci-hcd00:

1d.7:

irq9,pcimemf885d000

parport0:

irq7detected

PCI:

FoundIRQ9fordevice02:

08.0

PCI:

FoundIRQ9fordevice02:

08.0

parport0:

irq7detected

PCI:

FoundIRQ11fordevice00:

02.0

PCI:

SharingIRQ11with00:

1d.0

PCI:

FoundIRQ9fordevice00:

1f.5

PCI:

SharingIRQ9with00:

1f.3

i810:

IntelICH4foundatIO0x18c0and0x1c00,MEM0xc0080c00and

0xc0080800,IRQ9

DMA

先前提及的与外围设备通过IO端口进行的通信,每次传递一个或者两个字节。

对于快速的设备,服务中断会用掉大量CPU处理能力。

更快的方法是使用直接内存访问(DirectMemoryAccess,DMA),使用很少IO指令告诉设备到RAM中哪个位置去读或写数据,然后DMA控制器提供RAM和外围设备之间数据实际传输的硬件管理。

谁可以猜出在哪里可以找到关于正在使用的DMA通道的信息,请举手。

如果您说它是在/pr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1