【发布时间】:2016-06-07 18:25:04
【问题描述】:
我对引导加载程序有一些了解,但我必须知道 bios 代码如何跳转到引导加载程序,它何时初始化 I/O 设备以及 bios 的功能是什么?
bios 是否负责选择引导扇区?它将如何选择引导扇区?
另外请告诉我重置向量如何直接指向bios区域?
【问题讨论】:
标签: bootloader bios
我对引导加载程序有一些了解,但我必须知道 bios 代码如何跳转到引导加载程序,它何时初始化 I/O 设备以及 bios 的功能是什么?
bios 是否负责选择引导扇区?它将如何选择引导扇区?
另外请告诉我重置向量如何直接指向bios区域?
【问题讨论】:
标签: bootloader bios
我对引导加载程序有所了解,但我必须知道 BIOS 代码如何跳转到引导加载程序
从硬盘引导时,BIOS 从硬盘第一个扇区的主引导记录中读取引导加载程序,并将其加载到内存中的 0000:7C00(或者可能是 07C0:0000 -- in real mode, these refer to the same address )。
什么时候初始化 I/O 设备,bios 有什么功能?
Minimal Intel Architecture Boot Loader 简要概述了 BIOS 在初始化系统时执行的基本功能。推荐的初始化顺序中的主要要点如下:
上电(复位向量)处理
模式选择
内存初始化准备
内存初始化
后内存初始化
其他平台启用
中断启用
处理器中断模式
中断向量表 (IVT)
中断描述符表 (IDT)
计时器
内存缓存控制
处理器发现和初始化
I/O 设备
PCI 设备发现
引导旧版操作系统
内存映射
非易失性 (NV) 存储
注意:Memory Map 和 Non-Volatile Storage 部分列在 Booting a Legacy OS 部分之后的大纲中,但作为如您所料,映射系统内存在移交给引导加载程序和引导操作系统之前发生。此外,在 BIOS 初始化期间也会发生对非易失性存储器的一些访问。 (例如,BIOS 可能会读取存储在 CMOS 中的设置以确定主引导设备)
bios 是否负责选择引导扇区?它将如何选择引导扇区?
BIOS 根据设备类型定位引导扇区。
在大多数情况下(CD/DVD 除外),引导扇区将是设备的 LBA 0(或等效的 CHS 0,0,1)——请参阅特定设备的规格以了解它使用的寻址模式.对于 CD/DVD,引导扇区为 LBA 17。
有关详细信息,请参阅 OSDev 上的the quoted article。
另外请告知我重置向量将如何直接指向 bios 区域?
CPU 就是这样设计的。置位复位信号后,CPU 将其寄存器(包括指令指针)设置为已知值。例如on most x86 systems,这是FFFFFFF0h,这个地址映射到BIOS ROM。 This answer 提供了更详尽的解释。
【讨论】: