【问题标题】:Theory behind bootloader [closed]引导加载程序背后的理论[关闭]
【发布时间】:2010-11-01 14:34:18
【问题描述】:
我从 osdev 下载了几个引导加载程序并成功加载了内核。但现在我想学习引导加载程序背后的理论。我想知道系统启动的原因以及引导加载程序代码背后的所有内容。谁能给我一个链接或一本书的链接?提前致谢。
系统是x86。
【问题讨论】:
标签:
operating-system
x86
boot
bootloader
【解决方案1】:
https://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf
在附录 B 中,它在第一段中给出了一个简短的概述:
当 x86 PC 启动时,它开始执行一个称为 BIOS 的程序,该程序存储在主板上的非易失性存储器中。 BIOS 的工作是准备硬件,然后将控制权转移给操作系统。具体来说,它将控制转移到从引导扇区加载的代码,即引导磁盘的第一个512字节扇区。引导扇区包含引导加载程序:将内核加载到内存中的指令。 BIOS 将引导扇区加载到内存地址0x7c00,然后跳转(设置处理器的%ip)到该地址。当引导加载程序开始执行时,处理器正在模拟 Intel 8088,加载程序的工作是将处理器置于更现代的操作模式,将 xv6 内核从磁盘加载到内存中,然后将控制权转移给内核。 xv6 引导加载程序包含两个源文件,一个是用 16 位和 32 位 x86 程序集的组合编写的 (bootasm.S;(8900)),另一个是用 C 编写的 (bootmain.c; (9000)).