第一讲硬件启动的引导程序
了解电脑操作系统的启动过程和引导程序

了解电脑操作系统的启动过程和引导程序电脑操作系统的启动过程和引导程序电脑用户每天都在操作系统的环境下使用电脑,但是很少有人深入了解电脑操作系统的启动过程和引导程序。
本文将详细介绍电脑操作系统的启动过程和引导程序,并从硬件层面到软件层面逐步分析。
一、硬件层面的启动过程电脑的启动是从冷启动到操作系统加载的过程,其主要分为硬件层面和软件层面两个阶段。
首先,我们先来了解硬件层面的启动过程。
1. 加电自检(POST)当用户按下电源按钮,电脑主板上的电源管理芯片会向各硬件设备发送电源信号,进行供电。
此时,主板上的固件(BIOS、UEFI)开始运行,执行一系列的加电自检(POST)程序,以确保硬件设备正常工作。
2. BIOS/UEFIBIOS(基本输入输出系统)或者UEFI(统一扩展固件接口)是位于主板上的固件,用来进行电脑系统的启动和硬件设备的识别与初始化。
BIOS/UEFI会从存储设备中加载操作系统引导程序。
3. 引导设备选择在BIOS/UEFI初始化完成后,电脑会检测可启动设备,比如硬盘、光盘、USB设备等,并按照设定的启动顺序尝试加载引导程序。
4. 引导程序加载电脑会按照设定的启动顺序依次读取存储设备中的引导扇区,找到其中的引导程序。
引导程序通常是存储在硬盘的一个特定扇区,被称为主引导记录(MBR)。
5. 主引导记录(MBR)主引导记录包含一个小型的引导程序,它负责将操作系统的控制权转交给特定的分区上的操作系统引导程序。
MBR也会包含磁盘分区表,记录了硬盘的分区信息。
二、软件层面的启动过程在硬件层面的启动过程完成后,接下来是软件层面的启动过程。
这一阶段主要涉及操作系统的启动过程和引导程序。
1. 操作系统引导程序主引导记录会根据分区表找到活动分区,然后将控制权转交给该分区中的操作系统引导程序。
操作系统引导程序一般位于活动分区的引导扇区,它负责加载操作系统。
2. 操作系统加载操作系统引导程序会读取操作系统的核心文件,将其加载到计算机内存中。
计算机启动过程的步骤

计算机启动过程的步骤对于电脑用户来说,打开电源启动电脑几乎是每天必做的事情,但计算机在显示这些启动画面的时候在做什么呢?大多数用户都未必清楚了。
以下是“计算机启动过程的步骤”,希望给大家带来帮助!工具/原料计算机方法/步骤第一步:在主板接通电源之后,系统就由POST(PowerOnSelfTest,上电自检)开始自检,在我们刚刚接通电源的时候,整个系统由BIOS控制,电压还不太稳定(这个过程非常短暂,一般只有几毫秒,这个时候电压的稳定完全依靠主板和电源内部的滤波电容进行),主板芯片组会向CPU发出reset的命令让CPU开始初始化,同时主板芯片组等待电源发出POWEGOOD命令,一旦电源发出POWERGOOD命令,主板芯片组会马上停止reset命令的发出(如果是手动reset那么松开reset按钮时就会停止发出命令),这时候CPU会马上从地址FFFFF0H或FFFF0H开始执行寻址指令(这个地址是在BIOS内而不再内存里面),在这个地址中无论是AMIBIOS还是AwardBIOS,在这个地址中都会存储一条跳转命令,直接跳转到系统BIOS中真正的启动代码处,这个时候BIOS就会进行到第二个步骤POST。
第二步:系统BIOS的启动代码首先要做的事情就是POST,POST的主要任务就是在检测系统中的一些关键设备是否存在和正常工作。
由于POST在初始化显示卡之前,因此如果POST过程中出现任何的被BIOS认为的致命错误,比如没有找到内存或者说内存错误之类的,POST会通过主板上再带的扬声器来发送长短和数量不等的警报声以传递错误信息,如果在正常情况下,POST会进行的非常快,我们是难以感觉到这个过程的。
第三步:在这一步,系统BIOS会找到显示卡,存放显卡BIOS的ROM通常其实地址在C0000H处,系统BIOS找到显卡BIOS之后调用它的代码,由于显卡生产商的不同,所以显卡的初始化是由显卡BIOS来完成的,所以不同显卡厂商的界面也是不太一样的。
简单描述计算机硬件的启动过程

