简介
引导程式(英语:boot loader)位于电脑或其他计算机套用上,是指引导作业系统的程式。引导程式启动方式及程式视套用机型种类而不同。例如在普通的个人电脑上,引导程式通常分为两部分:第一阶段引导程式位于主引导记录(MBR),用以引导位于某个分区上的第二阶段引导程式,如NTLDR、BOOTMGR和GNU GRUB等。BIOS引导完成后,boot loader就接手初始化硬体设备、创建存储器空间的映射,以便为作业系统核心準备好正确的软硬体环境。
简单的boot loader的虚拟彙编码,如其后的八个指令:
第一:将P暂存器的值设为8
第二:检查纸带(paper tape)读取器,是否已经可以进行读取
第三:如果还不能进行读取,跳至1
第四:从纸带读取器,读取一byte至累加器
第五:如为带子结尾,跳至8
第六:将暂存器的值,存储至P暂存器中的数值所指定的地址
第七:增加P暂存器的值
第八:跳至1
但是随着计算机作业系统越来越複杂,位于主引导记录的空间已经放不下引导作业系统的代码,于是就有了第二阶段的引导程式,而MBR中代码的功能也从直接引导作业系统变为了引导第二阶段的引导程式。对于UEFI系统,已由EFI应用程式(即EFI分区中的.efi档案)取代MBR和PBR,UEFI会载入引导程式的.efi档案,再由引导程式载入作业系统。MBR和PBR程式通常是用彙编语言编写的,会调用BIOS中断调用;而.efi档案则是PE格式的档案,可用C语言编写。
在计算机中, 引导或者引导程式是计算控制系统的一个初始化过程。引导过程可以使“硬引导”,如:开机通电后硬体诊断;也可以使“软引导”,此时会跳过开机自启。一些系统中软启动过程中,RAM可以不清零。软启动和硬启动都可以通过硬体发起,如按下电源开关;也可以通过软体命令来进行。当正常、有效的运行环境达到后,启动完成。引导装载程式是计算机开机自检完成后装载作业系统或者其他系统软体的电脑程式。自检完成后运行引导装载程式,然后再载入并运行软体。引导装载程式可以从永存体(硬碟)装载到主记忆体中。一些老计算机中,引导装载程式可以从打孔卡、穿孔纸带、或者磁带中载入到主记忆体中。启动装载程式载入且执行完成启动的程式。和POST程式相似,启动装置代码可以存储在永久存储体位置中,也可以为硬连线的形式。 当代通用计算机中,启动过程通常包含开机自检、定位以及初始化外围设备、然后找到、载入、并开始一个作业系统。睡眠和休眠过程不包含启动。一些嵌入式系统不要求可察的启动序列,可以直接运行存储在ROM中的可运行程式。所有计算机系统都是状态机,只有重启才可能返回到初始状态。 引导在英文中为boot,是bootstrap的缩写,源自于短语pull oneself up by one's bootstraps,即靠自己振作起来。如果大部分软体需要通过其他已运行的程式载入到计算机中,则必须存在一个将初始软体载入到计算机中的机制。 各种类型的唯读记忆体可以解决此类的矛盾体——允许计算机带有可被擦除的启动程式。随着ROM容量的变大,更加精细的启动程式得以实现。
第一台商业计算机
早期可程式商业计算机,如UNIVAC I和IBM 701,会包含执行完整的输入输出操作的指令。相同的硬体逻辑可以被用来载入穿孔卡片的内容,或者其他输入媒体,如磁鼓或者磁带,这些引导程式可以通过按键启动。IBM701 计算机拥有一个 Load 按钮,此按钮可以将打孔卡片的前 36个bit字读入到主存中。左18-bit 半字被视为指令而执行,通常用来将额外的字读入到记忆体中。随后被载入的引导程式被执行,反过来无需更多地人为操作从媒介中载入更大的程式到记忆体中。随后计算机跳转到记忆体位置001,读取存储的第一个指令。第一条指令一般是相同的:将前80个记忆体位置的信息移到一个汇集区域(打孔卡片2,3,4...)。一旦信息被移动到这些区域后,机器跳转到080位置(读取一个卡片),然后下一个卡片将被读取,并处理相关信息。 同期的其他IBM计算机有着相似的特性。IBM1401系统使用读卡器从打孔卡片中载入一个程式。打孔卡片中存储的80个字元被读入到记忆体地址001~080。个人电脑启动设备
启动设备(英语:boot device)是指作业系统可被从其上载入的设备。现代计算机的UEFI和BIOS都支持从多种设备中启动,如:硬碟(装有MBR或者GPT引导)、光碟机、USB大容量存储设备(随身碟、SD卡等),或者从网卡启动(使用PXE)。
通常,固件(UEFI 和 BIOS)都会允许用户设定启动顺序(英语:boot order)。如果将启动顺序设为“第一:DVD 驱动器;第二:硬碟驱动器”,固件会先尝试从 DVD 驱动器启动,如果失败(比如驱动器中没有 DVD)则会再尝试从本地的硬碟驱动器启动。
假设有一台 PC,硬碟上装有Windows 10,用户可以设定启动顺序为上述顺序,然后插入LinuxLive CD,这样就可以直接试用Linux。这样的过程就是一种双重引导,即计算机加电自检(POST)后允许用户选择所用的作业系统。这个例子中用户是通过 CD 的插入、移除来选择作业系统的,更常见的情况是直接使用键盘从BIOS或UEFI的引导选单(英语:boot menu)中选择,引导选单通常可以通过在 POST 时按Delete或F11进入。
智慧型手机
现代的智慧型手机具备作业系统,系统在启动之前需要通过boot loader启动,手机启动的时候基带执行初始化,然后引导系统核心,直到系统启动。智慧型手机生产厂商通常在出厂时锁定了手机的boot loader,以防止用户误操作损坏了系统档案造成手机功能异常,部分厂商会给开发者或普通用户发放boot loader解锁码,这通常需要步骤众多的申请,锁定boot loader能部分有效阻止恶意程式对手机造成的破坏,部分用户或开发者会通过解锁boot oader以获得更多的功能和许可权,这通常会带来使用风险。

















