BIOS boot

OS系列——操作系统镜像加载BIOS固件工作原理详解 0 前言 装过n多系统,制作过n多个启动优盘,所有教程上都讲重装系统前的第一步就是设置BIOS/UEFI为“U盘启动”,但一直不知道何为BIOS/UEFI。最近在学习南大蒋炎岩老师/教授的《操作系统:设计与实践》,终于弄明白了BIOS/UEFI是啥、BIOS/UEFI的工作原理以及操作系统镜像的加载过程这几问题。特将学习笔记整理如下。 1 Firm固件/BIOS 首先,BIOS和UEFI是两种常用的Firm固件,其中BIOS较为古老,UEFI较为新。 思考一个问题:计算机是如何将操作系统镜像源码加载到硬件中 阅读详情
一、基本概念
    1、BIOS的概念
  BIOS(Basic Input/Output System,基本输入输出系统)全称是ROM-BIOS,是只读存储器基本输入/输出系统的简写,它实际是一组被固化到电脑中,为电脑提供最低级最直接的硬件控制的程序,它是连通软件程序和硬件设备之间的枢纽,通俗地说,BIOS是硬件与软件程序之间的一个“转换器”或者说是接口(虽然它本身也只是一个程序),负责解决硬件的即时要求,并按软件对硬件的操作要求具体执行。
    BIOS,它在计算机系统中起着非常重要的作用。一块主板性能优越与否,很大程度上取决于主板上的BIOS管理功能是否先进。
    BIOS芯片,在主板上表现为一块长方型或正方型芯片,BIOS中主要存放:
    1、自诊断程序:通过读取CMOS RAM中的内容识别硬件配置,并对其进行自检和初始化;
    2、CMOS设置程序:引导过程中,用特殊热键启动,进行设置后,存入CMOS RAM中;
    3、系统自举装载程序:在自检成功后将磁盘相对0道0扇区上的引导程序装入内存,让其运行以装入DOS系统; 主要I/O设备的驱动程序和中断服务;
   由于BIOS直接和系统硬件资源打交道,因此总是针对某一类型的硬件系统,而各种硬件系统又各有不同,所以存在各种不同种类的BIOS,随着硬件技术的发展,同一种BIOS也先后出现了不同的版本,新版本的BIOS比起老版本来说,功能更强。
  2、MBR的概念
    主引导扇区位于硬盘的0磁道0柱面1扇区,共512bytes,由三大部分组成:
    硬盘主引导记录MBR(Master Boot Record)占446bytes
    分区表DPT(Disk Partition Table)占64bytes
    硬盘有效标志(Magic Number)占2bytes。AA和55被称为幻数(Magic Number),BOIS读取MBR的时候总是检查最后是不是有这两个幻数,如果没有就被认为是一个没有被分区的硬盘
    主引导扇区包含的MBR、DPT、MN,这3个区域是操作系统无关的,在每块硬盘上都存在;MBR是一段可执行程序,由各个操作系统写入不同的代码。MBR的存储空间限制为446字节,MBR所做的唯一的事情就是装载第二引导装载程序。Windows产生的MBR装载运行PBR;GRUB产生的MBR装载运行grldr。
    3、操作系统引导过程
    主引导记录(MasterBootRecord,MBR):512字节,位于硬盘的第一个扇区;可存放一小段程序及主分区表。MBR的boot code占用其中的前446个字节,随后的64个字节为DPT(Disk Partition Table,硬盘分区表)。
    XP系统引导过程是,BIOS自检后,DPT把系统控制权交给硬盘第一个分区的PBR(Partition Boot Record),XP的PBR会去找这个分区的ntldr,之后是boot.ini,选择启动的系统后load注册表,交控制权给ntoskrnl,然后加载驱动,系统配置等等。
    Vista的PBR不再找ntldr,而是找bootmgr,这个文件也是保存在硬盘第一个分区的根目录下.之后,bootmgr去找同路径下的\boot\BCD. BCD这个文件实际是一个注册表文件,里面的数据保存了系统的引导信息,如果是多系统引导,会提供引导的界面内容. 如果是单Vista系统,控制权会交给winload.exe,之后再去找ntoskrnl.exe.
  扩展引导记录(ExtendedBootRecord,EBR):512字节,位于扩展分区的第一个扇区,存放逻辑分区信息。
  分区引导区(PartitionBootRecord,PBR):512字节,位于每个非扩展主分区及每个逻辑分区的第一个扇区;可存放小段程序。
  活动分区(ActivePartition):可将所有主分区和逻辑分区中的一个标识为Active,表示系统启动时即加载运行其PBR程序的分区。
    DBR : DOS引导记录(DOS Boot Record)应称为OBR(OS Boot Record),意思是活动分区的PBR,即操作系统引导记录。

    二、分区概念
    一个硬盘的分区有Primary(主分区)、Extended(扩展分区)、Logical(逻辑分区)三种。
    1、主分区
    如果你只有一个硬盘,那么这个硬盘肯定应该有一个主分区,以前DOS必须在主分区才能启动。建立主分区的最大用途便是安装操作系统,另外如果你有多个主分区,那么只有一个可以设置为活动分区(Active),操作系统就是从这个分区启动的,当然了,只允许有一个活动分区,所谓的“激活分区”就是将某个主分区设置为活动分区。
    2、扩展分区
    因为主分区有先天的限制(最多只能有4个),扩展分区就是为了解决这种限制应运而生的,但是需要记住的是:它可是不能直接用来保存资料的,扩展分区的主要功能就是让你在其中建立逻辑分区,而且事实上只能建立20多个。
    3、逻辑分区(逻辑驱动器)
   从上面的介绍你可以了解到,逻辑分区并不是独立的分区,它是建立在扩展分区中的二级分区,而且在DOS/WINDOWS下,这样的一个逻辑分区对应于一个逻辑驱动器(Logical Driver),我们平时说的D: E:........一般指的就是这种逻辑驱动器。
   4、分区的限制
   一个硬盘最多只能划分为4个主分区,或者是3个主分区加上一个扩展分区,这是因为在硬盘的开头,也就是主引导扇区总共512字节存放着MBR占446bytes,DPT分区表占64bytes以及硬盘有效标志占2bytes,由于记录空间只有那么大,所以也只能记录这4个分区的信息。

  三、一般单操作系统启动过程
  1.BIOS加载并启动保存在硬盘MBR中的引导程序,该引导程序一般在操作系统安装时写入
  2.MBR引导程序扫描所有分区表,找出活动分区(WindowsMBR程序只会在MBR中的分区表中查找活动分区,即Windows只能安装在主分区;Linux无此限制)
  3.MBR引导程序加载并启动保存在活动分区PBR中的引导程序
  4.活动分区PBR中的引导程序加载并启动安装在其上的操作系统(例如对Win98,定位并执行io.sys;对WinXP,定位并执行ntoskrnl.exe;对于Linux,定位并执行vmlinuz-xxx内核映像)。显然PBR引导程序与操作系统密切相关,一般在操作系统安装时写入。
  总结为:BIOS–>MBR—>;PBR–>OS files

  四、修改标准过程实现按需启动指定操作系统
  使用BootLoader等软件置换MBR中的引导程序或PBR中的引导程序,如Windows的NTBoot Loader,Linux下的Lilo、Grub等。Windows NTBoot Loader一般用于在一台机器上安装多个Windows系统;Lilo或Grub用于在一台机器上安装多个Linux系统或同时安装Linux和Windows系统。

  五、MBR损坏及修复
    mbr的损坏不会危及数据,复也很简单,重写mbr就是,dos下面的fdisk/mbr即可修改DOS引导,像DISKGEN等工具修改MBR更是随手拈来。

      六、从U盘或移动硬盘启动操作系统的步骤
    1、U盘格式化后(FAT32或NTFS都可以),把U盘激活成活动分区(可使用DiskGenius硬盘分区软件)
    2、写入U盘活动分区的PBR,以达到PBR读取bootmgr文件的目的(可使用Vista或windows7自带的 bootsect.exe 进行操作)
    3、复制相应启动文件到U盘根目录
    4、修改bios启动顺序从U盘启动即可
    移动硬盘:开机识别成 USB-HDD
    在XP中格式化成FAT32、NTFS格式的U盘:开机出现在BIOS的Removable Device中,识别成USB-ZIP,默认为主分区非活动分区。可以用DiskGenius激活为活动分区,再开机识别为USB-HDD。
    量产成HDD的U盘:开机出现在BIOS的Hard Disk中,识别成USB-HDD,默认自动设置为活动分区。

