• BIOS控制着什么 熟悉计算机的朋友都知道BIOS这个概念,我们也会经常听到老鸟解决系统故障时候重复的 那些话语:“先清除一下CMOS”或者“进入BIOS默认设置”等等。普通人眼里,BIOS似乎 就是主机板上那块四四...

        BIOS控制着什么 熟悉计算机的朋友都知道BIOS这个概念,我们也会经常听到老鸟在解决系统故障时候重复的 那些话语:“先清除一下CMOS”或者“进入BIOS默认设置”等等。在普通人眼里,BIOS似乎 就是主机板上那块四四方方的小芯片和开机时候显示的蓝色菜单。它究竟对使用者有什么特 别的意义呢?它究竟是不是高手或维修工程师的专利呢?一台电脑是通过怎么样的方式开始 工作的呢?希望通过阅读本文,你可以得到一个答案。

        BIOS内部结构 Sample Text 对于我们日常使用的个人电脑来说,采用的BIOS并不是完全相同的,分别由 Award、Phoenix和AMI这个三个厂商提供(注:Award已被Phoenix收购,其实是一家公司)。 以目前主板的状况而言,大多数都是采用Award BIOS或者基于Award BIOS 内核改进的产品( 采用AMI BIOS的产品相对要少,Phoenix BIOS主要是笔记本电脑和不少国外品牌机采用)。本文介绍的一些BIOS知识和结构,也只围绕市场占有率最高的Phoenix-Award来展开。

        拿常见的Award的2Mbit CMOS地址结构来说,从FFFF到FFFC区域是用于储存16Kbit容量的Boot Block(启动模块)、接着是8Kbit的即插即用延伸系统配置数据ESCD区、4Kbit的处理器微代 码Micro code和4Kbit的DMI数据区。FFF8到FFF6是解压缩引擎区,这里的指令可以释放FFF6 之后区域的大容量代码和信息,比如厂商Logo、OEM数据等等。最后一部分是安放BIOS主程序 的地方,通常这些程序也就是我们从网上下载的以bin为后缀名的BIOS升级文件。

        BIOS主要功能主板BIOS掌握着系统的启动、部件之间的兼容和程序管理等多项重任。只要按下电源开关启动主机后,BIOS就开始接管主板启动的所有自检工作,系统首先由POST (Power On Self Test,上电自检) 程序来对内部各个设备进行检查(这个过程在下文中另作表述)。通常完整 的POST自检将包括对CPU、基本内存、1MB以上的扩展内存、ROM、主板、CMOS存储器、串并口 、显示卡、软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或 鸣笛警告。然后BIOS就按照系统CMOS设置中保存的启动顺序搜寻软驱、IDE设备和它们的启动顺序,读入操作系统引导记录,最后将系统控制权交给引导记录,并最终完全过渡到操作系 统的工作状态。除了基本的启动功能外,BIOS还有硬件中断处理、系统设计管理、程序请求等作用。操作系 统对硬盘、光驱、键盘、显示器等外围设备的管理,都是直接建立在BIOS系统中断服务程序的基础上的,它是PC系统中的软件与硬件之间的一个可编程接口。计算机开机的时候,BIOS会分配CPU等硬件设备一个中断号。当执行了使用某个硬件的操作命令后,它就会根据中断号 使用相应的硬件来完成命令的工作,最后根据其中断号把它跳回原来的状态。同样,BIOS也可以通过特定的数据端口发送、接受指令,以实现软件应用程序对硬件的操作。BIOS的系统管理功能是大家最为熟悉的,即平时说的BIOS设置。BIOS程序会调用储存在CMOS RAM部分的记录,用户可以通过显示器看到系统基本情况,包括CPU频率、IDE驱动器、ACPI电 源管理和密码设置等信息。正如笔者在一开始说过的那样,这部分信息是依靠电池单独供电储存在RAM中的,只要断电一段时间或人为给CMOS接通高电平信号(跳线短接),任何修改过的设置都会不复存在。

        BIOS如何工作?有了以上这些基本知识作为铺垫,读者朋友应该对BIOS有了一定的了解。接下来的问题就是 ,掌握PC枢纽的BIOS是如何工作的呢?鉴于这个过程的复杂,不妨让我们将BIOS运行中的几个关键点罗列出来,稍做分析。这里需要事先声明,以下介绍的有关BIOS运行代码统一成十六进制,有兴趣的朋友可以在市场上买回Debug卡(俗称也叫Port 80卡)来查询、观察。简单地说,BIOS启动会经过好几个检测、命令、执行的循环流程,当然,在进入BIOS控制之前,CPU还需要一个热身的过程。拿P4系统为例,如果按照PC启动的流程来讲解的话,这个先后秩序是这样的:首先是主机电源开始供电,CPU接收到VR(电压调节系统)发出的一个电压 信号,然后经过一系列的逻辑单元确认CPU运行电压之后,主板芯片接收到发出“启动”工作 的指令,让CPU复位。CPU“苏醒”后的第一工作就是,读取BIOS中的初始化指令。在对CPU(2次检查)和内存(640KB基本模块)状态做一系列校验之后,BIOS会完成电路片的初始准备,停用视频、奇偶性和DMA电路片,并且使CMOS计时器开始运行。随后,BIOS程序会逐步检查 CPU是否和默认设定相同,DMA是否有故障,显示通道测试等等,一旦出现故障,就会有蜂鸣 器发出报警。不过,这些步骤都是在后台后悄悄进行的,我们是看不到屏幕上的任何信息。在上面的流程图中,很清楚地表明了引导模块工作的几个步骤。当CPU被正式启动以后,POST (Power-On Self Test,加电后自检)进入内存侦测阶段,一旦基本内存检测出错,系统死 机并会长时间报错;如果一切顺利,BIOS继续往下POST,检查CMOS内的其他BIOS主程序、扩展程序,直到完成这些工作,系统进入常规流程,显示器上才会显示出时间曰期、BIOS版本 型号、CPU频率、内存容量等基本信息。在BIOS引导IDE设备和I/O设备以后,接下来的过程便 交给操作系统来继续了。 BIOS在电脑启动过程中大体是这样工作的,实际上远比我们介绍的要复杂得多。中间任何一 个小的步骤出错都会导致系统无法启动,崩溃,而且BIOS设置不当也会给系统造成隐患。有经验的老鸟可以通过BIOS启动时候的声音来判断故障,而一般用户可以通过查看Debug卡的检错信号,了解POST停滞在哪个阶段。还是拿Award BIOS来说,开机Debug卡显示FF和C0表示 CPU自检没有通过,应该停电检查处理器状况;如果是C1、C3等数字显示,很有可能是BIOS在 检测内存时候发生问题了;系统自检过了2D,并且伴随清脆的“嘀”声,说明系统已经通过 显卡检测,这个时候显示屏上也开始出现画面。知道了故障可能发生的部件,我们可以通过替换法来最终确定问题源头,顺利解决问题。 BIOS也要保护 除了硬件设备的兼容问题之外,BIOS还有可能面临病毒、错误擦写等外因的危害,BIOS如果 不能工作,整台电脑也就瘫痪了。不少主板厂商都通过专门的设计来增加BIOS的可靠性。有的是做成Dual BIOS双模块的方式,一旦其中一块出现故障,能够通过跳线设置让系统从另外一块引导启动,再对损坏模组进行修复。由于BIOS中Boot Block区是重要的数据块,所以厂商将Boot Block块设计成分块式的BIOS结构,在BIOS芯片中保留了一个区域,该区域中保存有BIOS系统中最重要的启动信息。最新的刷新程序的默认值就是刷新时不更新BIOS的Boot Block块,这样的主板即使刷新失败 ,也能很容易恢复。遇到BIOS刷新失败,也可以自己用热插拔的办法来替换受损芯片,前提是你能找到一片和原来BIOS容量一样的芯片。

        有动手能力的玩家还可以在BIOS芯片的管脚上动脑筋,因为绝大多数的CMOS芯片为32脚的DIP封装,它们的针脚排列、功能基本上一致。芯片的写操作一般是通 过写入允许脚的电平变化来控制的,只有12V或者5V的高电平被调成低电平以后,数据才能写 入到芯片中去。根据此原理,只要把这个管脚从电路中脱离出来,一直处于高电平,即处于“读”状态,那么不论是病毒还是误操作,都不会对芯片内的数据进行改写。不过,这个方 法存在一定的危险性,它不适用所有的BIOS芯片,而且容易失去主板的保修,大家一定要谨慎为之。

        提到BIOS,大部分的菜鸟对此都一知半解,不敢轻易尝试,仿佛天生对“蓝色屏幕”有种恐 惧的感觉,而更多的时候,连许多老鸟都无法区分BIOS设置和CMOS设置的区别,所以在写出疑难问答之前,觉得有必要将这两个概念阐述清楚,以达到事半功倍的效果。

        BIOS是英文Basic Input/Output System的缩写,原意是“基本输入/输出系统”。而我 们通常所说的BIOS,其实是指一个固化在ROM中的软件,负责最低级的、最直接的硬件控制,以及计算机的原始操作;用来管理机器的启动和系统中重要硬件的控制和驱动,并为高层软 件提供基层调用。CMOS是英文“互补金属氧化物半导化”的缩写,不过我们常说的CMOS却是指主板上一块 可读写的存储芯片,也称之为“CMOS RAM”。CMOS RAM是随机存储器,具有断电后消除记忆的特点,人们就想到了使用外接电池保持其存储内容的方法。一般来说,通过固化在ROM BIOS的软件进行BIOS参数的调整过程就称之为BIOS设置,而通过BIOS设置中的“标准CMOS设置”调试CMOS参数的过程就称为CMOS设置。我们平常所说的 CMOS设置与BIOS设置只是其简化说法,所以在一定程度上造成两个概念的混淆。 数据恢复的基础知识分类:IT知识汇粹

        说到数据恢复,我们就不能不提到硬盘的数据结构、文件的存储原理,甚至操作系统的启动 流程,这些是你在恢复硬盘数据时不得不利用的基本知识。即使你不需要恢复数据,理解了 这些知识(即使只是稍微多知道一些),对于你平时的电脑操作和应用也是很有帮助的。我们就从硬盘的数据结构谈起吧…… 硬盘数据结构 初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操 作系统才可以使用。就拿我们一直沿用到现诘腤in9x/Me系列来说,我们一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT、DIR和Data等五部分(其中只有主引导扇区是唯一的, 其它的随你的分区数的增加而增加)。主引导扇区 主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。值得一提的是,MBR是由分区程序(例如DOS 的 Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。

        操作系统引导扇区OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一 个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB( BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文 件是否为操作系统的引导文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS )。如是,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起 始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。文件分配表 FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择,Microsoft 的DOS 及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非没有其它格式的FAT ,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。目录区DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在 磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。 数据区DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能 是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写 了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使 用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。

        硬盘分区方式 我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在 主分区中,不允许再建立其它逻辑磁盘。扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅 为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总 计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区 ,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。 为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针 ,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个 被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是 下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多 少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。 需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的 ,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。 数据存储原理 既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍 一下数据的删除和硬盘的格式化相关问题…… 文件的读取 操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在 数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。 操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志( FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。 文件的写入当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等 相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。 文件的删除看了前面的文件的读取和写入,你可能没有往下边继续看的信心了,不过放心,Win9x的文件 删除工作却是很简单的,简单到只在目录区做了一点小改动――将目录区的文件的第一个字符改成了E5就表示将改文件删除了。 Fdisk和Format的一点小说明和文件的删除类似,利用Fdisk删除再建立分区和利用Format格式化逻辑磁盘(假设你格 式化的时候并没有使用/U这个无条件格式化参数)都没有将数据从DATA区直接删除,前者只 是改变了分区表,后者只是修改了FAT表,因此被误删除的分区和误格式化的硬盘完全有可能 恢复……

        系统启动流程各种不同的操作系统启动流程不尽相同,我们这里以Win9x/DOS的启动流程为例。

    第一阶段:系统加电自检POST过程。POST是Power On SelfTest的缩写,也就是加电自检的意思,计算机执行内存FFFF0H处的程序(这里是一段固化的ROM程序),对系统的硬件(包括内存)进行检查。

    第二阶段:读取分区记录和引导记录。当微机检查到硬件正常并与CMOS设置相符后,按 照CMOS设置从相应设备启动(我们这里假设从硬盘启动),读取硬盘的分区记录(DPT)和主引导记录(MBR)。

    第三阶段:读取DOS引导记录。微机正确读取分区记录和主引导记录后,如果主引导记录和分区表校验正确,则执行主引导记录并进一步读取DOS引导记录(位于每一个主分区的第一个扇 区),然后执行该DOS引导记录。

    第四阶段:装载系统隐含文件。将DOS系统的隐含文件IO.SYS入内存,加载基本的文件系 统FAT,这时候一般会出现Starting Windows 9x...的标志,IO.SYS将MS.SYS读入内存,并处 理System.dat和User.dat文件,加载磁盘压缩程序。

    第五阶段:实DOS模式配置。系统隐含文件装载完成,微机将执行系统隐含文件,并执行 系统配置文件(Config.sys),加载Config.sys中定义的各种驱动程序。

    第六阶段:调入命令解释程序(Command.com)。系统装载命令管理程序,以便对系统的各种操 作命令进行协调管理(我们所使用的Dir、Copy等内部命令就是由Command.com提供的)。

    第七阶段:执行批处理文件(Autoexec.bat)。微机将一步一步地执行批处理文件中的各条命令。

        区DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在 磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录) 的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始 单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义 上的数据存储区,即DATA区。 数据区 DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能 是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式 化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写 了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改 变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏 的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。

        本文转自http://wenku.baidu.com/link?url=tDqqSXsIP-z5AEfvUpb8_cP-5jR1F1k5QSdpDVZQgJCEIBB6rrTa4NsDb_vkQuWB8gjPeyraCFs9KSqI-rEWmb3bR1pz7vq9SOcOk9Qb8AG

       

    展开全文
  • 这些软件各有特色,我也没能深入的了解,最终选择使用grub2也是因为感觉对BIOS和UEFI的支持都很好,缺点也很明显,就是不能直接支持iso和img等镜像的启动,可以通过加载syslinux的memdisk加载iso,但是memdisk不支持...

    前言:

    因为对这块完全不了解,走了很多弯路。试了很多软件,包括GRUB4DOS、XORBOOT、syslinux等。这些软件各有特色,我也没能深入的了解,最终选择使用grub2也是因为感觉对BIOS和UEFI的支持都很好,缺点也很明显,就是不能直接支持iso和img等镜像的启动,可以通过加载syslinux的memdisk加载iso,但是memdisk不支持uefi,还有配置文件规则真的很变态,感觉在写一个前端代码。

    定位:

    本文定位于实操,按照步骤一步步操作基本能做出一个如下功能的U盘,对于具体理论方面不做深入探讨。
    功能:
    BIOS:winpe、Ubuntu18.04_x64 live、MAXDOS启动。
    UEFI:winpe、Ubuntu18.04_x64 live启动。

    一、BIOS和UEFI的启动过程区别

    1、BIOS把MBR读出来交给CPU执行,做MBR做想做的事。
    2、UEFI是查找磁盘里的\efi\boot\bootx64.efi文件,启动这个可执行程序,让这程序做想做的事。
    具体更多的区别网上有很多的资料,上述只是与操作有关的关键点。

    二、材料准备。

    1、U盘。
    2、grub-2.02-for-windows
    3、syslinux 6.03
    4、maxdos
    5、winpe
    6、ubuntu-18.04-desktop-amd64
    7、分区工具(推荐DiskGenius)

    三、U盘分区

    1、清空U盘,最重要的是清除MBR。U盘原来的MBR没有清除,很可能导致安装grub2失败。如果在安装过程中grub2提示“grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet.. ”,一般就是因为U盘原来的MBR没有清除。清空方法:
    (1)组合键win+R 运行diskpart。
    (2)输入list disk,得到目前所有的磁盘。
    (3)输入select disk 2 ,定位到U盘。
    (4)输入命令clean,清除所有,(MBR,分区和资料)。
    这里写图片描述

    2、给U盘分区。我的是一个32g的U盘,分了3GB空间来做启动盘,格式为FAT32,因为要兼容UEFI,所以没有选择分区隐藏、删除等保护措施。

    四、部署UEFI下的WINPE

    这里说明下将部署winpe放到这么前面的原因。因为winpe启动程序寻找文件都是用的绝对路径,不是相对路径,所以下载下来的winpe镜像目录结构是怎样就必须保持绝对路径不变,这样才能使得程序顺利启动。下面是操作步骤:
    1、将winpe镜像挂载或者解压。
    2、全选、复制、粘贴到U盘新分的区。

    五、安装grub2

    1、grub-2.02-for-windows解压到C:\

    2、确定磁盘号这里写图片描述

    3、管理员身份打开cmd(很重要)

    4、输入cd /d C:\grub-2.02-for-windows

    5、i386安装

    grub-install.exe --boot-directory=G:\ --target=i386-pc //./PHYSICALDRIVE2

    注意下面的盘符,改成自己的。PHYSICALDRIVE2中的“2”就是第二步查到的磁盘号。

    6、uefi 64为安装(注意下面的盘符,改成自己的)

    grub-install.exe --boot-directory=G:\ --efi-directory=G: --removable --target=x86_64-efi

    7、uefi32位安装(i386安装)

    grub-install.exe --boot-directory=G:\ --efi-directory=G: --removable --target=i386-efi
    

    同样是注意盘符,改成自己的。

    8、安装成功显示结果

    C:\grub-2.02-for-windows>grub-install.exe –boot-directory=G:\ –target=i386-pc //./PHYSICALDRIVE2
    Installing for i386-pc platform.
    Installation finished. No error reported.

    C:\grub-2.02-for-windows>grub-install.exe –boot-directory=G:\ –efi-directory=G: –removable –target=x86_64-efi
    Installing for x86_64-efi platform.
    Installation finished. No error reported.

    C:\grub-2.02-for-windows>grub-install.exe –boot-directory=G:\ –efi-directory=G: –removable –target=i386-efi
    Installing for i386-efi platform.
    Installation finished. No error reported.
    u盘根目录会生成相应的文件。

    六、写grub2配置文件

    1、/grub目录下新建文件grub.cfg。

    2、grub.cfg内容

    
    
    #
    # DO NOT EDIT THIS FILE
    #
    # It is automatically generated by grub2-mkconfig using templates
    # from /etc/grub.d and settings from /etc/default/grub
    #
    
    ### BEGIN /etc/grub.d/00_header ###
    if [ -s $prefix/grubenv ]; then
      load_env
    fi
    if [ "${next_entry}" ] ; then
       set default="${next_entry}"
       set next_entry=
       save_env next_entry
       set boot_once=true
    else
       set default="0"
    fi
    
    if [ x"${feature_menuentry_id}" = xy ]; then
      menuentry_id_option="--id"
    else
      menuentry_id_option=""
    fi
    
    export menuentry_id_option
    
    if [ "${prev_saved_entry}" ]; then
      set saved_entry="${prev_saved_entry}"
      save_env saved_entry
      set prev_saved_entry=
      save_env prev_saved_entry
      set boot_once=true
    fi
    
    function savedefault {
      if [ -z "${boot_once}" ]; then
        saved_entry="${chosen}"
        save_env saved_entry
      fi
    }
    
    function load_video {
      if [ x$feature_all_video_module = xy ]; then
        insmod all_video
      else
        insmod efi_gop
        insmod efi_uga
        insmod ieee1275_fb
        insmod vbe
        insmod vga
        insmod video_bochs
        insmod video_cirrus
      fi
    }
    
    if [ x$feature_default_font_path = xy ] ; then
       font=unicode
    else
        font="${prefix}/fonts/unicode.pf2"
    fi
    
    
    if loadfont $font ; then
        #set gfxmode=1024x768x32,1024x768x24,1024x768x16,1024x768,auto
        #set gfxpayload=keep
    
      loadfont /grub/fonts/dejavu-bold-16.pf2
      loadfont /gurb/fonts/dejavu-bold-14.pf2
      set gfxmode=auto
    
        load_video
        insmod gfxterm
        insmod png
        terminal_output gfxterm
    
      #set color_normal=light-gray/black
      #set color_highlight=white/black
        #background_image -m stretch $prefix/themes/splash.png
    fi
    if [ x$feature_timeout_style = xy ] ; then
      set timeout_style=menu
      set timeout=15
    # Fallback normal timeout code in case the timeout_style feature is
    # unavailable.
    else
      set timeout=15
    fi
    
    
    set color_normal=light-gray/black
    set color_highlight=white/black
    
    if [ -e /grub/themes/starfield/starfield.png ]; then
        # binary_syslinux modifies the theme file to point to the correct
        # background picture
        set theme=/grub/themes/starfield/theme.txt
    else
        set menu_color_normal=cyan/blue
        set menu_color_highlight=white/blue
    fi
    
    ### END /etc/grub.d/00_header ###
    
    ### BEGIN /etc/grub.d/10_linux ###
    
    ### END /etc/grub.d/10_linux ###
    
    ### BEGIN /etc/grub.d/20_linux_xen ###
    ### END /etc/grub.d/20_linux_xen ###
    
    ### BEGIN /etc/grub.d/30_os-prober ###
    ### END /etc/grub.d/30_os-prober ###
    
    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    
    ### BEGIN /etc/grub.d/41_custom ###
    if [ -f  ${config_directory}/custom.cfg ]; then
        source ${config_directory}/custom.cfg
    elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
        source $prefix/custom.cfg;
    fi
    ### END /etc/grub.d/41_custom ###
    
    menuentry "Restart(重启)" {
        reboot
    }
    
    menuentry "Power Off(关机)" {
        halt
    }

    可以测试下grub能否再BIOS和UEFI下启动。

    七、提取MAXDOS镜像

    1.首先安装好MaxDOS8。
    2.打开 “我的电脑”→点击C盘并打开→在文件夹菜单栏点击”工具”→ 文件夹选项 → 取消“隐藏已知文件类型的扩展名”的勾选→保存确认
    3.进 C:\MaxDOS\
    找到 Maxs.sys 重命名为 Maxs.rar 然后解压得到 MaxDOS.exe文件,将其改名为MaxDOS.img即可。
    4.将MaxDOS.img拷入到/maxdos下。
    如果打开C盘找不到MaxDOS文件夹,只要安装确认安装了MaxDOS,请直接在地址栏输入”C:\MaxDOS\”,就能看到.

    八、部署winpe、Ubuntu和maxdos。

    1、winpe

    (1)新建目录winpe,将winpe镜像拷入其中。这份镜像是给bios启动用的。
    (2)再次挂载或解压winpe镜像(不要动上一步拷贝进去的winpe镜像),将/efi/boot目录下所有文件拷入/winpe中。这是UEFI引导winpe用的。

    2、Ubuntu

    将ubuntu-18.04-desktop-amd64.iso拷贝到根目录。

    3、MAXDOS

    新建目录maxdos,将前面提取的maxdos.img拷入其中。

    九、编写grub2启动菜单

    打开grub.cfg文件,添加如下菜单项

    menuentry 'win10PE_X64(BIOS)'{
            set root='(hd0,msdos1)'
            echo 'Loading Memdisk...'
            #insmod memdisk
            linux16 /grub/syslinux/MEMDISK iso raw
            echo 'Loading ISO... may take several minutes'
            initrd16 /winpe/Win10PE_17134x64.iso
    }
    
    #启动efi件:
    menuentry "win10PE_X64(UEFI)" {
    echo "正在启动EFI SHELL,请等待...."
    set root='(hd0,msdos1)'
    #search --file /winpe/bootx64.efi --set=root
    chainloader /winpe/bootx64.efi
    }
    
    
    menuentry 'ubuntu-18.04' {
    insmod fat
    insmod loopback
    insmod iso9660
    loopback loop (hd0,1)/ubuntu-18.04-desktop-amd64.iso
    set root=(loop)
    linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-18.04-desktop-amd64.iso noprompt noeject
    initrd /casper/initrd.lz
    }
    
    menuentry "Maxdos(BIOS)"{
    set root='(hd0,msdos1)'
    linux16 /grub/syslinux/MEMDISK
    initrd16 /maxdos/maxdos.img
    }

    保存后可以试下启动了。

    十、疑问。

    在制作过程中,有好些疑问,在此列出,望知道怎么弄得哥们告知一二。诸位在制作过程若出现任何问题,或有更好的办法,欢迎留言,共同探讨、共同进步。

    1、UEFI下怎样启动DOS?

    2、grub2不支持iso,所以只能使用syslinux的MEMDISK加载iso等镜像,但是MEMDISK也仅限BIOS中使用,不知UEFI有没有直接加载镜像的办法?

    3、我试着把用DiskGenius镜像一份做好的启动分区,可是把镜像写入另外一个分区后发现还是用不了,初步看是镜像里没有包含MBR,不知有什么好的方法可以做一份镜像出来?

    参考:
    https://www.aioboot.com/en/install-grub2-from-windows/
    https://github.com/slacka/WoeUSB/issues/61
    https://blog.csdn.net/The_IT_Crowd/article/details/7676917

    展开全文
  • IT兄弟的帮忙,发现:拆掉主板的副CPU后,服务器开机可以显示bios信息。(主板上可以安装2颗CPU,一颗主CPU,另一颗为副CPU。) 但是,服务器提示报错: Unable to load LSI Corporation
    近期,给一台服务器重装系统。
    
    重装系统完成后,系统无法启动。点击了ubuntu系统盘里的从第一硬盘启动后,服务器开机黑屏,无法显示bios信息。
    在IT兄弟的帮忙下,发现:拆掉主板的副CPU后,服务器开机可以显示bios信息。(主板上可以安装2颗CPU,一颗主CPU,另一颗为副CPU。)
    但是,服务器提示报错:
    Unable to load LSI Corporation MPT BIOS
    MPT BIOS Fault BB000005h encountered at adapter PCI(05h, 00h, 00h)
    Press any key to continue...
    此时,服务器无法识别到硬盘。

    通过查询资料,得知:在主板上有一个用于管理硬盘的LSI SAS芯片。更新LSI SAS芯片的bios,可能可以解决此问题。

    通过查询主板官网的资料和论坛的信息,确定了主板的LSI SAS芯片型号:LSI SAS 9211-8i
    从如下网址可以下载LSI SAS 9211-8i的官方资源:
    http://www.lsi.com/products/host-bus-adapters/pages/lsi-sas-9211-8i.aspx#tab/tab4

    其中,我下载了资源包:9211_8i_Package_P20_IR_IT_Firmware_BIOS_for_MSDOS_Windows
    在这个资源包中,我使用了
    DOS版本的LSI SAS升级工具 :sas2flsh.exe
    IR版的Fireware包:2118ir.bin
    sasbios包:mptsas2.rom

    将以上文件拷贝到DOS启动盘中。
    使用DOS启动盘启动服务器,并进入DOS命令行更新LSI SAS的bios和fireware。
    执行命令:sas2flsh.exe -o -b mptsas2.rom -f 2118ir.bin
    更新LSI SAS的bios和fireware后,重启服务器,服务器可以正常识别硬盘。

    之后,再次重装系统,系统可以正常运行。
    将副CPU装回主板,副CPU也可以正常工作。
    展开全文
  • DOS和BIOS功能调用

    2008-12-15 16:33:00
    由于这些软件程序存放硬盘或软盘上,而且主要功能是进行文件管理和输入/输出设备管理,故而称为磁盘操作系统。磁盘操作系统是人和机器交互的界面,用户通过操作系统使用和操作计算机。 随着计算机硬件的
     
     

      MS DOS(disk operation system)是微型计算机磁盘操作系统,操作系统是用来控制和管理计算机的硬件资源,方便用户使用的程序集合。由于这些软件程序存放在硬盘或软盘上,而且主要功能是进行文件管理和输入/输出设备管理,故而称为磁盘操作系统。磁盘操作系统是人和机器交互的界面,用户通过操作系统使用和操作计算机。


        随着计算机硬件的发展,DOS版本从DOS 1.0逐步升级到DOS 7.0版本,版本越高功能越强。DOS由三个层次的程序文件及一个BOOT引导程序构成。三个层次模块文件是:


    IO.SYS 输入/输出管理系统


    MSDOS.SYS 文件管理系统


    COMMAND.COM 命令处理系统


      基本输入/输出系统BIOS(basic input/output system)是固化在只读存储器ROM中的基本输入/输出程序。它直接可对外部设备进行设备升级的控制,包括系统测试、初始化引导程序、控制I/O设备的服务程序等。


        DOS和BIOS提供了大量的可供用户直接使用的系统服务程序。DOS系统中的IO.SYS(PC DOS IBMBIO.COM)基本输入/输出管理模块通过BIOS控制管理外部设备。DOS与BIOS之间的关系如图4.25所示。

    图4-25.JPG


      在一般情况下,用户程序通过MSDOS.SYS使用外部设备。应用汇编语言编程,可以直接使用BIOS中的软中断指令对应的中断调用程序,若对内部硬件比较熟悉,可以用IN和OUT指令对设备进行端口编程。


      一般来说,用户可以用四种方式控制PC的硬件。


      ① 应用高级语言的相应功能语句进行控制。但高级语言中的I/O语句比较少,执行速度慢。

      ② 应用DOS提供的功能程序来控制硬件。可对显示器、键盘、打印机、串行通信等字符设备提供输入/输出服务。DOS提供了近百种I/O功能服务程序,编程者无须对硬件有太深的了解,即可调用。这是一种高层次的调用,使用DOS调用,编程简单,调试方便,可移植性好。

      ③ 应用BIOS提供的功能程序来控制硬件。这是低层次控制,要求编程者对硬件有相当深入的了解。当BIOS与DOS提供的功能相同时,应首先选用DOS。BIOS固化在ROM中,不依赖于DOS操作系统,使用BIOS软中断调用子程序可直接控制系统硬件。BIOS调用速度快,适用于高速运行的场合。中断调用可用软件中断指令“INT n”来实现,n为中断类型码。使用BIOS调用的汇编语言和C语言的程序可移植性比较差。

      ④ 直接使用汇编语言编程进行控制。要求编程者对I/O设备的地址、功能比较熟悉。

     


         
     

     DOS功能调用

        MS DOS操作系统为程序设计者提供了可以直接调用的软中断处理程序,每一个中断处理程序完成一个特定的功能操作。依据编程需要选择适当的处理程序,编程者不需再重新编写程序,而是使用INT n软中断指令。每执行一种不同类型码n的软中断指令,就执行一个中断处理程序,其主要功能如下。


        ① 磁盘的读/写控制。


        ② 内存管理、文件操作和目录管理。


        ③ 基本输入/输出(对键盘、打印机和显示器等)控制,另外还有日期、时间管理等。


        当类型码n=05H~1FH时,调用BIOS的中断处理程序;类型码n=20H~3FH时,调用DOS的中断处理程序。DOS中断调用方法如图4.26所示。按DOS中断规定,用指令写入口参数,然后执行INT n指令,执行完毕后,依据结果进行分析及处理。

    图4-26.JPG


        DOS软中断功能及参数见表4.5。其中,入口参数是使用该调用必须具备的条件,如设定寄存器参数等;出口参数是表示软中断程序执行结果放在何处或执行该操作处理的特征。

    表4.5 DOS软中断功能及参数

        表4.5中 INT 22H,INT 23H,INT 24H不允许用户直接使用。INT 20H的作用是终止正在运行的程序,返回操作系统。这种终止退出程序,适用于扩展名为.COM的文件,而不适用于扩展名为.EXE的可执行文件。INT 27H的作用也是终止正在运行的程序,返回操作系统,但被终止的程序仍然驻留在内存中,不会被其他程序覆盖。


        INT 21H软中断是一个具有几十种功能的大型中断服务程序,给这些子功能程序分别予以编号,称为功能号。每个功能程序完成一种特定的操作和处理。对INT 21H软中断指令对应的功能子程序的调用称为DOS系统功能调用。调用系统功能子程序时,不必了解所使用设备的物理特性、接口方式及内存分配等,也不必编写繁琐的控制程序,这样给应用者带来了很大的方便。


        应用INT 21H系统功能调用的方法如下。


        ① 入口参数送指定的寄存器或内存。


        ② 功能号送AH中。


        ③ 执行INT 21H软中断指令。


        有的子功能程序不需要入口参数,但大部分需要把参数送入指定位置。程序员只要给出这三方面的信息,不必关心程序具体如何执行,在内存中的存放地址如何,DOS就会根据所给的参数信息自动转入相应的子程序去执行并产生相应结果。下面介绍常用的功能调用。

    1.键盘输入并显示(1号功能调用)

    格式: MOV AH, 01H
           INT 21H


        功能:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。如果按下的是Ctrl+Break组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在AL中。

     

    2.键盘输入但不显示输入字符(8号功能调用)

    格式: MOV AH, 08H
           INT 21H


    功能:同1号功能调用,但字符不在屏幕上显示。

     

    3.屏幕显示一个字符(2号功能调用)

    格式: MOV DL, '字符'
           MOV AH, 02H
           INT 21H


    功能:将置入DL寄存器中的字符在屏幕上显示输出。

     

    4.打印输出(5号功能调用)

    格式: MOV DL, '字符'
           MOV AH, 05H
           INT 21H


    功能:将置入DL寄存器中的字符送打印机接口,打印输出。

     

    5.屏幕显示字符串(9号功能调用)

    格式: MOV DX, 字符串的偏移地址
           MOV AH, 09H
           INT 21H


        功能:在屏幕上显示字符串。


        在使用9号功能调用时,应当注意以下问题。


        ① 待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。

        ② 应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。

    【例4.42】


    DATA    SEGMENT
    BUF     DB ‘HOW DO YOU DO?’, 0AH, 0DH, ‘$’
            4-7-1_clip_image002.gif
    DATA    ENDS
    CODE    SEGMENT
            4-7-1_clip_image002_0000.gif
            MOV    AX, DATA
            MOV    DS, AX
            4-7-1_clip_image002_0001.gif
            MOV    DX, OFFSET BUF
            MOV    AH, 09H
    INT    21H
            4-7-1_clip_image002_0002.gif
    CODE ENDS


    执行程序,在屏幕上显示“HOW DO YOU DO?”字符串。

    6.字符串输入功能调用(0AH号功能调用)

         格式: MOV DX, 已定义缓冲区的偏移地址
               MOV AH, 0AH
               INT 21H


        功能:从键盘接收字符,并存放到内存缓冲区。


        在使用0AH号功能调用时,应当注意以下问题。


        ① 执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。第二个字节保留,在执行程序完毕后存入输入的实际字符个数。从第三个字节开始存入从键盘上接收字符的ASCII码。若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。整个缓冲区的长度等于最大字符个数再加2。

        ② 应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。

    【例4.43】


    DATA      SEGMENT
    BUF       DB 25 ; 缓冲区长度
    ACTHAR    DB ? ; 保留单元, 存放输入的实际字符个数
    CHAR      DB 25 DUP (?) ; 定义25个字节存储空间
              DB ‘$’
              4-7-1_clip_image002_0003.gif
    DATA      ENDS
    CODE      SEGMENT
              ASSUME CS: CODE, DS: DATA
              MOV AX, DATA
              MOV DS, AX
              4-7-1_clip_image002_0004.gif
              MOV DX, OFFSET BUF
              MOV AH, 0AH
              INT 21H
              4-7-1_clip_image002_0005.gif
    CODE      ENDS


    本例可从键盘接收23个有效字符并存入以BUF为首地址的缓冲区中。

     

    7.返回DOS操作系统(4CH号功能调用)

    格式: MOV AH, 4CH
           INT 21H


        功能:终止当前程序的运行,并把控制权交给调用的程序,即返回DOS系统,屏幕出现DOS提示符,如“C: / >”,等待DOS命令。


    8.直接输入、输出单字符(6号功能调用)

    格式: MOV DL, 输入/输出标志
           MOV AH, 06H
           INT 21H


        功能:执行键盘输入操作或屏幕显示输出操作,但不检查Ctrl+Break组合键是否按下。执行这两种操作的选择由DL寄存器中的内容决定。


        ① 当(DL)=0FFH时,执行键盘输入操作。若标志ZF=0,AL中放入字符的ASCII码;若标志ZF=1,表示无键按下。这种调用用来检测键盘是否有键按下,但不等待键盘输入。

        ② 当(DL)≠0FFH时,表示将DL中内容送屏幕显示输出。

     

    9.检查键盘的工作状态(0BH号功能调用)

    格式: MOV AH, 0BH
           INT 21H


        功能:检查是否有键盘输入,若有键按下,则使AL=0FFH,若无键按下,则AL=00H。对于利用键盘操作退出循环或使程序结束之类的操作来说,这种调用是很方便实用的。


    【例4.44】


    LOP: ADD AL, BL
         4-7-1_clip_image002_0006.gif
         MOV AH, 0BH
         INT 21H ; 键扫描: 无输入,AL=00H, 有输入,AL=FFH
         ADD AL, 01H
         JNZ LOP ; 有输入则退出循环
         RET

     

    10.设置系统日期(2BH号功能调用)

    格式: MOV CX, 年号
           MOV DH, 月号
           MOV DL, 日期
           MOV AH, 2BH
           INT 21H


        功能:设置有效的年、月、日。当AL=0时,设置成功;当AL=0FFH时,设置失败。

     

    11.设置系统时间(2DH号功能调用)

    格式: MOV CH, 小时
           MOV CL, 分
           MOV DH, 秒
           MOV AH, 2DH
           INT 21H


        功能:设置有效的时间。当AL=0时,设置成功;当AL=0FFH时,设置失败。


    【例4.45】 DOS功能调用子程序举例:回车/换行标准显示输出子程序。


    CRLF PROC FAR
         PUSH DX
         PUSH AX
         MOV DL, 0DH ; 回车的ASCII码为0DH
         MOV AH, 02H
         INT 21H
         MOV DL, 0AH ; 换行的ASCII码为0AH
         MOV AH, 02H
         INT 21H
         POP AX
         POP DX
         RET
    CRLF ENDP

     BIOS功能调用


      BIOS是固化在只读存储器ROM中的一系列输入/输出服务程序,它存放于内存的高地址区域内,除负责处理系统中的全部内部中断外,还提供对主要I/O接口的控制功能,如键盘、显示器、磁盘、打印、日期与时间等。BIOS采用模块化结构,每个功能模块的入口地址都存于中断向量表中。对这些中断调用是通过软中断指令INT n来实现的,中断指令中的操作数n即为中断类型码。


      BIOS的调用方法与DOS系统功能调用方法类似。


    ① 置功能号于AH中。


    ② 置入口参数。


    ③ 执行INT n


    ④ 分析出口参数及状态。


    下面介绍几种常用的BIOS中断调用。

     

    1.键盘I/O中断调用(INT 16H)

    键盘I/O中断调用有三个功能,功能号为0, 1, 2,且必须把功能号放在AH中。


    (1)0号功能调用


    格式:MOV AH, 0
          INT 16H


      功能:从键盘读入字符送AL寄存器。执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。若AL=0,则AH为输入的扩展码。


    (2)1号功能调用


    格式:MOV AH, 01H
       INT 16H

      功能:用来查询键盘缓冲区,对键盘扫描但不等待,并设置ZF标志。若有按键操作(即键盘缓冲区不空),则ZF=0,AL中存放的是输入的ASCII码,AH中存放输入字符的扩展码。若无键按下,则标志位ZF=1。


    (3)2号功能调用


    格式: MOV AH, 02H
           INT 16H


      功能:检查键盘上各特殊功能键的状态。执行后,各种特殊功能键的状态放入AL寄存器中,其对应关系如图4.27所示。

    图4.27 AL寄存器各位与各特殊功能键对应关系示意图


      这个状态字记录在内存0040H:0017H单元中,若对应位为“1”,表示该键状态为“ON”,处于按下状态;若对应位为“0”,表示该键状态为“OFF”,处于断开状态。


    【例4.46】


    MOV AH, 02H
    INT 16H               ; 取键盘状态到AL中
    AND AL, 0000 0100B     ; 检查Ctrl键是否按下
    JNZ CTRL-ON
       4-7-2_clip_image002.gif
    CTRL-ON: …


    检查Ctrl键是否按下,若按下,则控制转移到某个程序段执行。

     

    2.打印机I/O中断调用(INT 17H)

    打印机I/O中断调用有三个功能,功能号为0, 1, 2。


    (1)0号功能调用


      入口参数为AL中放入字符的ASCII码,DX中放打印机号(0~2)。


    格式: MOV AL, 'A'
           MOV DX, 01H
           MOV AH, 0
           INT 17H


    功能:打印一个字符,且返回打印机状态到AH中。


    (2)1号功能调用


    格式: MOV AH, 01H
          INT 17H


    功能:初始化打印机,并返回打印机状态到AH中。

    (3)2号功能调用


    格式: MOV AH, 02H
          INT 17H  


    功能:返回打印机状态到AH中。

    展开全文
  • 没有软件和系统的计算机上废铁,计算机的启动过程涉及硬件,操作系统等很多知识,自己遇到的困惑总结下来。

    一、BIOS存放在哪里?

    bios固化在主板的biosROM中,掉电不会丢失




    二、BIOS存放在ROM中,那么为什么可以升级BIOS


    eeprom可以编程.

    586以后的ROM BIOS多采用EEPROM(电可擦写只读ROM),通过跳线开关和系统配带的驱动程序盘,可以对EEPROM进行重写,方便地实现BIOS升级。计算机用户在使用计算机的过程中,都会接触到BIOS,它在计算机系统中起着非常重要的作用。一块主板性能优越与否,很大程度上取决于主板上的BIOS管理功能是否先进。


    在微机的发展初期,BIOS都存放在ROMReadOnly Memory,只读存储器)中。ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如果发现资料有任何错误,则只有舍弃不用,重新订做一份。ROM是在生产线上生产的,由于成本高,一般只用在大批量应用的场合。

    由于ROM制造和升级的不便,后来人们发明了PROMProgrammableROM,可编程ROM)。最初从工厂中制作完成的PROM内部并没有资料,用户可以用专用的编程器将自己的资料写入,但是这种机会只有一次,一旦写入后也无法修改,若是出了错误,已写入的芯片只能报废。PROM的特性和ROM相同,但是其成本比ROM高,而且写入资料的速度比ROM的量产速度要慢,一般只适用于少量需求的场合或是ROM量产前的验证。

    EPROMErasableProgrammable ROM,可擦除可编程ROM)芯片可重复擦除和写入,解决了PROM芯片只能写入一次的弊端。EPROM芯片有一个很明显的特征,在其正面的陶瓷封装上,开有一个玻璃窗口,透过该窗口,可以看到其内部的集成电路,紫外线透过该孔照射内部芯片就可以擦除其内的数据,完成芯片擦除的操作要用到EPROM擦除器。EPROM内资料的写入要用专用的编程器,并且往芯片中写内容时必须要加一定的编程电压(VPP=1224V,随不同的芯片型号而定)。EPROM的型号是以27开头的,如27C020(8*256K)是一片2MBits容量的EPROM芯片。EPROM芯片在写入资料后,还要以不透光的贴纸或胶布把窗口封住,以免受到周围的紫外线照射而使资料受损。

    鉴于EPROM操作的不便,后来出的主板上的BIOSROM芯片大部分都采用EPROMElectricallyErasable Programmable ROM,电可擦除可编程ROM)。EPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROMEraser和编程器的束缚。EPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。借助于EPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把跳线开关打至“ON”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“OFF”的位置,防止CIH类的病毒对BIOS芯片的非法修改。所以,至今仍有不少主板采用EPROM作为BIOS芯片并作为自己主板的一大特色。

    三、与CMOS的区别和联系

    3.1、BIOS是什么?


    所谓BIOS,实际上就是微机的基本输入输出系统(BasicInputOutputSystem),其内容集成在微机主板上的一个ROM芯片上,主要保存着有关微机系统最重要的基本输入输出程序,系统信息设置、开机上电自检程序和系统启动自举程序等。

    3.2、BIOS的功能

    BIOS ROM芯片不但可以在主板上看到,而且BIOS管理功能如何在很大程度上决定了主板性能是否优越。BIOS管理功能主要包括:

      1.BIOS中断服务程序

      BIOS中断服务程序实质上是微机系统中软件与硬件之间的一个可编程接口,主要用来在程序软件与微机硬件之间实现衔接。例如,DOSWindows操作系统中对软盘、硬盘、光驱、键盘、显示器等外围设备的管理,都是直接建立在BIOS系统中断服务程序的基础上,而且操作人员也可以通过访问INT5INT13等中断点而直接调用BIOS中断服务程序。

      2.BIOS系统设置程序

    微机部件配置记录是放在一块可读写的 CMOS RAM芯片中的,主要保存着系统基本情况、CPU特性、软硬盘驱动器、显示器、键盘等部件的信息。在BIOS ROM芯片中装有"系统设置程序",主要用来设置CMOSRAM中的各项参数。这个程序在开机时按下某个特定键即可进入设置状态,并提供了良好的界面供操作人员使用。事实上,这个设置CMOS参数的过程,习惯上也称为"BIOS设置"。一旦CMOSRAM芯片中关于微机的配置信息不正确时,轻者会使得系统整体运行性能降低、软硬盘驱动器等部件不能识别,严重时就会由此引发一系统的软硬件故障。 

     3. POST上电自检

      微机按通电源后,系统首先由POSTPowerOn Self Test,上电自检)程序来对内部各个设备进行检查。通常完整的POST自检将包括对CPU640K基本内存、 1M以上的扩展内存、ROM、主板、CMOS存贮器、串并口、显示卡、软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告。

      4.BIOS系统启动自举程序

    系统在完成 POST自检后, ROM BIOS 就首先按照系统CMOS设置中保存的启动顺序搜寻软硬盘驱动器及CD-ROM、网络服务器等有效地启动驱动器,读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动。



    3.3、CMOS是什么?

    CMOS(本意是指互补金属氧化物半导体存储嚣,是一种大规模应用于集成电路芯片制造的原料)是微机主板上的一块可读写的RAM芯片,主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。CMOSRAM芯片由系统通过一块后备电池供电,因此无论是在关机状态中,还是遇到系统掉电情况,CMOS信息都不会丢失

    由于CMOSRAM芯片本身只是一块存储器,只具有保存数据的功能,所以对CMOS中各项参数的设定要通过专门的程序。早期的CMOS设置程序驻留在软盘上的(IBMPC/AT机型),使用很不方便。现在多数厂家将CMOS设置程序做到了BIOS芯片中,在开机时通过按下某个特定键就可进入CMOS设置程序而非常方便地对系统进行设置,因此这种CMOS设置又通常被叫做BIOS设置。

    3.4、BIOS设置和CMOS设置的区别与联系

    BIOS是主板上的一块EPROMEEPROM芯片,里面装有系统的重要信息和设置系统参数的设置程序(BIOSSetup程序)CMOS是主板上的一块可读写的RAM芯片,里面装的是关于系统配置的具体参数,其内容可通过设置程序进行读写。CMOSRAM芯片靠后备电池供电,即使系统掉电后信息也不会丢失。BIOSCMOS既相关又不同:BIOS中的系统设置程序是完成CMOS参数设置的手段;CMOSRAM既是BIOS设定系统参数的存放场所,又是BIOS设定系统参数的结果。因此,完整的说法应该是"通过BIOS设置程序对CMOS参数进行设置"。由于 BIOSCMOS都跟系统设置密初相关,所以在实际使用过程中造成了BIOS设置和CMOS设置的说法,其实指的都是同一回事,但BIOSCMOS却是两个完全不同的概念,千万不可搞混淆。 

    3.5、何时要对BIOS或CMOS进行设置?

    众所周知,进行BIOSCMOS设置是由操作人员根据微机实际情况而人工完成的一项十分重要的系统初始化工作。在以下情况下,必须进行BIOSCMOS进行设置:

      1、新购微机

      即使带PnP功能的系统也只能识别一部分微机外围设备,而对软硬盘参数、当前日期、时钟等基本资料等必须由操作人员进行设置,因此新购买的微机必须通过进行CMOS参数设置来告诉系统整个微机的基本配置情况。

      2.新增设备

      由于系统不一定能认识新增的设备,所以必须通过CMOS设置来告诉它。另外,一旦新增设备与原有设备之间发生了IRQDMA冲突,也往往需要通过BIOS设置来进行排除。

      3CMOS数据意外丢失

      在系统后备电池失效、病毒破坏了CMOS数据程序、意外清除了CMOS参数等情况下,常常会造成CMOS数据意外丢失。此时只能重新进入BIOS设置程序完成新的CMOS参数设置。

      4.系统优化

    对于内存读写等待时间、硬盘数据传输模式、内/外 Cache的使用、节能保护、电源管理、开机启动顺序等参数,BIOS中预定的设置对系统而言并不一定就是最优的,此时往往需要经过多次试验才能找到系统优化的最佳组合

    四、(开机自检)与BIOS在启动过程那个先开始执行


    postBIOS的一部分,有些BIOS设置里其实是可以取消


    接通电源,计算机首先自动运行主板BIOS芯片固化的程序,通常称为POST——上电自检(Power On Self Test)

     

    完整的POST自检包括对CPU、系统主板、基本的640KB内存、1MB以上的扩展内存、系统ROM BIOS的测试;CMOS中系统配置的校验;初始化视频控制器,测试视频内存、检验视频信号和同步信号,对VGA接口进行测试;对键盘、软驱、硬盘及CDROM子系统作检查;对并行口(打印机)和串行口(RS232)进行检查。自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。

     

    当自检完成后,系统进行下一步骤:从硬盘、光盘或网络服务器上寻找操作系统进行启动,电脑的控制权将由操作系统完成。


    如何取消?


    .开机按delete键进入BIOS,进入高级配置页面(Advanced Setup Page,找到Quick Boot项,设置为 Enabled.就会跳过自检2.2000/xp的是用chkntfs /x后面加盘符,比如禁用d chkntfs /x d: 如果是windows98: 98的可以用系统自带的msconfig工具在“运行”的输入框中,键入“msconfig”,按“确定”按钮。这时会启动系统配置实用程序,在常规选项卡里点击“高级”按钮,然后选中“如果关机失败,请禁用磁盘扫描程序”前面的选择框,就可以了。



    开机自检有提示音,不同的BIOS有不同的提示。

    五、BIOS是什么语言编写的


    传统BIOS是汇编语言,图形化EFIC语言?


    六、硬盘基础知识(硬盘的DOS管理结构)


    由于MBR位于硬盘上。所以需要先了解磁盘的结构以及扇区的概念。

    6.1、磁道,扇区,柱面和磁头数

    硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2N次方(N0.1.2.3)字节信息。在DOS中每扇区是128×22次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:

    存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

    要点:(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头

    2)盘片被划分为多个扇形区域即扇区

    3)同一盘片不同半径的同心圆为磁道

    4)不同盘片相同半径构成的圆柱面即柱面

    5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

    6)信息记录可表示为:××磁道(柱面),××磁头,××扇区

    磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。一张1.44MB3.5英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。



    扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。1.44MB3.5英寸的软盘,每个磁道分为18个扇区。

    柱面:硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容量=柱面数*磁头数*扇区数*512B


    6.2、

    “簇”是DOS进行分配的最小单位。当创建一个很小的文件时,如是一个字节,则它在磁盘上并不是只占一个字节的空间,而是占有整个一簇。DOS视不同的存储介质(如软盘,硬盘),不同容量的硬盘,簇的大小也不一样。簇的大小可在称为磁盘参数块(BPB)中获取。簇的概念仅适用于数据区。

    本点:(1)“簇”是DOS进行分配的最小单位。

    2)不同的存储介质,不同容量的硬盘,不同的DOS版本,簇的大小也不一样。

    3)簇的概念仅适用于数据区。

    6.3、扇区编号定义:绝对扇区与DOS扇区


    由前面介绍可知,我们可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域,或是说柱面/磁头/扇区与磁盘上每一个扇区有一一对应关系,通常DOS将“柱/磁头/扇区”这样表示法称为“绝对扇区”表示法。但DOS不能直接使用绝对扇区进行磁盘上的信息管理,而是用所谓“相对扇区”或“DOS扇区”。“相对扇区”只是一个数字,如柱面140,磁头3,扇区4对应的相对扇区号为2757。该数字与绝对扇区“柱面/磁头/扇区”具有一一对应关系。当使用相对扇区编号时,DOS是从柱面0,磁头1,扇区1开始(注:柱面0,磁头0,扇区1没有DOS扇区编号,DOS下不能访问,只能调用BIOS访问),第一个DOS扇区编号为0,该磁道上剩余的扇区编号为116(设每磁道17个扇区),然后是磁头号为2,柱面为017个扇区,形成的DOS扇区号从17 33。直到该柱面的所有磁头。然后再移到柱面1,磁头1,扇区1继续进行DOS扇区的编号,即按扇区号,磁头号,柱面号(磁道号)增长的顺序连续地分配DOS扇区号。

    公式:记DH--第一个DOS扇区的磁头号

    DC--第一个DOS扇区的柱面号

    DS--第一个DOS扇区的扇区号

    NS--每磁道扇区数

    NH--磁盘总的磁头数

    则某扇区(柱面C,磁头H,扇区S)的相对扇区号RS为:

    RSNH×NS×(CDC)+NS×(HDH)+(SDS

    若已知RSDCDHDSNSNH

    S=(RS MOD NS)+DS

    H=((RS DIV NSMOD NH)+DH

    C=((RS DIV NSDIV NH)+DC

    要点:(1)以柱面/磁头/扇区表示的为绝对扇区又称物理磁盘地址

    2单一数字表示的为相对扇区或DOS扇区,又称逻辑扇区号

    3)相对扇区与绝对扇区的转换公式

    6.4、磁盘区域的划分


    格式化好的硬盘,整个磁盘按所记录数据的作用不同可分为主引导记录(MBR:MainBoot Record),Dos引导记录DBR:DosBoot Record),文件分配表(FAT:FileAssign Table),根目录BD:BootDirectory)和数据区。前5个重要信息在磁盘的外磁道上,原因是外圈周长总大于内圈周长,也即外圈存储密度要小些,可靠性高些。

    要点:(1)整个硬盘可分为MBRDBRFATBD和数据区。

    2MBRDBRFAT,和BD位于磁盘外道。

    6.5、MBR


    MBR位于硬盘第一个物理扇区(绝对扇区)柱面0,磁头0,扇区1处。由于DOS是由柱面0,磁头1,扇区1开始,故MBR不属于DOS扇区,DOS能直接访问。MBR中包含硬盘的主引导程序和硬盘分区表。分区表有4个分区记录区。记录区就是记录有关分区信息的一张表。它从主引导记录偏移地址01BEH处连续存放,每个分区记录区占16个字节。

    分区表的格式

    分区表项的偏移意义  占用字节数

    00引导指示符1B

    01分区引导记录的磁头号1B

    02分区引导记录的扇区和柱面号2B

    04系统指示符1B

    05分区结束磁头号1B

    06分区结束扇区和柱面号2B

    08分区前面的扇区数4B

    0C分区中总的扇区数4B

    4个分区中只能有1个活跃分区,即C盘。标志符是80H在分区表的第一个字节处。若是00H则表示非活跃分区。例如:

    80 01 01 00 0B FE3F 81 3F 00 00 00 C3 DD 1F 00

    00 00 01 82 05 FE BF 0C 02 DE 1F 00 0E 90 61 00

    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    要点:(1MBR位于硬盘第一个物理扇区柱面0,磁头0,扇区1处。不属于DOS扇区,

    2)主引导记录分为硬盘的主引导程序和硬盘分区表。

    6.6、DBR

    DBR位于柱面0,磁头1,扇区1,即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)。其中DOS引导程序完成DOS系统文件(IO.SYS,MSDOS.SYS)的定位与装载,而BPB用来描述本DOS分区的磁盘信息,BPB位于DBR偏移0BH处,共13字节。它包含逻辑格式化时使用的参数,可供DOS计算磁盘上的文件分配表,目录区和数据区的起始地址,BPB之后三个字提供物理格式化(低格)时采用的一些参数。引导程序或设备驱动程序根据这些信息将磁盘逻辑地址(DOS扇区号)转换成物理地址(绝对扇区号)。BPB格式
    

    序号偏移地址意义

    1 03H0AHOEM

    2 0BH-0CH每扇区字节数

    3 0DH每簇扇区数

    4 0EH0FH保留扇区数

    5 10H FAT备份数

    6 11H12H根目录项数

    7 13H14H磁盘总扇区数

    8 15H描述介质

    9 16H17HFAT扇区数

    10 18H19H每磁道扇区数

    11 1AH1BH磁头数

    12 1CH1FH特殊隐含扇区数

    13 20H23H总扇区数

    14 24H25H物理驱动器数

    15 26H扩展引导签证

    16 27H2AH卷系列号

    17 2BH35H卷标号

    18 36H3DH文件系统号

    DOS引导记录公式:

    文件分配表≡保留扇区数

    根目录≡保留扇区数+FAT的个数×每个FAT的扇区数

    数据区≡根目录逻辑扇区号+(32×根目录中目录项数+(每扇区字节数-1))DIV每扇区字节数

    绝对扇区号≡逻辑扇区号+隐含扇区数

    扇区号≡(绝对扇区号MOD每磁道扇区数)+1

    磁头号≡(绝对扇区号DIV每磁道扇区数)MOD磁头数

    磁道号≡(绝对扇区号DIV每磁道扇区数)DIV磁头数

    要点:(1DBR位于柱面0,磁头1,扇区1,其逻辑扇区号为0

    2DBR包含DOS引导程序和BPB

    3BPB十分重要,由此可算出逻辑地址与物理地址。

    6.7、文件分配表

    文件分配表是DOS文件组织结构的主要组成部分。我们知道DOS进行分配的最基本单位是簇。文件分配表是反映硬盘上所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。DOS在给一个文件分配空间时总先扫描FAT,找到第一个可用簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内。即形成了“簇号链”。FAT就是记录文件簇号的一张表。FAT的头两个域为保留域,对FAT12来说是3个字节,FAT来说是4个字节。其中头一个字节是用来描述介质的,其余字节为FFH。介质格式与BPB相同。

    第一个字节的8位意义:

    7 6 5 4 3 2 1

    └─────-│┌0非双面

    1└┤

    1双面

    0不是8扇区

    └┤

    18扇区

    │┌0不是可换的

    └┤

    1是可换的

    FAT结构含义

    FAT12 FAT16意义

    000H 0000H可用

    FF0HFF6HFFF0HFFF6H保留

    FF7H FFF7H

    FF8HFFFHFFF8HFFFFH文件最后一个簇

    ×××H××××H文件下一个簇

    对于FAT16,簇号×2作偏移地址,从FAT中取出一字即为FAT中的域。

    逻辑扇区号=数据区起始逻辑扇区号+(簇号-2)×每簇扇区数

    簇号=(逻辑扇区号-数据区起始逻辑扇区号)DIV每簇扇区数+2

    点:(1FAT反映硬盘上所有簇的使用情况,它记录了文件在硬盘中具体位置(簇)。

    2)文件第一个簇号(在目录表中)和FAT的该文件的簇号串起来形成文件的“簇号链”,恢复被破坏的文件就是根

    据这条链。

    3)由簇号可算逻辑扇区号,反之,由逻辑扇区号也可以算出簇号,公式如上。

    4FAT位于DBR之后,其DOS扇区号从1开始。

    6.8、文件目录

    文件目录是DOS文件组织结构的又一重要组成部分。文件目录分为两类:根目录,子目录。根目录有一个,子目录可以有多个。子目录下还可以有子目录,从而形成“树状”的文件目录结构。子目录其实是一种特殊的文件,DOS为目录项分配32字节。目录项分为三类:文件,子目录(其内容是许多目录项),卷标(只能在根目录,只有一个。目录项中有文件(或子目录,或卷标)的名字,扩展名,属性,生成或最后修改日期,时间,开始簇号,及文件大小。

    目录项的格式

    字节偏移意义占字节数

    00H文件名8B

    08H扩展名3B

    0BH文件属性1B

    0CH保留10B

    16H时间2B

    18H日期2B

    1AH开始簇号2B

    1CH文件长度4B

    目录项文件名区域中第一个字节还有特殊的意义:00H代表未使用

    05H代表实际名为E5H

    EBH代表此文件已被删除

    目录项属性区域的这个字节各个位的意义如下:7 6 5 4 3 2 1 0

    未 修 修 子 卷 系 隐 只

    用 改 改 目 标 统 藏 读

    标 标 录   属 属 属

    志 志     性 性 性

    注意:WINDOWS的长文件名使用了上表中所说的“保留”这片区域。

    要点:(1)文件目录是记录所有文件,子目录名,扩展名属性,建立或删除最后修改日期。文件开始簇号及文件长度的一张

    记表.

    2DOSDIR列出的内容训是根据文件目录表得到的。

    3)文件起始簇号填在文件目录中,其余簇都填在FAT中上一簇的位置上。

    6.9、物理驱动器与逻辑驱动器


    物理驱动器指实际安装的驱动器。

    逻辑驱动器是对物理驱动器格式化后产生的。

    6.10、硬盘接口


    ATA

    全称Advanced Technol

    ogy Attachment,是用传统的 40-pin 并口数据线连接主板与硬盘的,外部接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占空间,不利计算机散热,将逐渐被SATA所取代。

    IDE

      IDE的英文全称为“Integrated DriveElectronics”,即“电子集成驱动器”,俗称PATA并口。

    SATA

      使用SATASerial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。2001年,由IntelAPTDellIBM、希捷、迈拓这几大厂商组成的SerialATA委员会正式确立了SerialATA 1.0规范,2002年,虽然串行ATA的相关设备还未正式上市,但SerialATA委员会已抢先确立了SerialATA 2.0规范。SerialATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。

    SATA2

      希捷在SATA的基础上加入NCQ本地命令阵列技术,并提高了磁盘速率。

      SCSI全称为Small Computer SystemInterface(小型机系统接口),历经多世代的发展,从早期的SCSI-II,到目前的Ultra320 SCSI 以及Fiber-Channel(光纤通道),接头类型也有多种。SCSI硬盘广为工作站及个人计算机以及服务器所使用,因为它的转速快,可达15000 rpm,且数据传输时占用CPU运算资源较低,但是单价也比同样容量的ATASATA硬盘昂贵。

      SASSerial Attached SCSI)是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到3Gb/s。此外也透过缩小连接线改善系统内部空间

      此外,由于SAS硬盘可以与SATA硬盘共享同样的背板,因此在同一个SAS存储系统中,可以用SATA硬盘来取代部分昂贵的SCSI硬盘,节省整体的存储成本

    6.11、硬盘制造商


    EMC

      EMC为一家美国信息存储资讯科技公司,主要业务为信息存储及管理产品、服务和解决方案。EMC公司创建于1979年,总部在马萨诸塞州霍普金顿市

      EMCClariion CX500EMC公司的股票符号是EMC,在纽约股票交易所交易,并且是S&P 500 成份股之一。

    希捷(Seagate)

      希捷科技(英语:SeagateTechnologyNYSESTX)是全球主要的硬盘厂商之一,于1979年在美国加州成立,现时在开曼群岛注册。现时,希捷的主要产品包括桌面硬盘,企业用硬盘,笔记本电脑硬盘和微型硬盘。在专门研发硬盘的厂商中,希捷是历史最悠久的。它的第一个硬盘产品,容量是5MB。在20065月,希捷科技收购了另一间硬盘厂商-迈拓公司。产品销量方面,希捷报称自己是第一间公司,售出10亿个硬盘产品。

    西部数据(Westdigital)

      市场占有率仅次于希捷。以桌面产品为主。其桌面产品分为侧重高IO性能的Black系列(俗称“黑盘”),普通的Blue系列(俗称蓝盘),以及侧重低功耗、低噪音的环保Green系列(俗称绿盘)。

      西部数据同时也提供面向企业近线存储的RaidEdition系列,简称RE系列。同时也有SATA接口的10000RPM的猛禽系列和迅猛龙(VelociRaptor)系列。

    日立(Hitachi)

      第三大硬盘厂商。主要由收购的原IBM硬盘部门发展而来。

      日立制作所(日文:株式会社日立制作所;英文:Hitachi,Ltd.),简称日立,总部位于日本东京,致力于家用电器、电脑产品、半导体、产业机械等产品,是日本最大的综合电机生产商

     三星(Samsung)

      三星电子(SamsungElectronics KSE005930KSE005935LSESMSNLSESMSD)是世界上最大的电子工业公司,三星集团子公司之一。19383月它于大韩民国大邱广域市成立,创始人是李秉喆,现在的社长是李健熙。一开始它是一个出口商,但很快它就进入了许多其它领域。今天它在全世界58个国家拥有20多万职员。2003年,它的周转值为1017亿美元。在世界上最有名的100个商标的列表中,三星电子是唯一的一个韩国商标,是韩国民族工业的象征。

    迈拓(Maxtor

      迈拓(Maxtor)是一家成立于1982年的美国硬盘厂商,在2006年被另外一家硬盘厂商希捷公司收购。[1]200512月即收购前,迈拓公司是世界第三大硬盘生产商。现在迈拓公司作为希捷公司的一家子公司运营。迈拓同时经营桌面电脑与服务器市场,相对于速度而言,迈拓更关注于硬盘容量。

    东芝(Toshiba)

      是日本最大的半导体制造商,亦是第二大综合电机制造商,隶属于三井集团旗下。东芝是由两家日本公司于1939年合并成的。

      东芝是世界上芯片制造商中的重要成员。20092月,东芝并购富士通硬盘部门。

    富士通(Fujits

      富士通株式会社(FujitsūKabushiki-gaisha)是一家日本公司,专门制作半导体、电脑(超级电脑、个人电脑、服务器)、通讯装置及服务,总部位于东京。

      20092月,东芝并购富士通硬盘部门。

    七、MBR的结构


    主引导记录(MasterBoot Record)

    512字节(一个扇区)

    MBR描述了逻辑分区的信息,包含文件系统以及组织方式。此外,MBR还包含计算机在启动的第二阶段加载操作系统的可执行代码或连接每个分区的引导记录(VBR)。这个MBR代码通常被称为引导程序。

    由于MBR分区表的最大可寻址的存储空间只有2Tb232×512字节)。因此,在大硬盘出现的现在,MBR分区方式逐渐被GUID分区表取代。

    MBR不可能存在于不可分区的媒介如软盘等中

    MBR,即主引导记录,是对IBM兼容机的硬盘或者可移动磁盘分区时,在驱动器最前端的一段引导扇区。MBR概念是在1983PC DOS2.0支持硬盘后才有的。

    为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。

    硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPTDiskPartition table)和分区有效标志。

    在总共512字节的主引导扇区里主引导程序(bootstrapcode area)占446个字节,

    第二部分是Partitiontable区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。

    第三部分是magicnumber,占2个字节,固定为0xAA550x55AA,这取决于处理器类型[2] ,如果是小端模式处理器[3] (如Intel系列),则该值为0xAA55;如果是大端模式处理器[3] (如Motorola6800),则该值为0x55AA。如果该标志错误系统就不能启动。

    注意

    MBR是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写,如在minix3里面,可以用命令:installboot-m /dev/c0d0 /usr/mdec/masterboot来把masterboot这个小程序写到mbr里面,masterboot通常用汇编语言来编写。我们也可以用ROM-BIOS中提供的INT13H2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。

    有的分法更详细分为4个部分

    主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。

    出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。

    分区表DPT,DiskPartition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4

    结束标志字,偏移地址01FE--01FF2个字节值为结束标志0xAA550x55AA,称为“魔数”(magicnumber)。如果该标志错误系统就不能启动。


    主分区加扩展分区只能是4个(扩展分区下划分逻辑分区,随意)

    具体含义如下:

    10x00~0x1BD446个字节,包含一段指令,用以通知计算机如何访问分区表并定位操作系统的位置

    这部分的代码会因为操作系统不同而不同,利用引导代码可以实现多重系统引导。多系统引导有两种方法可以实现:一种方法是用Windows操作系统在引导分区中设置一段代码,先加载进入用户选择系统的界面,允许用户选择要进入的系统,再进入指定的系统;第二种方法是改变MBR中的引导代码,该代码直接呈现给用户一个选择系统的界面

    20x1BE~0x1FD64个字节,4个分区表项,每个表项占用16个字节,描述一个分区,最多可以描述4个分区(这就是为什么MBR分区体系只能分成4个区【我们平时看到的分区一般可以从26个字母中选取任意多个当做分区标识(多于4个),这是因为那些分区是逻辑分区,这里的4个分区指的是主分区和扩展分区的数目,而逻辑分区是在扩展分区中划分出来的,也叫做二级、三级扩展分区。】)。

    分区表项并没有顺序要求,即不要求第一个分区表项在第二个分区表项前。

    分区表也不要求从第一个分区表项开始

    30x1FE~0x1FF2个字节,有效结束标志0xAA550x55AA。如果没有这个标志,操作系统会认为磁盘没有初始化,无法正确加载磁盘的分区。

    分区表参数含义(字节)

    0活动(80)或非活动分区(00

    1 2 3起始的磁头01柱面01扇区00

    4分区类型符NTFS07FAT320B)扩展(0F

    5 6 7结束的磁头FE柱面FF扇区FF

    8 9 A B本分区之前已用扇区数

    C D E F本分区大小

    八、为什么听到说最大能处理2T的硬盘

    由于MBR分区表的最大可寻址的存储空间只有2Tb4个字节存储扇区数,一个扇区512KB)。因此,在大硬盘出现的现在,MBR分区方式逐渐被GUID分区表取代。

    1TB=1024GB

    240

    1GB=1024MB

    230

    1MB=1024KB

    220

    1KB=1024字节

    210次方

     

    29次方是512


    因为这一分区用4个字节存储分区的总扇区数,最大能表示232次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB

    九、启动过程

    1. BIOS :开机主动执行。会识别第一个可开机的设备,BIOS可以设置从哪里开机,比如CDUSB,或者硬盘等。

    2. MBRMaster boot Record)第一个可开机的设备的第一个扇区的主引导分区块,内包含引导加载程序,引导程序有三个功能


    提供菜单:选择不同的启动选项。多重引导

    加载内核文件:直接指向可引导的程序区段来开始操作系统

    转交其他loader:将引导装载功能转交给其他loader负责。但是windowsloader默认不具有控制转交权的功能,因此不能使用windowsloader来加载linuxloader.


    MBR不属于操作系统。


    每个操作系统都会安装一套自己的boot loader到它自己的文件系统,而在安装linux的时候,可以选择将boot loader安装到MBR,也可以选择不安装到MBR。如果选择安装到MBR,那么理论上MBRboot sector都会有一份boot loader程序。

    而安装windows时候,默认主动将MBRboot sector都安装一份boot loader

    这就是为什么装双系统的时候,简单点,先装WINDOWS,再装linux,使用linux来选择启动引导windows或者linux。如果先安装linux,再安装windowswindows会覆盖MBR,到时候虽然可以手动修改MBR,但是更麻烦。

    1、如果先安装linux,再安装windowswindows的引导程序直接启动windows而不会引导linux启动。也就是说如果先安装linux,再安装windows,那么能够直接启动的就只有windows,而要想启动linux,就需要用其他方法引导。

     

    2、正确的方法是先安装Windows,再安装Linux,不会破坏windows的引导程序,这样linuxgrub引导程序会加载电脑里安装了的所有的系统。


     
     




    十、,再安装linux,linux会重写MBR,那么为何还能引导到Windows ?那么先安装哪一个,区别是什么?


    在安装Linuxwindows双系统时通常是先安装windows再安装Linux,因为windows会对主引扇区录进行充0,因而破坏主引导记录。当安装完windows再安装LinuxLinux会将grub安装到主引导扇区,然后通过grub的引导菜单来引导Linuxwindows操作系统,这种引导顺序是grub->linux/(ntldr>windows),这样导致的后果是如果Linux系统故障或者grub故障就会导致windows无法使用。

    如果在安装完Windows后再安装Linux时不安装grub,让Linux安装程序不修改主引导扇区,然后在安装完Linux后再在windows下安装windows版本的grub程序,让windowsntldr来引导grub,然后再通过grub来引导Linux。这样的引导顺序是ntldr>windows/(grub>linux)。因此下面使用这个中方式安装双系统。

    windows下安装grub引导Linux



    当然会重写MBR,所有的操作系统都会重写MBR.ghost的除外

    linux会改写512字节的一个字节原来是8的好像改成2grub引导了


    
    展开全文
  • 启动电脑,如果发现问题,就会主动报错。主要有以下一些信息显示:(1)BadCMOSBattery说明:主机内的CMOS电池电力不足。(2)CacheControllerError说明:CacheMemory控制器损坏。(3)CacheMemoryError说明:Cache...
  • 前几天电脑出问题重装系统时,本来打算安装一个Win...界面上,网上了一下,看到有很多人说ls (hd0,msdos)/grub之类的,后来尝试无果,突然想起是不是BIOS里有个选项是选择UEFI First还是Legency First,于是看了...
  • DOS的串口编程

    2013-10-07 11:01:18
    DOS的串口编程   第一章串行通信接口 串行通信使用单条数据线代替了并行通信的8位数据线,传输的距离更远。通信接口每次从CPU得到8位数据,然后通过一个并行入串行出的移位寄存器,转换成串行位,每次发送一位...
  • 安装Linux时,如果机器之前装过VMware EXi5系统,分区时会出现 ************************* 分区错误 您所引导分区位于一个使用GPT分区方案的磁盘中 ************************* 这样的错误提示。 目前...
  • 安装Linux时,如果机器之前装过VMware EXi5系统,分区时会出现*************************分区错误您所引导分区位于一个使用GPT分区方案的磁盘中*************************这样的错误提示。目前我们可以接触到的...
  • 初学Linux,记录资料,以备留存,亲手测试了一部分,有...根据名称查找/目录的filename.txt文件。 查看一个程序是否运行ps –ef|grep tomcat 查看所有有关tomcat的进程 终止线程kill -9 19979 终止线程号位19979的线
  • 板卡接触不良的情况运行会引起系统死机,因此更换电脑配件时,一定要使板卡与主机板充分接触。 3.定期清洁机箱。灰尘太多会使板卡之间接触不良,引起系统运行中死机,因此机箱要随时清洁,不要让太多的...
  • 断续学Linux以来就一直没完全搞清楚磁盘分区的问题,现在虽然还是不清楚,但应该有点思路了,且记。 我装了双系统,首先看win 7看到的磁盘分区情况: 本来是只有恢复分区,保留分区,以及CDFG盘,中间的...
  • 1. Linux 系统 中,以文件方式访问设备 。 2. Linux 内核引导时,从文件/etc/fstab中读取要加载的文件系统 。 3. Linux 文件系统中每个文件用indoe节点来标识。 4. 全部磁盘块由四个部分组成,分别为引导...
  • 常用必须命令 系统服务管理 systemctl list-units --type=service 输出系统中各个服务的状态 systemctl status firewalld 查看服务的运行状态 systemctl stop firewalld 关闭服务 systemctl start firewalld 启动...
  • linux命令速

    2018-03-24 15:13:49
    文件和目录  cd /home 进入 '/ home' 目录'  cd .. 返回上一级目录  cd ../.. 返回上两级目录  cd 进入个人的主目录  cd ~user1 进入个人的主目录  cd - 返回上次所在的目录  ...ls -a 显示隐藏文件 
  • sudo parted -l /dev/nvme0n1p7
  • 系统启动详解

    2013-12-06 15:00:04
    打开电源启动机器几乎是电脑爱好者每天必做的事情,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机显示这些启动画面时都做了些什么工作呢?相信有的朋友还不是很清楚,本文就来介绍一下...
  • 结果类似于:(hd0,msdos1),(hd0,msdos3)…… 2. ls (hd0,x)/boot/grub 将x换成具体数字,即第一步查询到的。直到不出现unknown filesystem,假如执行了ls (hd0,5)/boot/grub 后不出现 3. set root=hd0,5 ...
1 2 3 4 5 ... 20
收藏数 1,598
精华内容 639
热门标签