简单描述计算机硬件的启动过程
计算机硬件的启动过程是指从打开电源到操作系统开始运行的一系列步骤。
下面是一个简单的描述:
1. 电源供电:当用户按下计算机电源按钮时,电源开始向计算机提供电力。
2. 硬件自检:计算机的主板上有一个基本输入输出系统(BIOS),它会在开机时进行自我检查,以确保所有硬件设备都正常工作。
这个过程称为 POST(开机自检)。
3. 引导设备选择:BIOS 会根据用户设置或默认设置,尝试从优先级最高的引导设备(通常是硬盘)加载操作系统。
4. 引导加载程序:引导设备上的第一个扇区被称为主引导记录(MBR),其中包含一个引导加载程序。
引导加载程序的职责是读取并加载操作系统。
5. 操作系统加载:引导加载程序会将操作系统加载到内存中,并将控制权转移给操作系统。
6. 操作系统初始化:操作系统开始执行一系列的初始化任务,例如加载设备驱动程序、创建系统进程、初始化网络等。
7. 用户登录:在操作系统完成初始化后,它会显示登录界面,等待用户输入用户名和密码进行登录。
8. 进入操作系统:用户登录成功后,操作系统将进入桌面环境或命令行界面,用户可以开始使用计算机进行各种操作。
需要注意的是,上述过程是一个简化的描述,实际的启动过程可能因计算机的配置和操作系统的不同而有所差异。
此外,现代计算机还可能涉及到安全启动、UEFI 等技术,以增强启动过程的安全性。
Linux启动引导流程

Linux启动引导流程一、启动过程:固件firmware(CMOS/BIOS) → POST 加电自检↓自举程序BootLoader(GRUB) →载入内核↓载入内核Kernel →驱动硬件↓启动进程init↓读取执行配置文件/etc/inittab二、主要步骤:1、固件(firmware)的加电自检POST CMOS/BIOS(引导介质,软硬件时钟)2、读取硬盘的第一个位置主引导记录MBR(存放自举程序bootloader)3、Linux下的常用是grub,作用是载入内核(kernel)和镜像文件加载内核4、内核做两件事情驱动硬件和启动init进程Init进程5、Init进程启动后读取/etc/inittab配置文件6、/etc/inittab是一个shell脚本完成后续的系统引导7、首先判断系统的缺省的运行级别/etc/initdefault查看运行级别级别加载脚本8、执行/etc/rd.d/rc.sysinit系统服务启动脚本不管系统在任何运行级别都会运行来进行基本服务的加载9、/etc/rc.d/rc会根据系统的运行级别运行相应的/etc/rc.d/rcN.d (N(0-6)对应运行级别) 这个目录下有两种运行脚本分别以S和K 开头的,S表示开启的服务,K表示关闭的服务服务脚本10、到username、password界面三、启动信息查询dmesg查询系统启动过程里面所有的信息最重要的是内核驱动硬件的信息,可以查看所添加的硬件是否被系统所识别日志文件/var/logBoot.log启动日志,一般是空的Messages 查看某一个服务的启动日志文件,如果某个服务启动的时候出现问题也会记录下来。
BIOS的初始化和引导加载程序