华硕电脑BIOS中的Boot设置详解 通过本文的详细讲解,我们了解了如何在华硕电脑中进入BIOS的Boot设置,并进行相关配置。这些操作对于维护计算机的正常运行和提高启动速度具有重要意义。希望本文能够帮助大家更好地掌握华硕电脑的BIOS设置技巧,并在实际操作中取得更好的效果。 阅读详情

相关推荐

告别外置电阻!揭秘MAX22201集成电流检测的5大设计优势(附PCB布局案例)

本文深入解析MAX22201集成电流检测技术在直流有刷电机驱动中的5大设计优势,包括BOM成本降低、PCB空间优化、动态性能提升等。通过与传统方案(如DRV8871+外置电阻)的实测对比,展示其在高精度电流检测、抗干扰能力和PCB布局简化方面的突破,并附有详细的PCB布局案例和配置指南。

weixin_29189377的博客 243

操作系统的安装与启动基本原理

一、基本概念 1、BIOS的概念   BIOS(Basic Input/Output System,基本输入输出系统)全称是ROM-BIOS,是只读存储器基本输入/输出系统的简写,它实际是一组被固化到电脑中,为电脑提供最低级最直接的硬件控制的程序,它是连通软件程序和硬件设备之间的枢纽,通俗地说,BIOS是硬件与软件程序之间的一个“转换器”或者说是接口(虽然它本身也只...

weixin_33720956的博客 594

Unity2018连接MySQL数据库

当前在做的一个Unity项目需要连接到MySQL数据库,弄了一整天,排了很多错,终于在Unity上成功连接到MySQL数据库了,所以分享一下,避免有这个需求的朋友不用花那么多时间。 我使用的软件是 Unity20184.0f1 + mysql-8.0.24 导入 MySql.Data.dll 首先需要把 MySql.Data.dll 导入到Assets/Plugins 这个dll需要安装Connector/NET,在安装目录\Assemblies\v4.0中拿到,最好不要下载版本太高的,版本太高导入的时候

ZLX的博客 9449

linux bios boot 分区,装机基本概念BIOS与硬盘分区

这两天因为在Linux进行测试,先是搞坏了linux的系统,然后在重装Linux系统后搞坏了引导。在修复引导的过程中,搞坏了本机的Win8系统,再次修复引导与重装Linux后,Linux可以访问了,Windows系统重装后还是不行,引导部分也还是不行。从我的经历可以体现出,使用Linux作为日常系统具有极大的风险,因为他的权限非常高并且某些软件的依赖有可能修改本地界面的依赖库,修改后非常容易使得界...

weixin_36094492的博客 2254

ESP8266+ITR8307实战:如何用反射式光电管实现5cm远距离检测(附避坑指南)

本文详细介绍了如何利用ESP8266的ADC功能与ITR8307反射式光电管,通过调制解调、硬件电路优化及软件同步采样策略,实现5cm稳定远距离检测。文章提供了完整的硬件设计、代码实现与调优避坑指南,有效解决了环境光干扰与信号衰减难题,适用于智能车、自动化等需要可靠非接触检测的项目。

rgv234567的博客 264

# 多用户 JupyterHub 配置教程(通用 Linux 服务器版)

以上即是通用 Linux 服务器上的多用户 JupyterHub 实战配置。从安装认证与 Spawner 选择自动创建系统用户到反代与运维,覆盖了小团队到中等规模的主流场景。根据团队增长与合规要求,你可以进一步引入、统一身份源(LDAP/OAuth2/Keycloak)与资源配额治理,平滑演进到企业级部署。

数字化老司机 1288

系统引导修复

→。

Fantasy543210的博客 1257

13、网络通信中的字节序与内存测试

本文主要探讨了网络通信中的字节序问题以及嵌入式系统中内存测试的相关内容。在网络通信部分,重点分析了大端序和小端序的差异,以及TCP/IP协议中字节序的转换机制,并介绍了相关的宏定义和实现方法。在内存测试部分,详细阐述了内存测试的目的、常见问题以及具体的测试策略,包括数据总线测试、地址总线测试和设备测试。通过这些内容,嵌入式程序员可以更好地理解并解决实际开发中可能遇到的字节序和内存问题,从而提高系统的稳定性和可靠性。

mmm90的博客 111

MBR与GPT详解

了解GPT和MBR的区别,引导启动的流程,修改磁盘分区类型的方法

weixin_45938367的博客 4890

弱网、高热、只有 32MB 内存:恶劣环境下嵌入式 SoC 音视频开发的“不死”法则

永远不要假设。你申请一个 1920 宽的图像,硬件为了对齐(比如 16 字节对齐或 256 字节对齐),实际分配的一行可能有 1936 甚至是 2048 字节。那个多出来的部分叫Padding。如果你写代码时用来计算数据量,或者用Width来做指针偏移:恭喜你,你的画面会像被风吹歪的百叶窗一样,产生斜切畸变。永远使用VB_CONF结构体里返回的u32Stride字段。这是区分新手和老手的试金石。第六章 ISP 调优(Tuning)实战:为什么你调出的画面像个“鬼片”?

大模型大数据攻城狮的专栏 1769

Unreal使用nDisplay制作裸眼3D(9宫格)

摘要: nDisplay是虚幻引擎的分布式实时渲染技术,可将内容同步输出到多个显示设备(如LED墙、投影仪等),构建沉浸式可视化系统。其核心功能包括:分布式渲染(支持多台设备协同处理高分辨率内容)、空间透视校正(通过追踪观众动态调整画面几何关系)以及虚拟拍摄应用。配置时需设置集群组件(Cluster、Host、Node、Viewport)定义渲染逻辑,空间组件(nDisplayScreen、ViewPoint)确定投影关系。文中以9宫格配置为例,详细演示了从工程创建到影片渲染合成的全流程,最终通过多视口合成

TxNet 608

boot bios傻傻分不清

bios是加电完成后执行的指令,boot是BIOS执行完成后的指令(算是操作系统内部指令) 即BIOS 加电到 选择系统, boot是选择系统之后(装了多个系统的师傅应该了解,开机到一半有个选择操作系统) 想去了解系统加电过程,于是安装了一个qemu进行调试 不能单步执行,n,s都不行 系统停在了0xFFFF FFF0 //可以通过断点知道 通过dump 内存 0x0000 0000 - 0x000F FFFF 和 0xFFF0 0000 - 0xFFFF FFFF 发现大部分是一致的 0x0000 ..

qianmengfusheng的博客 6770

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

BOOT BIOS UEFI

 1. 什么是BOOT?   BOOT其实是你按开机键之后,在电脑微软操作系统运行之前就自动运行的一段小程序。表象上就是windows引导画面之前那些黑屏蓝屏的英文那个阶段就是BOOT了。通过这段小程序,它就可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。   2. 什么是BIOS?   BIOS它其实也是

放心飞吧 859

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

BIOS到Linux Boot的原理

Table of Contents 1. BIOS启动的原理2. BIOS对boot操作系统最至关重要的工作:3. Linux Boot的过程: 1 BIOS启动的原理 BIOS启动的原理:所有x86的CPU都设计成为加电进入16位实模式状态, CS=0xFFFF,IP=0x0000。这样启动时的第一条指针所在的地址就是 0XFFFF0. 2 BIO

huangkangying的专栏 2809

BIOS Boot Specification(一)

1.0 Introduction 1.1略 1.2 相关文档 plug and paly bios spec Hardware Design Guide for microsoft windows 95 Enhanced disk drive specification "EI Torito" Boota...

weixin_34274029的博客 956

BIOS,U-BOOT,BootLoader三者的对比

BIOS,U-BOOT,BootLoader三者的对比

CAOXUN_FPGA的博客 2142

关于BIOS BOOT Spec

  BBS定义了BIOS识别系统中IPL(Initial Program Load)设备的方法,使得BIOS可以按照用户设置的优先顺序来引导系统。BBS使得BIOS可以将系统中的所有IPL设备放进一个列表,并保存在NV存储器中。BBS最基本的一个功能是定义IPL优先级。IPL优先级是用户通过配置界面为IPL设备指定的,比如第一个启动设备为A:,第二个为C:…。用户每次开机时,系统都

Sean的笔记本 3387

bios中只有windows boot manager下用U盘启动

在重装系统的时候,很多时候都是先进入bios设置成U盘启动项,然后进行安装,如果年代久远一点的,就设置成光驱启动,再进行;随着时间的推行,光驱已经开始淘汰了,也怀念以前的光驱装机的时光!-:) 开始进入正题:很奇怪的一个问题,在一些预装了windows8.1的机器上,且硬盘格式为GPT格式,bios里面居然没有u盘的启动项可以选择,剩下windows boot manager的选项。可...

