电脑启动不了怎么弄好看,电脑黑屏按哪三个键

电脑开不了机,按开机键就黑屏

style="text-indent:2em;">本篇文章给大家谈谈电脑启动不了怎么弄好看,以及电脑黑屏按哪三个键对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

  1. 电脑黑屏按哪三个键
  2. 电脑开不了机,电源好的就是屏幕不显示
  3. 我的电脑蓝屏了,打开电脑进入不了桌面,用光盘重装系统也无济于事,该怎么办
  4. 计算机必须先运行程序,然后才能启动,但是不启动又无法运行程序,到底是怎么启动的

电脑黑屏按哪三个键

电脑黑屏一般情况下我们可以按Ctrl+Alt+Del这三个键来进行热启动重启。但电脑黑屏的故障原因有多种,需要我们根据具体情况去具体分析,对症下药才能解决问题。

一般来讲,Ctrl+Alt+Delete组合键,可以热启动重启电脑。但要解决“黑屏”问题,还是要根据黑屏的原因而定。

原因一:显示器接触不好会黑屏。

把显示器接主机箱后面的接口拆下来并清理干净,再接好了试试,注意不要把接口接反了。如果接触没问题还不行,最好换一台显示器试试,以便确定是否显示器有问题。

原因二:内存条接触不好会黑屏。

如果内存条有故障,一般都会有嘟嘟长短报警声,如果有报警声的话,你打开机箱把内存条拿出来用无水酒精或橡皮擦干净,重新插拔一次或者换个插槽试试,注意不要把内存条插反了。原因三:显卡接触不好会黑屏。你把显卡拆下来并清理干净,再接好了试试。如果接触没问题,最好问人借一个换一个显卡试试,以便确定是否是显卡问题。

原因四:软驱启动不当会黑屏。

有时软驱启动不当会造成电脑开机或重启黑屏,为避免此类情况也可以在BIOS中取消软盘启动项,开机按DEL进入BIOS然后选advancedbiossetup看见有floopy的就把它改成HDD-0或IDE-0。

原因五:系统设置引起的假黑屏。

右击桌面选“属性”-“屏幕保护程序”--设置无屏幕或其他屏保并且把等待时间设长久一些。

原因六:显示器设置不当会黑屏。

有时显示器承受不了显卡的高分辨率,调节显示器亮度按扭。

原因七:新驱动加入不当会黑屏。

如果刚安装完某个硬件的新驱动出现了黑屏故障,请到安全模式来卸载或禁用这个新驱动(进入“安全模式”方法一:开机时迅速按下F8键选择“安全模式”。方法二:第1,开始--运行--输入msconfig--确定--点击“Boot.ini”标签;第2,选择“/SAFENOOT”;第3,点击“确定”保存退出重启电脑;第4,重启之后出现的WindowsXP高级选项菜单选择“安全模式”即可;第5,如果要取消“高级选项菜单”重复上述步骤,不同的是第2步取消选择“/SAFENOOT”。)

原因八:新硬件加入不当会蓝屏。

检查新硬件是否插牢,将其拔下,然后换个插槽试试,并安装最新的驱动程序。

如果不是以上原因,或者是,都可以先用以下常用的黑屏解决方法:开机时快速按下F8键就会出现高级启动选项菜单,接着选择“最后一次正确配置”启动电脑。

参考资料:http://www.coozhi.com/shenghuojiaju/shenghuochangshi/110636.html

电脑开不了机,电源好的就是屏幕不显示

内存条拔下,擦拭干净后在插入。在启动电脑。

3、如果是机器内灰尘过多,接触不良而引起死机故障,检查CPU和显卡散热,除尘,上油,或更换风扇,可以通过清洁机箱,将所有的连接插紧、插牢。

4、如果连接线插好了,屏幕跟键盘灯还是没亮,则可能是内存接触不良引起。需要拔掉电源,然后拆开机箱左侧面的螺丝。取下左板。在主板的风扇旁边可以看到2个或者4、6个插槽。更换内存条,换好后,开机测试。

如果仍然不行或者听到长响的报警声,说明内存没装好,重新插一次或者插另外的槽试试。

我的电脑蓝屏了,打开电脑进入不了桌面,用光盘重装系统也无济于事,该怎么办

转发

https://jingyan.baidu.com/article/0320e2c1015bc61b87507bb2.html

电脑突然蓝屏!蓝屏代码:UNEXPECTEDKERNELMODETRAP反复开机(多次)无法正常启动

工具/原料

Windows10,8,7操作系统

方法/步骤

1/5分步阅读

首先,我们看到这段错误代码后需要分析一下情况

