七十一、什么是shell
操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
Shell基本上是一个命令解释器,类似于DOS下的command.com。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型
在UNIX中主要有两大类shell
Bourne shell (包括 sh, ksh, and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
最初的UNIX shell是由Stephen R. Bourne于20世纪70年代中期在新泽西的AT&T贝尔实验室编写的,这就是Bourne shell。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。
C Shell
Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
Korn Shell
有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。
Bourne Again Shell (bash)
bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat, Slackware, Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系统下缺省的shell:
AIX 下是Korn Shell.
Solaris和FreeBSD缺省的是Bourne shell.
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.
【TIP】
#!/usr/bin/sh的用途
shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本脚本是用的哪种shell写的,执行时系统应该用哪种shell来解释执行它。
附:LINUX系统的shell原理
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。
shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。
当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。
一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。
当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。
看一下shell是如何工作的。
$ make work
make:***No rule to make target ‘work’. Stop.
$
注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后,shell便执行它。本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。
在例子中,shell会寻找名为make的程序,并以work为参数执行它。make是一个经常被用来编译大程序的程序,它以参数作为目标来进行编译。在“make work”中,make编译的目标是work。因为make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。
另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序,就会给出错误信息。例如,如果用户键入:
$ myprog
bash:myprog:command not found
$
可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。
七十二、什么是数据包
“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。有人说,局域网中传输的不是“帧”(Frame)吗?没错,但是TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。
名词解释:OSI(Open System Interconnection,开放系统互联)模型是由国际标准化组织(ISO)定义的标准,它定义了一种分层体系结构,在其中的每一层定义了针对不同通信级别的协议。OSI模型有7层,17层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI模型在逻辑上可分为两个部分:低层的14层关注的是原始数据的传输;高层的57层关注的是网络下的应用程序。
我们可以用一个形象一些的例子对数据包的概念加以说明:我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是不行的。必须把内装产品的包装盒放到一个邮局指定的专用纸箱里,这样才能够邮寄。这里,产品包装盒相当于数据包,里面放着的产品相当于可用的数据,而专用纸箱就相当于帧,且一个帧中只有一个数据包。
“包”听起来非常抽象,那么是不是不可见的呢?通过一定技术手段,是可以感知到数据包的存在的。比如在Windows 2000 Server中,把鼠标移动到任务栏右下角的网卡图标上(网卡需要接好双绞线、连入网络),就可以看到“发送:××包,收到:××包”的提示。通过数据包捕获软件,也可以将数据包捕获并加以分析。
就是用数据包捕获软件Iris捕获到的数据包的界面图,在此,大家可以很清楚地看到捕获到的数据包的MAC地址、IP地址、协议类型端口号等细节。通过分析这些数据,网管员就可以知道网络中到底有什么样的数据包在活动了。
附:数据包的结构
数据包的结构非常复杂,不是三言两语能够说清的,在这里我们主要了解一下它的关键构成就可以了,这对于理解TCP/IP协议的通信原理是非常重要的。数据包主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成。
数据包的结构与我们平常写信非常类似,目的IP地址是说明这个数据包是要发给谁的,相当于收信人地址;源IP地址是说明这个数据包是发自哪里的,相当于发信人地址;而净载数据相当于信件的内容。
正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。理解数据包,对于网络管理的网络安全具有至关重要的意义。
七十三、什么是加壳和脱壳
加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。现在的CPU都很快,所以这个解压过程你看不出什么东东。软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。当你加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。因为有的时候程序会过大,需要压缩。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护你的程序数据的完整性。不被修改或者窥视你程序的内幕。
脱壳,是完全破除压缩后软件无法编辑的限制,去掉头部的解压缩指令,然后解压出加壳前的完整软件。这样,你就可以对其“动刀”了。呵呵~~当然是和加壳相反。
七十四、 什么是钩子函数
WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,WINDOWS都将调用该函数。一共有两种类型的钩子:局部的和远程的。
局部钩子仅钩挂您自己进程的事件。
远程的钩子还可以将钩挂其它进程发生的事件。远程的钩子又有两种:
基于线程的 它将捕获其它进程中某一特定线程的事件。简言之,就是可以用来观察其它进程中的某一特定线程将发生的事件。
系统范围的 将捕捉系统中所有进程将发生的事件消息。 当您创建一个钩子时,WINDOWS会先在内存中创建一个数据结构,该数据结构包含了钩子的相关信息,然后把该结构体加到已经存在的钩子链表中去。新的钩子将加到老的前面。当一个事件发生时,如果您安装的是一个局部钩子,您进程中的钩子函数将被调用。如果是一个远程钩子,系统就必须把钩子函数插入到其它进程的地址空间,要做到这一点要求钩子函数必须在一个动态链接库中,所以如果您想要使用远程钩子,就必须把该钩子函数放到动态链接库中去。当然有两个例外:工作日志钩子和工作日志回放钩子。这两个钩子的钩子函数必须在安装钩子的线程中。原因是:这两个钩子是用来监控比较底层的硬件事件的,既然是记录和回放,所有的事件就当然都是有先后次序的。所以如果把回调函数放在DLL中,输入的事件被放在几个线程中记录,所以我们无法保证得到正确的次序。故解决的办法是:把钩子函数放到单个的线程中,譬如安装钩子的线程。
钩子一共有14种,以下是它们被调用的时机:
WH_CALLWNDPROC 当调用SendMessage时
WH_CALLWNDPROCRET 当SendMessage的调用返回时
WH_GETMESSAGE 当调用GetMessage 或 PeekMessage时
WH_KEYBOARD 当调用GetMessage 或 PeekMessage 来从消息队列中查询WM_KEYUP 或 WM_KEYDOWN 消息时
WH_MOUSE 当调用GetMessage 或 PeekMessage 来从消息队列中查询鼠标事件消息时
WH_HARDWARE 当调用GetMessage 或 PeekMessage 来从消息队列种查询非鼠标、键盘消息时
WH_MSGFILTER 当对话框、菜单或滚动条要处理一个消息时。该钩子是局部的。它时为那些有自己的消息处理过程的控件对象设计的。
WH_SYSMSGFILTER 和WH_MSGFILTER一样,只不过是系统范围的
WH_JOURNALRECORD 当WINDOWS从硬件队列中获得消息时
WH_JOURNALPLAYBACK 当一个事件从系统的硬件输入队列中被请求时
WH_SHELL 当关于WINDOWS外壳事件发生时,譬如任务条需要重画它的按钮.
WH_CBT 当基于计算机的训练(CBT)事件发生时
WH_FOREGROUNDIDLE 由WINDOWS自己使用,一般的应用程序很少使用
WH_DEBUG 用来给钩子函数除错
附:如何使用钩子函数(接收到字母A按下时,窗体由最小化弹出的完整的代码)
Public Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Public Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Public Const WH_KEYBOARD = 2
Public Const KEY_WINSTART = 91
Public Const KEY_WINMENU = 93
Global hHook As Long
Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode >= 0 Then
If wParam = KEY_WINMENU Or wParam = KEY_WINSTART Then
If (lParam And &HC0000000) = 0 Then
MsgBox "", , ""
KeyboardProc = 1
Exit Function
End If
End If
End If
KeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
Option Explicit
Private Sub Command1_Click()
form2.Show 1
End Sub
Private Sub form_Load()
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, 0&, App.ThreadID)
Me.Show
End Sub
Private Sub form_Unload(Cancel As Integer)
Call UnhookWindowsHookEx(hHook)
End Sub
七十五、什么是扫描
如果你的机子连入互联网,那么你就有被扫描的危险。这里要给大家介绍的就是:什么是扫描,为什么有人要扫描,以及有趣的秘密握手机制和不同的扫描技术。
扫描一个系统或者一个网络,通常是为了发现这个被扫描的对象在提供哪些服务。扫描者可以分成两种类型,一种是“好人”:比如系统管理员和网络安全顾问,他们扫描的目的纯粹是外了找出系统的缺陷或漏洞,进而想办法弥补。当然另一类的就只能是“坏人”了,比如有“脚本小孩”或者更“坏”的,他们的目的是为了找出漏洞,进而实施攻击。
扫描就象是去一栋公寓然后挨家敲门看谁在家。你是否在运行一个WEB服务器,或者邮件服务器、BIND、Telnet、FTP、RPC等等。这些问题的答案扫描都可以给出。遗憾的是,这些答案通常很明显的暴露在外,使得那些技术不是很高明的人可以轻而易举的进去“参观”。
当然,我这里指的并非是那些极为高明,技术顶尖的黑客,我指的是那些只知道如何从网络上下载文件或收发EMAIL的大学生,当然中学生也不例外,他们通常被称为“脚本孩子”,因为他们并没有高深的技术知识作后盾,仅仅是通过运行别人写出的脚本程序来扫描或攻击别人的系统。 除了这些可以随意下载的脚本外,攻击者通常还会下载一个叫做端口扫描器的软件工具。这种工具较旧的比如有ISS,较新的则如NMAP2.54的BETA22.1等。如果攻击者可以在你的系统中找到一个明显的漏洞,那么完了,你的系统很快将会属于他了,而且,扫描并不犯法,它并不是抢劫,你还无处申诉。
如今,“坏人”的扫描通常会遇到这样的问题,就是他们扫描过的系统往往会记录扫描行为所利用的每一个连接信息,或许扫描的人的确很浅薄,没有意识到在他们扫描过程中会在系统中留下“犯罪”的记录,但稍微留意的人都会想法抹除他们的犯罪记录。有很多方法可以达到这个目的。比如,许多黑客通过他预先攻击过的主机来扫描远程主机,这样,即使被扫描的主机记录了这一信息,逆向搜索的人能知道的也仅限于黑客预先攻击过的主机,真正的黑客信息并不能找到。这里介绍的秘密扫描就属于这样一种扫描方式,它使得逆向搜索变的更为困难,因为它的工作机制甚至不需要建立连接。
为了理解什么是秘密扫描以及它的工作原理,你首先应该对TCP/IP数据包的内容以及TCP的秘密握手机制有所了解。除了携带发送和接收方的IP地址和端口号外,TCP的报头还包含一个序列号和一些起着特殊作用的标记位。这里仅提到其中的三个标记位:SYN,ACK和FIN。因为它们三个的作用与这里讨论的主题密切相关。
当系统间彼此说“HELLO”或道“GOODBYE”时,就会用到所谓的握手机制。让我们先看看如何利用TCP/IP的握手机制来建立一个连接。本文中所提到的连接均指的是发生在两个IP地址间,有一定的端口号的连接。当你想网上冲浪,或者想TELNET到远程主机时,三次握手机制就会为你生成一个这样的连接。
它的工作原理大致如下:握手的第一步,一台计算机首先请求和另外一台计算机建立连接,它通过发送一个SYN请求来完成,也即将前面提到的SYN标记位置位。消息的内容就象是说:“HI,听着,我想和你的机子端口X上的服务说话,咱们先同步一下,我用序列号Y来开始连接。” 端口X表示了连接的服务类型。至于哪些端口支持哪些类型的服务,可以参考UNIX下面的/etc/services文件。两台计算机间的每条信息都有一个由发送方产生的序列号,序列号的使用使得双方知道他们之间是同步的,而且还可以起到丢失信息时或接收顺序错误时发送警告信息的作用。
握手的第二步,接收到SYN请求的计算机响应发送来的序列号,它会将ACK标记位置位,同时它也提供自己的序列号,这个做法类似于说:OH,亲爱的,我已经收到了你的号码,这是我的号码。
到现在为止,发起连接建立请求的计算机认为连接已经建立起来,然而对方却并不这样认为,对方还要等到它自己的序列号有了应答后才能确认连接建立起来。因此现在的状态可以称为“半连接”。如果发起连接请求的计算机不对收到的序列号作出应答,那么这个连接就永远也建立不起来,而正因为没有建立连接,所以系统也不会对这次连接做任何记录。
握手的第三步,发起连接请求的计算机对收到的序列号作出应答,这样,两台计算机之间的连接才算建立起来。
两台计算机说”GOODBYE“时的握手情况与此类似:当一台计算机说没有更多的数据需要发送了,它发送一个FIN信号(将FIN标记位置位)通知另一端,接收到FIN的另一端计算机可能发送完了数据,也可能没发送完,但它会对此作出应答,而当它真正完成所有需要发送的数据后,它会再发送一个自己的FIN信号,等对方对此作出应答后,连接才彻底解除。
FIN秘密扫描的工作原理就是向它的目的地一个根本不存在的连接发送FIN信息,如果这项服务没有开,那么目的地会响应一条错误信息,但如果是有这项服务,那么它将忽略这条消息。这样,扫描者的问题“你运行X吗”就有了答案,而且还不会在系统中有所记录。
还有两种其他的扫描手段值得注意。一种叫做圣诞树扫描,因为,它将所有的标记位都置位(不仅仅是SYN,ACK,FIN);另一种叫做空扫描,因为所有的标记位都被复位。这些秘密的扫描行为将会根据接收端所运行的平台不同而产生不同的错误响应信息。
现代的端口扫描工具,象NMAP就是利用这样的原理来检测在一个系统上有那些服务是开着的。NMAP不光是最著名的,同时也是最出色的端口扫描工具。它被系统管理人员和“坏人”们广泛的应用,有关NMAP的介绍,大家可以通过搜索引擎去查找相关的资料。
七十六、电脑出错提示注解
CMOS battery failed
CMOS电池失效。一般出现这种情况就是说明给主板CMOS供电的电池已经快没电了,需要朋友们及时更换主板电池。
CMOS check sum error-Defaults loaded
CMOS执行全部检查时发现错误,要载入系统预设值。一般来说出现这句话有两种解释:一种是说主板CMOS供电电池快要没电了,朋友们可以先换个电池试试看;第二种解释是如果更换电池后问题还是没有解决,那么就说明CMOS RAM可能有问题了,如果主板没过一年的话就可以到经销商处换一块主板,要是过了一年就让经销商送回生产厂家修一下吧!
Floppy Disk(s) fail 或 Floppy Disk(s) fail(80) 或Floppy Disk(s) fail(40)
无法驱动软盘驱动器。系统提示找不到软驱,首先要看看软驱的电源线和数据线有没有松动或者是接反,最好是是把软驱放到另外一台机子上试一试,如果这些都不行,那么只好再买一个了,好在目前市场中的软驱还不算贵。
Hard disk install failure
硬盘安装失败。这是因为硬盘的电源线或数据线可能未接好或者硬盘跳线设置不当引起的。朋友们可以检查一下硬盘的各根连线是否插好,看看同一根数据线上的两个硬盘的跳线设置是否一样。如果一样,只要将两个硬盘的跳线设置不一样即可(一个设为Master,另一个设为Slave)。
Hard disk(s) diagnosis fail
执行硬盘诊断时发生错误。出现这个问题一般就是硬盘内部本身出现硬件故障了,你可以把硬盘放到另一台机子上试一试,如果问题还是没有解决,只能去修一下了。如果硬盘还在包换期内的话,最好还是赶快去换一块!
Hardware Monitor found an error,enter POWER MANAGEMENT SETUP for details,Press F1 to continue,DEL to enter SETUP
监视功能发现错误,进入POWER MANAGEMENT SETUP查看详细资料,或按F1键继续开机程序,按DEL键进入CMOS设置。现在好一些的主板都具备有硬件的监视功能,用户可以设定主板与CPU的温度监视、电压调整器的电压输出准位监视和对各个风扇转速的监视,当上述监视功能在开机时发觉有异常情况,那么便会出现这段话,这时朋友们可以进入CMOS设置选择POWER MANAGEMENT SETUP,在右面的**Fan Monitor**、**Thermal Monitor**和**Voltage Monitor**查看是哪部分监控发出了异常情况,然后再加以解决。
Keyboard error or no keyboard present
键盘错误或者未接键盘。检查一下键盘与主板接口是否接好,如果键盘已经接好,那么就是主板键盘口坏了,主板如尚在包修期内,朋友们可以找经销商或主板厂家进行解决。
Memory test fail
内存检测失败。重新插拔一下内存条,看看是否能解决,出现这种问题一般是因为混插的内存条互相不兼容而引起的,有条件的话去换一条吧!如果使用的只是一根内存条,那么就一定是内存条本身有问题,还是赶快去换一条的好!
Override enable-Defaults loaded
当前CMOS设定无法启动系统,载入BIOS中的预设值以便启动系统。一般是CMOS内的设定出现错误,朋友们只要进入CMOS设置后选择LOAD SETUP DEFAULTS载入系统原来的设定值然后重新启动即可解决这一问题。
Press ESC to skip memory test
正在进行内存检查,可按ESC键跳过。这是因为在CMOS内没有设定跳过存储器的第二、三、四次测试,开机就会执行四次内存测试,当然你也可以按ESC键结束内存检查,不过每次开机后都要这样做实在太麻烦了,你可以进入CMOS设置后选择BIOS FEATURES SETUP,将其中的Quick Power On Self Test设为Enabled开启,存储后重新启动即可解决。
Resuming from disk,Press TAB to show POST screen
从硬盘恢复开机,按TAB显示开机自检画面。这是因为市场中有的主板在BIOS设置中提供了Suspend to disk(将硬盘挂起)功能,如果我们使用了Suspend to disk的方式来关机,那么我们在下次开机时,屏幕上就会显示此提示消息的。
Secondary slave hard fail
检测从盘失败。可能是CMOS设置不当引起的。比如说IDE设备中并没有连接有从盘,但在CMOS里设置有从盘,那么就会出现这个错误。如出现这个错误,朋友们可以进入CMOS设置,选择IDE HDD AUTO DETECTION进行硬盘自动侦测。如果使用上述方法问题没有解决,那就可能是硬盘的电源线、数据线未接好或者硬盘跳线设置不当。
Abort,Retry, Ignore,fail?
退出,重试,忽略,取消?不能识别给出的命令、或发生了使命令不能执行的磁盘或设备错误,可能是磁盘损坏或软驱门没关。按A键 彻底终止,并回到DOS提示符;按R键 重复执行该命令;按I键 继续处理,忽略错误,非常冒险,建议不要采用;按F键 不执行有问题的命令,继续下面的处理。
Access Denied
拒绝存取。试图打开一个标记为只读、存储在写保护的磁盘上或锁定在网络上的文件。如果在子目录上使用"Type"命令,或在文件上使用"CD(chdir)"命令,也会产生这个信息。应该用"Attrib"命令删除文件的只读状态或从磁盘中去掉写保护,然后再试试。
Bad Command or file name
错误的命令或文件名,不能识别输入的命令。应该检查以确保输入命令的正确性,确认在指定目录或用Path命令指定的搜索路径上能找到命令文件。
Boot error
引导错误。在引导时检测不到应有的外设。应该检查计算机的设置参数,如用户自己不能解决这个问题,请找专门维修人员。
Cannot find system files
不能找到系统文件。试图从没有包含系统文件的驱动器上装入操作系统。应该用:"sys"命令将系统文件复制到根目录中。除非真的是不能恢复系统文件了,才可用Format/s命令重新格式化磁盘。
Cannot load command,system halted
不能加载command,系统中止应用程序覆盖了内存中的所有或部分Command.com。应该重新引导计算机,检查被应用程序修改过的数据是否完整,如有必要可将Command.com复制到子目录,这样退出应用程序时DOS可在这儿找到Command.com。
Cannot read file allocation table
不能读到文件分配表。文件分配表已坏。如仍能找到一些数据,那么将它们都备份到一张空盘中,也可利用Chkdsk命令修复文件分配表,如需要,可重新格式化磁盘。如果问题重复发生,那么应该修理驱动器或更换驱动器。
Divide Overflow
分配溢出,除零错误。程序可能编写有错误,未调试好,也可能是与内存中的其它程序冲突。检查内存中的其它程序或不再使用此程序。
Drive Not Ready Error
驱动器未准备好。没有该驱动器或未放磁盘。检查磁盘或更换磁盘。
Duplicate File Name or File Not Found
文件重名或未找到。给文件起名字时与已有的文件重名了或是在对文件操纵时根本就没这条文件。更换名字或是检查文件名的拼写。
Error loading operating system
引导操作系统错误。操作系统文件找不到或已损坏。用SYS命令将操作系统文件拷贝到该驱动器,如需要,可将config.sys和autoexec.bat文件拷贝到根目录中。如不能恢复系统文件,那么从软盘引导系统,备份数据,用Format/s命令重新格式化磁盘。
EXEC failure
文件执行失败。应用程序的可执行文件包含影响处埋的错误,或者由于早已打开了太多的文件而不能打开该文件,文件可能与当前的DOS版本不兼容。检查DOS的版本,如版本正确,可通过编辑Config.sys中的Files命令来解决这个问题。
File allocation table bad
文件分配表已损坏。很多原因,例如病毒发作,突然停机,不正常关机等都能破坏分配表。将所能找到的数据备份到空盘中,不要覆盖以前的备份。也许可通过引用Chkdsk命令来解决这个问题。如需要,重新格式化软盘,如问题反复出现,那么将驱动器送去修理。
File cannot be copied onto itself
文件不能拷贝成自己。你在源文件和目标文件中指定了相同的文件,或是忘了写文件名。按需要改变源或目标文件,然后再试试看。
File creation Error
文件建立错误。可能是在磁盘中没有足够的空间为用户创建文件、想创建的文件早已存在,且为只读文件或是想利用早已存在的文件名来更换文件的名字。可以换个盘,或使用别的目标名、别的目标位置,或者使用Attrib命令除去文件的只读属性。
File not found
文件未找到。在当前目录或由Path、Append命令指定的任一目录中找不到文件,或者指定的目录是空的。检查文件名的拼法和位置,如需要可以改变搜索路径。
General failure
通用失败。DOS不能判断错误的原因,一般是因为驱动器中的磁盘未格式化,或格式化成非DOS系统。应该重新格式化磁盘。
Incorrect DOS version
DOS版本不符。输入了一个不同版本的外部命令。用setver设置版本或者使用正确的可执行文件。
Insufficient Disk Space
磁盘空间不足。磁盘中已没有可用的空间来拷贝文件或创建文件。可以删除一些无用的文件或更换一个大一点的磁盘。
Insufficient memory
内存不足。没有足够内存来处理用户所输入的命令,一般指基本内存。应删去一些内存驻留的文件或对内存做优化管理。还可以给系统增加更多的内存,以适应应用程序。
Invalid directory
非法目录。输入了无效的目录名或不存在的目录名。检查目录的拼法。
Invalid Drive Specification
无效的驱动器定义。根本没有这个驱动器,可能是拼写错误。若是不能指定光驱,可能是没有安装驱动程序。重新安装光驱。
Invalid filename or file not found
无效的文件名或文件未找到。输入的文件名包含了无效字符或通配符,或者将保留设备名用作文件名。利用不同的文件名试试。
Invalid Media,track 0 Bad or Unusable
无效的格式,0磁道损坏或不可用。一般是磁盘损坏。更换磁盘。
Invalid parameter
无效的参数。在命令行中没有指定正确的参数、或者有重复、禁止的参数。检查命令输入时的拼写或语法。
Invalid partition table
无效的分区表。硬盘分区信息中有错误。应备份所能找到的数据,运行Fdisk来重新设置硬盘分区。
Invalid path,not directory,or directory not empty
无效的路径、非目录或目录非空。系统不能定位指定的目录,或者用户输入了文件名来代替目录名,或者目录中包含文件(或子目录),不能被删除。检查目录名的拼法,如果目录为空,那么它可能包含隐含文件,使用Dir/ah命令来显示任何可能的隐含文件,用attrib改变属性,删除之。
Invalid syntax
无效的语法。系统不能处理用户输入的语法格式。应查阅正确的文件格式再试试。
No fixed disk Present
没有硬盘。系统不能检测到硬盘的存在。应检查设置的驱动器类参数,如果不能解决这个问题,那么应该送去修理。
Non-System Disk or Disk Error
非系统盘或磁盘错误。系统在当前盘中找不到系统文件。应插入包含系统文件的磁盘,或者重新引导计算机。
Not enough memory
内存不足。
NOT READY,READING DRIVE X
驱动器X未准备好。在指定的驱动器中没有盘或门没关。插入磁盘到指定驱动器或关上驱动器门。
Program too big to fit in memory
程序太大不能载入内存。参见Insufficient memory。
Required Parameter missing
缺少必要的参数。参见Invalid Parameter。
Too many open files
打开的文件太多。超过系统规定的打开文件数目。应在Config.sys文件中用Files命令增加最大数目,并重新引导计算机。
Unrecognized command in CONFIG.SYS
config.sys中有不可辨认的命令。在引导系统时,不能识别Config.sys文件中的命令,应编辑config.sys文件,修正无效的行。
Write fault error
写失败错误。系统不能在磁盘上写数据。将磁盘取下再重新插好试试,仍然不行则运行Chkdsk或Scandisk,如磁盘不能恢复,扔掉它。
Write protect error
写保护错误。磁盘上有写保护,取下磁盘,去掉写保护即可。
Auxiliary device failure(辅助设备出现故障)
触摸板或外部PS/2鼠标可能出现故障。如果你仅使用外部鼠标,请检查连接处是否松动或有不正确连接的现象。如果问题仍然存在,请启用"Pointing Device"(定点设备)选项。
Bad command or file name(错误的命令或文件名)
输入的命令不存在,或者不在指定的路径中。确保输入了正确的命令、在正确的位置留出了空格和使用了正确的路径名。
Cache disabled due to failure(高速缓存出现故障被禁用)
微处理器内部的主高速缓存出现故障。
CD-ROM drive controller failure 1(CD-ROM驱动器控制器故障 1)
CD-ROM驱动器无法对计算机发出的命令作出反应。关闭计算机,然后从介质托架连接器中断开CD-ROM驱动器的连接。重新启动计算机,然后再次关闭计算机,将CD-ROM驱动器重新连接至计算机,然后验证介质托架电缆是否连接至CD-ROM驱动器背面。重新启动计算机即可。
Data error(数据错误)
软盘或硬盘驱动器无法读取数据。运行适当的公用程序检查软盘驱动器或硬盘驱动器上的文件结构。
Decreasing available memory(可用内存正在减少)
一个或多个内存模块可能出现故障或插接不正确。在升级插槽中重置内存模块。如果问题仍然存在,请从升级插槽中卸下内存模块。
Disk C:failed initialization(磁盘 C:初始化失败)
硬盘驱动器初始化失败。卸下并重置硬盘驱动器,然后重新启动计算机。如果问题仍然存在,请从诊断程序软盘中引导系统,然后运行"Hard-Disk Drive"(硬盘驱动器)检测程序。
Diskette drive 0 seek failure(软盘驱动器 0 寻道失败)
电缆可能已松动,或者系统配置信息可能与硬件配置不匹配。检查并重置软盘驱动器电缆。如果问题仍然存在,请运行 Dell 诊断程序中的"Diskette Drive"(软盘驱动器)检测程序,并检查系统设置程序中相应驱动器的设置是否正确("Diskette Drive A"[A 软盘驱动器] 或"Diskette Drive B"[B 软盘驱动器])。
Diskette read failure(读取软盘失败)
电缆可能已松动,或者软盘可能出现故障。如果软盘驱动器访问指示灯可以亮起,请尝试使用其它软盘。
Diskette subsystem reset failed(软盘子系统重设失败)
软盘驱动器控制器可能出现故障。
Diskette write-protected(软盘已写保护)
由于软盘已启用写保护,操作可能无法完成。将写保护弹片向上滑动。
Drive not ready(驱动器未准备就绪)
软盘驱动器中没有软盘,或者驱动器托架中没有硬盘驱动器。继续操作之前,请在软盘驱动器中装入软盘或在托架中安装硬盘驱动器。在软盘驱动器中装入软盘,或者将软盘推入软盘驱动器直至弹出按钮向外弹出,或者在驱动器托架中安装硬盘驱动器。
Error reading PCMCIA card(读取 PCMCIA 卡错误)
计算机无法识别PC卡。重新插接此卡,或者尝试使用另一张已知可以正常工作的 PC卡。
Extended memory size has changed(已更改扩展内存大小)
NVRAM中记录的内存容量与计算机中安装的内存不符。重新启动计算机即可。
Gate A20 failure(A20 门电路故障)
安装的某个内存模块可能松动。在升级插槽中重置内存模块。如果问题仍然存在,请从升级插槽中卸下内存模块。
General failure(通用故障)
操作系统无法执行命令。此信息后面通常会有特定的信息,例如,Printer out of paper(打印机纸张用尽)。
Hard-disk drive configuration error(硬盘驱动器配置错误)
计算机无法识别驱动器的类型。关闭计算机、卸下驱动器并从引导软盘引导计算机,然后再次关闭计算机、重新安装驱动器并重新引导计算机。
Hard-disk drive controller failure 0(硬盘驱动器控制器故障 0)
硬盘驱动器无法对计算机发出的命令作出反应。关闭计算机、卸下驱动器并从引导软盘引导计算机,然后再次关闭计算机、重新安装驱动器并重新启动计算机。
Hard-disk drive failure(硬盘驱动器出现故障)
硬盘驱动器无法对计算机发出的命令作出反应。关闭计算机、卸下驱动器并从引导软盘引导计算机,然后再次关闭计算机、重新安装驱动器并重新启动计算机即可。
Hard-disk drive read failure(硬盘驱动器读取出现故障)
硬盘驱动器可能出现故障。关闭计算机、卸下驱动器并从引导软盘引导计算机,然后再次关闭计算机、重新安装驱动器并重新启动计算机。
Invalid configuration information-please run System Setup program(无效的配置信息 - 请运行系统设置程序)
系统配置信息与硬件配置不匹配,此信息最有可能在安装内存模块之后出现。在系统设置程序中纠正相应的选项。
Keyboard clock line failure(键盘时钟线路出现故障)
电缆或连接器可能已松动,或者键盘出现故障。请运行 Dell 诊断程序中的"Keyboard Controller"(键盘控制器)检测程序。
Keyboard controller failure(键盘控制器出现故障)
电缆或连接器可能已松动,或者键盘出现故障。重新引导计算机,在引导期间不要触碰键盘或鼠标。
Keyboard data line failure(键盘数据线路出现故障)
电缆或连接器可能已松动,或者键盘出现故障。请运行 Dell 诊断程序中的"Keyboard Controller"(键盘控制器)检测程序。
Keyboard stuck key failure(键盘上的键被卡住)
如果你正在使用外部键盘或小键盘,则可能是电缆或连接器松动,也可能是键盘出现故障。如果你使用的是集成键盘,则可能是键盘出现故障。计算机引导期间,你可能按下了集成键盘或外部键盘上的按键。
Memory address line failure at address, read value expecting value(定址、读取所需的值时,内存地址线路出现故障)
安装的某个内存模块可能出现故障或插接不正确。在升级插槽中重置内存模块。如果问题仍然存在,请从升级插槽中卸下内存模块。
Memory allocation error(内存分配错误)
你尝试运行的软件与操作系统、另一个应用程序或公用程序发生冲突。关闭计算机并等待30秒,然后重新启动。
Memory data line failure at address, read value expecting value(定址、读取所需的值时,内存数据线路出现故障)
安装的某个内存模块可能出现故障或插接不正确。在升级插槽中重置内存模块。如果问题仍然存在,请从升级插槽中卸下内存模块。
Memory double word logic failure at address,read value expecting value
(定址、读取所需的值时,内存双字逻辑出现故障)
Memory odd/even logic failure at address, read value expecting value
(定址、读取所需的值时,内存奇/偶逻辑出现故障)
Memory write/read failure at address, read value expecting value
(定址、读取所需的值时,内存读/写出现故障)
No boot device available(无可用的引导设备)
计算机无法找到软盘或硬盘驱动器。如果软盘驱动器是你的引导设备,请确保驱动器中已插入一个可引导软盘。如果将硬盘驱动器用作引导设备,请确保已将其安装、正确插接并分区为引导设备。
No boot sector on hard-disk drive(硬盘驱动器上无引导扇区)
操作系统可能已损坏。重新安装操作系统,请参阅随操作系统附带的说明文件。
No timer tick interrupt(无计时器嘀嗒信号中断)
主机板上的芯片可能出现故障。
Non-system disk or disk error(非系统磁盘或磁盘错误)
A驱动器中的软盘或你的硬盘驱动器中未安装可引导操作系统的文件。如果你尝试从软盘引导,请更换另一张具有可引导操作系统的软盘。
Not a boot diskette(不是引导软盘)
软盘上无操作系统。使用一张包含操作系统的软盘引导系统。
Optional ROM bad checksum(可选ROM校验和错误)
可选ROM出现明显错误。
Sector not found(未找到扇区)
操作系统无法找到软盘或硬盘驱动器上的某个扇区。你的软盘或硬盘驱动器上可能有坏扇区或损坏的FAT。运行相应的公用程序,检查软盘或硬盘驱动器上的文件结构。如果大量的扇区出现故障,请备份数据(如果有可能),然后重新格式化软盘或硬盘驱动器。
Seek error(寻道错误)
操作系统无法找到软盘或硬盘驱动器上的特定磁道。如果错误与软盘驱动器有关,请尝试使用另一张软盘。
Shutdown failure(关闭系统失败)
主机板上的芯片可能出现故障。运行Dell诊断程序中的"System Set"(系统设置)检测程序。
Time-of-day clock lost power(计时时钟电源中断)
存储在NVRAM中的数据已损坏。将计算机连接至电源插座,为电池充电。如果充电后问题仍然存在,请尝试恢复数据。要恢复数据,请按<Fn><F1>组合键进入系统设置程序,然后立即退出。如果此信息再次出现,请致电Dell寻求技术帮助。
Time-of-day clock stopped(计时时钟停止)
维持NVRAM中数据的备用电池的电能可能已用尽。将计算机连接至电源插座,为电池充电。
Time-of-day not set-please run the System Setup program(未设置时间 - 请运行系统设置程序)
存储在系统设置程序中的时间或日期与系统时钟不符。纠正"Date"(日期)与"Time"(时间)选项的设置。
Timer chip counter 2 failed(计时器芯片计数器2出现故障)
主机板上的芯片可能出现故障。运行 Dell 诊断程序中的"System Set"(系统设置)检测程序。
Unexpected interrupt in protected mode(保护模式中出现意外中断)
键盘控制器可能出现故障,或者安装的某个内存模块松动。运行Dell诊断程序中的"System Memory"(系统内存)检测程序和"Keyboard Controller"(键盘控制器)检测程序。
Warning:Battery is critically low(警告:电池电量过低)
电池中的电量即将耗尽。更换电池,或者将计算机连接至电源插座。否则,请激活状态保持模式或关闭计算机。