起动盘

openEuler安装系列详解01

发布时间:2022/5/7 14:54:50   

作为一名优秀的码农,必须熟练掌握的技能,大家肯定都能列出一大堆出来,多线程,操作系统,分布式等等……不过,在掌握这些晦涩难懂的知识前,码农们还需要掌握的一个重要的技能,那就是要学会怎么打开计算机。

小伙伴们有没有考虑过,当你按下电脑的启动键时,是什么在冥冥之中,指引计算机找到了操作系统并完成了启动?说到这个问题,那就不得不提的是:系统引导。

系统引导

在计算机中,引导是启动计算机过程中的一个重要阶段。计算机从按下开机键到系统启动完成可供用户操作为止,严格的来说分为两个阶段:引导(booting)和启动(startup)。引导阶段开始于按下电源开关,结束于内核初始化完成以及systemd进程成功运行。引导作为上电以后的第一个步骤,承担了系统自检,加载内核的重要责任。在开机后,计算机的主内存中并没有任何软件数据,因此必须由某些程序将软件加载到内存中才能使计算机继续工作,这可以通过CPU中的硬件、系统固件或者系统中单独的处理器来执行这些预先预置好的程序,其中服务器上常使用的方式是BIOS固件。

引导的主要流程:

其中,bootloader就是启动加载器,常见的就是syslinux以及grub2。在openEuler中只有在使用光盘启动legacyBIOS的情况下使用syslinux,其他情况下均使用grub2,这个我们会在下篇博客中着重介绍。

BIOS

BIOS(BasicInput/OutputSystem)是计算机主板上的一块很小的ROM/闪存芯片里面的固件程序,用来在引导过程中初始化硬件并为操作系统和程序提供运行时服务。BIOS固件是系统上电以后CPU运行的第一个软件,用来测试系统硬件组件并从大容量存储介质中加载bootloader程序。

legacyBIOS

传统的BIOS固件一般设计用于某特定计算机或主板型号,称为legacyBIOS。不同CPU在系统上电时首条PC(ProgramCounter)是由CPU设计者决定的,所以计算机启动时使用的BIOS程序地址会根据主板兼容的CPU来进行不同设置。

例如i的CPU首次启动时从0Xfffffff0h地址开始执行指令,这个地址在X86体系中一般是由CPU芯片组转发ROM得到,其中ROM里存储着BIOS的运行代码。

legacy在被CPU拉起以后,首先执行的指令一般为上电自检,检测范围包括RAM、显卡等硬件设备,硬件检测完成后,BIOS会将它找到的第一个有效的MBR分区表硬盘加载到物理内存地址0x7C00处(世界第一台个人PC中内存为32K,为了给OS留下充足的连续内存使用,将MBR磁盘中的引导代码加载到了最后1K的内存中,地址即0x7C00。因为bootloader在OS启动后不会再使用,操作系统在使用中可以覆写这块1K内存以达到使用最大数量的内存的目的)。legacy中的最后一条代码指令一般都是跳转到该地址。随后bootloader程序将执行拉起内核的动作。

随着时代的发展,legacyBIOS其自身的不足也逐渐暴露出来,例如寻址能力弱,难以集成第三方代码,自检时间长,不支持图形界面等。

UEFI

为了解决BIOS的技术局限性,英特尔开发定义了操作系统与平台固件之间的一系列软件接口规范,称之为可扩展固件接口(EFI)规范,并在年7月贡献给了UnifiedEFI论坛。即使没有安装操作系统,UEFI也可以支持计算机的远程诊断和修复。

最新的UEFI2.8版本已于年3月发布。

UEFI2.8规范文档

转载请注明:http://www.aideyishus.com/lktp/177.html

------分隔线----------------------------

热点文章

  • 没有热点文章

推荐文章

  • 没有推荐文章