1电脑上没有安装360(以下所说的360是360安全防护软件)

2电脑安装了360+其他杀毒软件(例如,卡巴斯基,ESETNod32etc..)

3电脑上只安装了360

(360有一个测试版本)这个版本提供分析软件多余的广告等功能。

建议先不要升级,容易冲突。

提示:如果你电脑有安装系统还原也就是C分区的那个,并且没有关闭。

用Windows10的修复是可以自己修复的。

2/5

1如果你没有安装360,而且开机后出现上图的蓝屏信息。

解决方法

WIndows10通过反复开机进入修复界面-解决问题选项-找到开机选项

然后选择带网络模式的安全启动,不带网络模式的安全启动也可以,不过

如果想用网络,可以带上,有帮助。

如果是WIn8,WIn7,同样,进入安全启动模式,有的品牌机开机后按F8

进入主板设置模式后3次应该就能进入安全模式启动。

3/5

安全启动后进入系统。

右键我的电脑。选择属性

然后在左侧选择高级设置

然后在启动和故障恢复里面选择设置

然后系统和故障恢复选项卡里面找到写入调试信息

把下拉框里面改成小内存转储(128K)这个选项,有的朋友

说我的没有128K这个选项,请您不用介意,128这个数字是有电脑根据你

电脑的内存大小算出来的。只要选择小内存转储就好。

然后重新启动就好了。

4/5

如果你电脑有安装360

请卸载360.因为在安全模式下,WIn10是部让删除杀毒软件的,例如NOD32就是部可以的,所以你可以不用管,但是360安全卫士在微软注册的不是杀毒软件。

以NOD32为例,如果开启设备控制这项功能,就容易造成与360安全卫士的冲突。

其他杀毒软件也有类似功能,但是具体不兼容的原因有很多。有的提示删除360等软件才能安装的。

之后重新启动电脑一起就正常了

你可以再安装杀毒软件,至于360可以根据需要了。

同时提醒无论360国内版本还是国际版本,都有这个问题

(哪怕是360国际高级会员版本(付费版)也是与Nod32冲突)

这里以Nod32Internetsecurity测试的。

但是360国内版本与卡巴斯基可以搭配一下,方法是全部关闭360的服务

包括自身启动。经过1年的测试,还未冲突。

卡巴斯基是默认安装版本为KasperskyTotalSecurity.

如果非要安装请先安装360然后全部关闭服务后在安装杀毒软件

5/5

如果电脑只有360.

先做步骤1,如果还是启动不了,WIn10系统下的修复模式下,选择不带杀毒软件的安全启动

然后再做步骤3就好了。

计算机必须先运行程序,然后才能启动,但是不启动又无法运行程序,到底是怎么启动的

计算机的启动过程可分成四个阶段。

一、第一阶段:BIOS

上个世纪70年代初,”只读内存”(read-onlymemory,缩写为ROM)发明,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。

这块芯片里的程序叫做”基本輸出輸入系統”(BasicInput/OutputSystem),简称为BIOS。

1.1硬件自检

BIOS中主要存放的程序包括:自诊断程序(通过读取CMOSRAM中的内容识别硬件配置,并对其进行自检和初始化)、CMOS设置程序(引导过程中,通过特殊热键启动,进行设置后,存入CMOSRAM中)、系统自动装载程序(在系统自检成功后,将磁盘相对0道0扇区上的引导程序装入内存使其运行)和主要I/O驱动程序和中断服务(BIOS和硬件直接打交道,需要加载I/O驱动程序)。

BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做”硬件自检”(Power-OnSelf-Test),缩写为POST。

如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。

1.2启动顺序

硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。

这时,BIOS需要知道,”下一阶段的启动程序”具体存放在哪一个设备。也就是说,BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做”启动顺序”(BootSequence)。

打开BIOS的操作界面,里面有一项就是”设定启动顺序”。

二、第二阶段:主引导记录

BIOS按照”启动顺序”,把控制权转交给排在第一位的储存设备。即根据用户指定的引导顺序从软盘、硬盘或是可移动设备中读取启动设备的MBR,并放入指定的位置(0x7c000)内存中。

这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给”启动顺序”中的下一个设备。

这最前面的512个字节,就叫做”主引导记录”(Masterbootrecord,缩写为MBR)。

2.1主引导记录的结构

“主引导记录”只有512个字节,放不了太多东西。它的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统。

主引导记录由三个部分组成:

其中,第二部分”分区表”的作用,是将硬盘分成若干个区。

2.2分区表

硬盘分区有很多好处。考虑到每个区可以安装不同的操作系统,”主引导记录”因此必须知道将控制权转交给哪个区。