⑴检测计算机硬件和外围设备。 当BIOS一启动就会做一个自我检测的 工作(POST,自检Power On Self Test), 以检测计算机的硬件和外围设备,如检 测CPU、内存、风扇等信息。 ⑵选择由哪一个设备来开机。 ⑶读取开机设备的第1 块(MBR)中 的内容并执行这段代码。 执行以上的三个步骤后,BIOS完成了 使命。 二、引导加载程序操作
Windows server 2016 (kernel)
Windows server 2016 (kernel)
/boot
Centos 6.5 (kernel)
/boot
Centos 6.5 (kernel)
GRUB
GRUB
开机选单 注:这台计算 机只有1个系统
⑵使用MBR来启动windows server 2016操作系统。
⑴使用MBR来启动Linux操作系统
MBR
Windows server 2016 (kernedows server 2016 (kernel)
sda
/boot
Centos 6.5 (kernel)
①当开机时BIOS 读入MBR的前446 /boot 字节的程序代码 ,即boot loader的 Centos 6.5 第一阶段的程序 (kernel) 代码。
446
MBR
②boot loader 第 一阶段的程序代 码运行之后,将 载入boot loader 第二阶段的程序 代码并进入GRUB 的开机选单,在 这个开机选单中 就可以选择在这 台计算机上可以 启动的所有操作 系统。
446
MBR
①当开机时 BIOS读入 MBR的前 446字节的 /boot 程序代码, Centos 6.5 即boot (kernel) loader的第 一阶段的程 序代码。 GRUB
计算机启动过程详解

计算机启动过程详解计算机启动过程可以分为硬件启动和软件启动两个阶段。
硬件启动是指当计算机按下电源按钮后,主板上的电源管理模块将电源信号转换为合适的电压并供给给主板和其他硬件设备。
软件启动是指操作系统的加载和初始化过程。
在硬件启动阶段,主要有如下步骤:1. 电源自检(Power-On Self Test, POST):当计算机通电时,主板会执行自检程序,检查主板、CPU、内存等主要硬件设备是否正常。
如果发现问题,会通过声音信号或者显示器上的错误信息来提示用户。
2.硬件初始化:主板在自检完成后,会初始化其他硬件设备,例如显示器、键盘、鼠标等。
3. 引导设备确定:主板会根据BIOS(Basic Input/Output System)中的设置,选择启动设备。
常见的引导设备包括硬盘、光盘、USB等。
4. 引导记录加载:主板会读取引导设备的主引导记录(Master Boot Record,MBR),并将控制权交给MBR。
5. 操作系统加载:MBR中会包含一个启动管理程序,例如Windows中的NTLDR或GRUB引导程序。
这些程序会在操作系统启动之前,加载和初始化操作系统所需的驱动程序和文件。
6.内存映射:一旦操作系统加载完成,主板会将操作系统的核心文件载入到内存中,并分配必要的系统资源。
7.初始化设备驱动程序:在进入软件启动阶段之前,操作系统会初始化并加载设备驱动程序,从而为各种硬件设备建立正确的通信链路。
在软件启动阶段,主要有如下步骤:1.系统初始化:操作系统会执行一些初始化工作,包括建立系统进程、创建虚拟内存空间、加载动态链接库等。
2.用户登录:如果计算机有多个用户账户,操作系统会提示用户登录,并验证用户身份。
3.用户界面加载:操作系统会根据用户的设置和偏好,加载特定的用户界面。
常见的用户界面包括命令行界面和图形用户界面。
4.服务启动:操作系统会启动各种系统服务,例如网络服务、打印服务、防病毒软件等。
深入解析电脑操作系统的启动过程

深入解析电脑操作系统的启动过程电脑操作系统是一台计算机中最重要的软件系统,它负责管理和控制计算机的硬件资源,提供用户与计算机之间的接口。
计算机系统的启动过程是指从计算机通电到操作系统完全加载并准备好接受用户操作的一系列步骤。
本文将深入解析电脑操作系统的启动过程,并分为硬件启动、引导加载和操作系统初始化三个部分进行阐述。
一、硬件启动当计算机通电时,硬件设备开始自检和初始化。
自检过程主要包括CPU、内存、硬盘等硬件设备是否正常工作,以及与外部设备的连接是否良好等。
通过自检,计算机系统能够确保硬件设备的正常运行状态。
接着,计算机会加载BIOS(Basic Input/Output System,基本输入输出系统),BIOS是计算机系统的基本固件,负责将计算机硬件连接到操作系统。
在计算机通电后,BIOS会读取存储在CMOS中的设置信息,包括硬件设备的参数、启动顺序等。
根据这些设置,BIOS会选择相应的设备作为引导设备,用于加载操作系统。
二、引导加载计算机开始引导加载操作系统。
根据BIOS中的设置,计算机会首先寻找引导设备上的引导代码。
在实际操作中,通常是从硬盘的主引导记录(Master Boot Record,MBR)中加载引导代码。
MBR是硬盘上的一个特殊扇区,它包含了引导代码和硬盘分区表。
当计算机找到MBR后,会将其中的引导代码加载到内存中,并执行该代码。
引导代码通常被称为引导加载程序(Bootloader),它的功能是加载操作系统的核心部分。
引导加载程序根据操作系统所在的文件系统类型以及文件路径,找到操作系统文件的位置,并将其加载到内存中。
不同的操作系统可能有不同的引导加载程序,如Windows系统的NTLDR(New Technology Loader)、GRUB(GNU GRand Unified Bootloader)等。
引导加载程序的主要任务是将控制权交给操作系统内核。
三、操作系统初始化操作系统内核被加载到内存后,计算机开始进行操作系统的初始化工作。
1-硬件启动的引导程序

19
cpu
lib_ppc lib_arm lib_i386 include
U-Boot程序结构
common lib_generic net fs post drivers Misc functions Generic library functions Networking code File System Code Power On Self Test Common used device drivers
数字集成电路设计与系统应用专业
3
什么是Bootloader
Bootloader是硬件启动的引导程序,是启动 操作系统的根本; 是在操作系统内核或用户应用程序运行之 前运行的一段小程序。通过这段小程序, 可以初始化硬件设备、建立内存空间的映 射图,从而将系统的软硬件环境带到一个 合适的状态,以便为最终调用准备好环境; 在一般典型的系统中,整个系统的加载启 动任务就完全由Bootloader来完成。
数字集成电路设计与系统应用专业
23
cpu/arm920t/start.S
系统复位代码
ldr pc, _start_armboot _start_armboot: .word start_armboot 表示u-boot完成cpu初始化,将跳转到C 程序中间。 start_armboot完成设备初始 化过程,进入main_loop循环。 start_armboot -> lib_arm/board.c
16
关于U-boot 源代码的网络资源:
网站名称 官方链接
德国DENX 软件工程中心主页
http://www.denx.de/
U-boot 官方主页 http://www.denx.de/wiki/U-Boot/WebHome (注意其中的邮件列表链接)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
数字集成电路设计与系统应用专业
内容提纲
Bootloader 简介
什么是Bootloader Bootloader的特点、工作模式、基本功能 Bootloader的启动过程 目前典型Bootloader简介
U-boot 介绍
简介(出处、下载代码、代码结构) U-boot 启动流程及代码分析 U-boot 的编译和移植 U-boot 的下载烧录和使用
数字集成电路设计与系统应用专业
21
BootLoader的生命周期
初始化硬件
设置UART 设置网口 设置USB 检测存储器
设置启动参数
内核硬件信息 波特率
跳转到Linux内核的首地址 消亡
数字集成电路设计与系统应用专业 22
22
U-Boot入口函数start.S
U-boot 官方Git 代码仓库
http://git.denx.de/?p=u-boot.git
数字集成电路设计与系统应用专业
U-Boot程序结构
平台相关
board,
cpu, lib_ppc, lib_arm, include… net, fs, drivers…
平台无关
common,
16
关于U-boot 源代码的网络资源:
网站名称 官方链接
德国DENX 软件工程中心主页
http://www.denx.de/
U-boot 官方主页 http://www.denx.de/wiki/U-Boot/WebHome (注意其中的邮件列表链接)
U-boot 官方源码FTP 下载
ftp://ftp.denx.de/pub/u-boot/
工具和文档
tools,
doc
数字集成电路设计与系统应用专业
18
U-Boot程序结构
board cpu Board dependent files, RPXlite(mpc8xx), smdk2410(arm920t), sc520_cdp(x86) … CPU specific files, mpc8xx, ppc4xx, arm720t, arm920t, xscale, i386 Files generic to PowerPC architecture Files generic to ARM architecture
设置异常的入口地址和异常处理函数; 配置 PLLCON 寄存器,确定系统的主频; 屏蔽看门狗和中断;初始化 I/O 寄存器; 关闭 MMU 功能; 调用 /board/smdk2410 中的lowlevel_init.S , 初始化存储器空间,设置刷新频率; 将 U-Boot 的内容复制到 SDRAM 中; 设置堆栈的大小( ldr pc, _start_armboot ) ; 设置程序编译连接的起始地址( config.mk: TEXT_BASE = 0x33F80000 )。
4 数字集成电路设计与系统应用专业
4
Bootloader的特点
Bootloader不属于操作系统内核,采用汇编 语言编写,因此针对不同的CPU体系结构, 这一部分代码不具有可移植性; 在移植操作系统时,这部分代码必须加以 改写。 Bootloader不但依赖于CPU的体系结构,而 且依赖于嵌入式系统板级设备的配置。
11 数字集成电路设计与系统应用专业
11
一些bootloader介绍
Bootload er LILO GRUB Loadlin ROLO Etherboot LinuxBIOS BLOB 否 否 否 否 否 否 否 Linux磁盘引导程序 GNU的LILO替代程序 从DOS引导Linux 从ROM引导Linux而不需要BIOS 通过以太网卡启动Linux系统的固件 完全替代BUIS的Linux引导程序 LART等硬件平台的引导程序 是 是 是 是 是 是 否 否 否 否 否 否 否 是 Monitor 描述 x86 ARM C 否 否 否 否 否 否 否 PowerP
数字集成电路设计与系统应用专业
23
cpu/arm920t/start.S
系统复位代码
ldr pc, _start_armboot _start_armboot: .word start_armboot 表示u-boot完成cpu初始化,将跳转到C 程序中间。 start_armboot完成设备初始 化过程,进入main_loop循环。 start_armboot -> lib_arm/board.c
代码结构清晰、易于移植(见程序结构) 支持多种处理器体系结构(见程序结构cpu目录) 支持众多开发板(目前官方包中有200多种,见程序结构board目录) 命令丰富、有监控功能 支持网络协议、USB、SD等多种协议和设备 支持文件系统 更新较活跃,使用者多,有助于解决问题
数字集成电路设计与系统应用专业
8
Bootloader的第一阶段
屏蔽所有的中断。为中断提供服务通常是 OS 设备驱动程 序的责任,因此在 Boot Loader 的执行全过程中可以不必 响应任何中断 设置 CPU 的速度和时钟频率 RAM 初始化。包括正确地设置系统的内存控制器的功能 寄存器以及各内存库控制寄存器等 初始化 LED。其目的是表明系统的状态。如果板子上没有 LED,可以通过初始化 UART 向串口打印 Bootloader 的 Logo 字符信息来完成这一点 关闭CPU内部I/D cache 为加载 stage2 准备 RAM 空间,跳转到 stage2的C入口 点
Blob
blob是LART工程使用的bootloader
移植到多个ARM平台上
rt.tudelft.nl/lartware/blob
Redboot
数字集成电路设计与系统应用专业
14
内容提纲
Bootloader 简介
什么是Bootloader Bootloader的特点、工作模式、基本功能 Bootloader的启动过程 目前典型Bootloader简介
数字集成电路设计与系统应用专业
6
Bootloader的基本功能
初始化硬件 将操作系统内核从Flash拷贝到SDRAM中,如果是压缩格 式的内核,还要解压缩 改写系统的内存映射,原先Flash起始地址映射为0地址, 这时需要将RAM的起始地址映射为0 提供Linux内核的启动参数 启动Linux内核 设置堆栈指针并将bss段清零将来执行C语言程序和调用 子函数时要用到 改变pc值,使得CPU开始执行真正的操作系统内核。
U-boot
数字集成电路设计与系统应用专业
3
什么是Bootloader
Bootloader是硬件启动的引导程序,是启动 操作系统的根本; 是在操作系统内核或用户应用程序运行之 前运行的一段小程序。通过这段小程序, 可以初始化硬件设备、建立内存空间的映 射图,从而将系统的软硬件环境带到一个 合适的状态,以便为最终调用准备好环境; 在一般典型的系统中,整个系统的加载启 动任务就完全由Bootloader来完成。
数字集成电路设计与系统应用专业
5
Bootloader的操作模式
启动加载模式:在这种模式下,Bootloader从目标机上的 某个固态存储设备上将操作系统加载到RAM中运行,整个 过程并没有用户的介入。 下载模式:在这种模式下,目标机上的Bootloader将通过 串口或网络等通信手段从开发主机(Host)上下载内核映 像和根文件系统映像等到RAM中。然后可以再被 Bootloader写到目标机上的固态存储媒质中,或者直接进 行系统的引导。
数字集成电路设计与系统应用专业
9
Bootloader的第二阶段
初始化本阶段要使用到的硬件设备; 检测系统内存映射; 将内核映像和根文件系统映像从Flash读到 RAM; 为内核设置启动参数; 调用内核。
数字集成电路设计与系统应用专业
10
DRAM控制器
DRAM芯片不能向其它微处理器总线资源那 样直接读写,它们需要特殊的硬件控制器 使能读写循环。 设置DRAM控制器需要详细了解DRAM体系 结构、控制器本身、 DRAM芯片使用的规 范和全面的硬件设计。 Bootloader首先要完成的就是使能内存子系 统。初始化内存以后,内存可以作为一种 资源进行使用。
Bootloader
数字集成电路设计与系统应用专业
1
All rights reserved
BUAA All rights reserved;
The information contained in this document is subject to change without notice ;
数字集成电路设计与系统应用专业
7
Bootloader的启动
系统加电或复位后,所有CPU都会从某 个地址开始执行 嵌入式系统的开发板都要把板上ROM或 FLASH映射到这个地址。因此,必须把 Bootloader程序存储在相应的FLASH位 置。系统加电后,CPU将首先执行它。
8
数字集成电路设计与系统应用专业
rtc
dtt
Real Time Clock drivers
Digital Thermometer and Thermostat drivers
数字集成电路设计与系统应用专业
20
U-Boot 启动过程的几个阶段
在 Flash 中运行汇编程序,将 Flash 中的 启动代码部分复制到 SDRAM 中,同时创 造环境准备运行 C 程序; 在 SDRAM 中执行,对硬件进行初始化; 设置内核参数的标记列表,复制镜像文件, 进入内核的入口函数