angou6476的博客 5458

翻译wiki(一):Bios boot partition

文章翻译自wiki,水平有限,若有错万请见谅。原文:https://en.wikipedia.org/wiki/BIOS_boot_partition BIOS boot partition是一个分区,gnugrub[译注1]用它来引导基于legacy bios但启动设备上却包含GPT格式分区表时的操作系统。这种结构有时候被称为BIOS/GPT启动[译注2]。 下图非原文...

weixin_30378623的博客 380

从BIOS到Boot再到Loader它们各自都干了些什么

CPU加电启动从BIOS到Boot再到Loader他们各自都干了些什么 BIOS CPU加电启动CS:IP寄存器的初始值为0xF000:0xFFF0,此时CPU处于实模式下,这个CS:IP指向的地址的求法是 CS<<4+IP,即CS*16+IP,对应的物理地址为0xFFFF0,这个位置对应一条长跳转指令jmp F000:E05B,此时就会 跳转到BIOS固件所在的内存地址,然后控制权交由BIOS固件,此时BIOS固件完成下列操作: 检测各个硬件设备是否正常运行 从磁盘(软盘)的第一扇区里面

qq_48201696的博客 1035

BIOS boot spec

http://www.wretch.cc/blog/hyper0672/9867131以下为转帖 完整的文件可以参考http://www.phoenix.com/NR/rdonlyres/56E38DE2-3E6F-4743-835F-B4A53726ABED/0/specsbbs101.pdf以下为一些重点整理 BBS (BIOS Boot Specification) 是用...

weixin_34161029的博客 571

【BIOS误删windows引导项】Delete Boot Option误删Windows Boot Manager

BIOS误删windows引导项 Delete Boot Option误删Windows Boot Manager

ydd_zhang的博客 7171

因为BIOS中Secure boot开启导致的Nvidia驱动无法安装

解决部分电脑nvidia驱动安装失败的方法

Sundance_kkid的博客 7090
上一篇: 操作系统面试
下一篇: 英语阅读-ying
evilying
博客等级 码龄16年 35粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值