分区表的长度只有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个一级分区,又叫做”主分区”。

每个主分区的16个字节,由6个部分组成:

最后的四个字节(”主分区的扇区总数”),决定了这个主分区的长度。也就是说,一个主分区的扇区总数最多不超过2的32次方。

如果每个扇区为512个字节,就意味着单个分区最大不超过2TB。再考虑到扇区的逻辑地址也是32位,所以单个硬盘可利用的空间最大也不超过2TB。如果想使用更大的硬盘,只有2个方法:一是提高每个扇区的字节数,二是增加扇区总数。

三、第三阶段:硬盘启动

这时,计算机的控制权就要转交给硬盘的某个分区了,这里又分成三种情况。

3.1情况A:卷引导记录

上一节提到,四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做”卷引导记录”(Volumebootrecord,缩写为VBR)。

“卷引导记录”的主要作用是,告诉计算机,操作系统在这个分区里的位置。然后,计算机就会加载操作系统了。

3.2情况B:扩展分区和逻辑分区

随着硬盘越来越大,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有一个区可以被定义成”扩展分区”(Extendedpartition)。

所谓”扩展分区”,就是指这个区里面又分成多个区。这种分区里面的分区,就叫做”逻辑分区”(logicalpartition)。

计算机先读取扩展分区的第一个扇区,叫做”扩展引导记录”(Extendedbootrecord,缩写为EBR)。它里面也包含一张64字节的分区表,但是最多只有两项(也就是两个逻辑分区)。

计算机接着读取第二个逻辑分区的第一个扇区,再从里面的分区表中找到第三个逻辑分区的位置,以此类推,直到某个逻辑分区的分区表只包含它自身为止(即只有一个分区项)。因此,扩展分区可以包含无数个逻辑分区。

但是,似乎很少通过这种方式启动操作系统。如果操作系统确实安装在扩展分区,一般采用下一种方式启动。

3.3情况C:启动管理器

在这种情况下,计算机读取”主引导记录”前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的”启动管理器”(bootloader),由用户选择启动哪一个操作系统。

Linux环境中,目前最流行的启动管理器是Grub。

对于grub而言,在MBR中的446字节的引导程序属于GRUB的开始执行程序,通过这段程序,进一步执行stage1.5或是stage2的执行程序,将在下面详细介绍执行过程。

其中stage1.5或是stage2便属于阶段2引导的过程了,stage2过程也是作为GRUBkernel的核心代码出现。Stage1.5过程(对于GRUB而言存在stage1.5,GRUB2则不存在)的功能很单一,主要就是为了引导stage2过程服务。由于stage2过程的代码存放在文件系统下的boot分区目录中,因此stage1.5过程就是需要提供一个文件系统的环境,而该文件系统环境需要保证系统可以找到stage2过程的文件,那么stage1.5阶段提供的文件系统需要是boot文件系统所对应的,这个在执行grubinstall过程中就已经确定了。stage2过程中,主要会把系统切换到保护模式,设置好C运行时环境,找到config文件(事实上就是menulist文件),如果没有找到就执行一个shell,等待用户的执行。然后的工作就变成了输入命令->解析命令->执行命令的循环中。当然该阶段引导的最终状态就是执行boot命令,将内核和initrd镜像加载进入内存中,进而将控制权转交给内核。

四、第四阶段:操作系统

控制权转交给操作系统后,操作系统的内核首先被载入内存。

以linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。

然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。

至此,全部启动过程完成。

以下补充部分细节:

BIOS启动细节:

a)按下电源开关,电源就开始向主板和其它设备供电;当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号);CPU马上就从地址FFFF:0000H处开始执行指令,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

b)系统BIOS的启动代码首先进行POST(Power-OnSelfTest,加电后自检)。POST的主要检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备;由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型;在正常情况下,POST过程进行得非常快,几乎无法感觉到它的存在。POST结束之后就会调用其它代码来进行更完整的硬件检测。

c)接下来系统BIOS将查找显卡的BIOS。前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡。此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

d)查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。

e)接着系统BIOS将检测和显示CPU的类型和工作频率,测试所有的RAM,并同时在屏幕上显示内存测试的进度。可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。

f)内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口和软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。

g)标准设备检测完毕后,系统BIOS内部支持即插即用的代码将开始检测和配置系统中安装的即插即用设备。每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。

h)到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

i)接下来系统BIOS将更新ESCD(ExtendedSystemConfigurationData,扩展系统配置数据)。ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中。通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时都能够看到“UpdateESCD…Success”这样的信息。不过,某些主板的系统BIOS在保存ESCD数据时使用了与Windows9x不相同的数据格式,于是Windows9x在它自己的启动过程中会把ESCD数据修改成自己的格式。但在下一次启动机器时,即使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式改回来。如此循环,将会导致在每次启动机器时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。

j)ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作:即根据用户指定的启动顺序从软盘、硬盘或光驱启动MBR。在这个过程中会按照启动顺序顺序比较其放置MBR的位置的结尾两位是否为0xAA55,通过这种方式判断从哪个引导设备进行引导。在确定之后,将该引导设备的MBR内容读入到0x7C00[1]的位置,并再次判断其最后两位,当检测正确之后,进行阶段1的引导。

EFI启动细节

与传统MBR相比,GPT采用了不同的分区方式。

对于传统MBR,其结构主要如下:

上图即对上文中所述的很形象的说明,在图中看到MBR被分成三个部分,分别是:Bootloader、分别表以及MagicNumber。其中Bootloader部分为stage1中被执行的起始部分。

相反,对于EFI系统中所采用的GPT分区方式,则采用了不同于MBR分区方式的形式,从下图中可以发现:

如上图所示,GPT分区表主要包括:保护MBR、首要GPT头、首要GPT、备用GPT、备用GPT头和磁盘数据区。保护MBR与正常的MBR区别不大,主要是分区表上的不同,在保护MBR中只要一个表示为0xEE的分区,以此来表示这块硬盘使用GPT分区表。首要GPT头包含了众多信息,具体内容如下:

分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还存储着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否有错误,如果出错了,可以使用软件从硬盘最后的备份GPT分区表恢复整个分区表,如果备份GPT也校验错误,那么磁盘将不可用,系统拒绝启动。

接下来主要是128个分区表项,GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区的唯一的GUID(这个指的是该分区本身,而之前的GUID指的是该分区的类型)。在接下来是分区其实和末尾的64位LBA编号,以及分区的名字和属性。具体结构如下表:

MBR引导

接下来开始真正的引导过程了,主要说明GRUP的引导。总体上GRUB更像是一个minios,只不过这个minios的作用只是加载其他的操作系统,在GRUB中包括stage1、stage1.5(可选)和stage2,其中stage1和stage1.5属于bootloader,stage2属于minios的内核部分。GRUB中stage1过程主要位于MBR的前446字节中(对于支持GPT分区的磁盘,同样有最开始的512字节作为保护MBR,保护MBR与正常的MBR区别不大,主要是分区表上的不同,在保护MBR中只要一个表示为0xEE的分区,以此来表示这块硬盘使用GPT分区表,不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作),之后的64字节为硬盘的分区表,最后两个字节为MBR结束标志位(0xAA55)。

stage1部分占用了446字节,其代码文件是源码目录下stage1/stage1.S文件,汇编后生成一个512字节的boot.img,被写在硬盘的0面0道1扇区中,作为硬盘的MBR。stage1的工作很简单,就是加载0面0道2扇区上的512字节到0×8000,然后跳转到0×8000执行。

在0面0道2扇区上的512字节内容为文件汇编后生成。该扇区上的内容的作用是加载stage1.5或是stage2过程,并将控制权转交。

Grub引导

在start过程将控制权转交后,接下来就是GRUB的核心过程了。该过程之所以区分stage1.5和stage2,主要原因是GRUB和GRUB2的区别。在GRUB2中,将stage1.5过程集成到了stage2的过程中,所以stage1.5过程仅仅是针对GRUB的。下面将会分别介绍两种GRUB版本的两种过程。

4.1GRUB中stage1.5过程

Stage1.5过程很无辜,它的作用很单一,但是非常关键。它的主要功用就是构造一个boot分区系统对应的文件系统,这样可以通过文件系统的路径(/boot/grub/)寻找stage2过程需要的core.img,进而加载到内存中开始执行。

Stage1.5存在于0面0道3扇区开始的地方,并一直延续十几k字节的区域,具体的大小与相应的文件系统的大小有关(文中涉及到了0面0道1-3+x扇区,这部分扇区为保留扇区,BIOS不会放置任何数据。正因为如此如果转换到GPT分区形式,系统将不能被正确引导,如上文所示,MBR后面的扇区都被其他内容所占据)。Stage1.5过程被构建成多种不同类型,但是功能类似,下面简单介绍一下基本的stage1.5过程的文件系统。e2fs_stage1_5(针对ext2fs,可引导ext2和ext3文件系统)、fat_stage1_5(针对fat文件系统,可引导fat32和fat16)、ffs_stage1_5、jfs_stage1_5、minix_stage1_5、reiserfs_stage1_5、vstafs_stage1_5和xfs_stage1_5,这些文件被称为stage1.5过程,这些文件每个至少都在11k以上。除此之外还有两个比较特殊的文件,分别为nbgrub和pxegrub,这两个文件主要是在网络引导时使用,只是格式不同而已,他们很类似与stage2,只是需要建立网络来获取配置文件。

由于stage1.5过程中会涉及到多个文件系统对应的文件,因此本文中主要以ext2fs为例进行说明,其他文件系统与此类似,可以同样进行分析理解。

对于ext2fs文件系统,用于生成该文件系统的stage1.5过程文件(e2fs_stage1_5)的代码为文件。

在文件中定义了每个文件系统对外的接口,用于上层调用,作为stage2过程寻找核心代码使用,文件系统一般被定义的接口主要就是三个函数,分别是mount、read和dir函数。对应ext2fs,其定义的函数为:

12345678

针对ext2fs有如上的函数名称,每个函数将具体在文件中被定义,这里面没有包含任何的写的过程,对于bootloader而言仅仅读就可以完成任务了,没必要对其系统进行写操作。其中ext2fs_mount函数用于检查文件系统类型,并将superblock读入到内存中;ext2fs_read函数和ext2fs_dir函数用于对文件系统具体的操作。在文件中除了需要对这三个函数的定义之外,还需要文件系统的属性的数据结构(superblock、inode和group结构,这些结构最初被定义在文件中),通过这些数据结构描述一个文件系统。

如果读者有兴趣可以试着创建新的文件系统的支持,可以参照目前存在的一些文件系统的模板(实例)编写。

4.2GRUB中stage2过程

GRUB中的核心过程也就是stage2过程了,该过程主要是在文件系统建立以后选择合适的操作系统进行加载并转交控制权,达到最后引导操作系统的目标。由于GRUB属于multibootloader,因此在引导的时候要进行选择,选择哪种操作系统来运行。在GRUB内部主要包括两种方式,首先是从menu.list中读取显示到屏幕让用户选择,其次是通过grub-shell中定义的命令手动进行启动。本文将在后面介绍这两种方式如何运行,接下来先介绍一下stage2的具体的执行过程。

在上面一节中介绍过,stage1.5过程中将boot分区的文件系统加载了,之后又做了一件事情,就是将控制权转交给stage2,而stage2入口的地方就是文件。文件属于汇编代码,主要作用是初始化C语言的运行环境,为下面执行c语言的函数做好准备,在准备好之后,将执行init_bios_info()函数。init_bios_info函数的作用是执行一些底层的函数,然后跳转到cmain执行,cmain函数位于文件中。cmain函数内部进行一个死循环,在循环内部首先加载配置文件,显示给用户,在这同时循环一个内层循环,在内层循环中,获取配置文件中的命令,并解析执行。过程中如果没有可用的配置文件,那么进入命令行模式(enter_cmdline函数),如果找到可用的menu,那么开始执行menu的对应的内容(run_menu函数)。

对于enter_cmdline()函数,将调用find_command(),进而执行相应命令的函数。

对于run_menu()函数,将调用文件中的run_script函数,进而调用find_command,执行相应命令的函数。

这两种方式虽然经过了不同的过程,对用户输入的行为进行分析和处理,最终调用的函数为find_command,在该函数中顺序循环比较“输入”的命令是否与系统内部定义的相同,如果相同转到执行该函数。在这个比较的过程中包含了一个全局的数据结构为structbuiltin(),由该数据结构组成了一个table类型(),将命令与相对应的builtin结构对应一起并进行串联。下面描述一下builtin结构的定义:

1234567891011121314

有兴趣的读者可以对上面的内容进行扩展,形成自己的命令,主要在文件中按照预定的格式更新,并添加到builtin_table中即可。

在上面打开配置文件的过程中,主要是通过一些文件操作函数(被定义在中)完成。这些文件操作函数主要包括:grub_open、grub_read、grub_seek和grub_close等,这些函数属于grub对外的上层接口,具体的函数内部将调用前文中提到的boot分区对应的文件系统的相应的函数完成,这个过程主要是通过回调函数来完成。该过程整体思路类似于面向对象过程,通过对象操作具体的函数。

文章分享结束,电脑启动不了怎么弄好看和电脑黑屏按哪三个键的答案你都知道了吗?欢迎再次光临本站哦!

电脑黑屏按了f8之后按什么键 电脑开机后黑屏进入不了桌面怎么解决

本文内容来自互联网,若需转载请注明:https://bk.66688891.com/1/24128.html