啟動程式

啟動程式（）是指在電腦系統中負責初始化周邊裝置、啟動作業系統的程式。在個人電腦上，當BIOS完成開機硬體檢測後，便會由磁碟上的主開機紀錄或是主機板的UEFI韌體讀取作業系統對應的啟動程式，再由啟動程式載入作業系統。Linux所使用的GNU GRUB、以及微軟為Windows開發的Windows開機管理程式，都屬於啟動程式的一種。

 啟動流程 

啟動的英文「」語源來自「鞋帶」（），取成語「拉著自己的鞋帶站起來」（）、自立振作之意。

在普通的个人电脑上，引导程序通常分为两部分：第一阶段引导程序位于主引导记录（MBR），用以引导位于某个分区上的第二阶段引导程序，如NTLDR、BOOTMGR等。一些嵌入式系统直接运行存储在ROM中的可執行程序。

BIOS開機完成後，啟動程式就接手初始化硬體設備、建立記憶體空間的映射，以便為作業系統內核準備好正確的軟硬體環境。

對於UEFI系統，由EFI應用程式（即EFI系統分區中的.efi檔案）取代MBR和第二階段啟動程式，UEFI韌體會載入啟動程式的.efi檔案，再由啟動程式載入作業系統。

 歷史 

早期可编程商业计算机，如UNIVAC I和IBM 701，会包含执行完整的输入输出操作的指令。相同的硬件逻辑可以被用来加载穿孔卡片的内容，或者其他输入媒体，如磁鼓或者磁带，这些引导程序可以通过按键启动。IBM701 计算机拥有一个 "Load" 按钮，此按钮可以将打孔卡片的前 36个bit字读入到主存中。左18-bit 半字被视为指令而执行，通常用来将额外的字读入到内存中。随后被加载的引导程序被执行，反过来无需更多地人为操作从媒介中加载更大的程序到内存中。随后计算机跳转到内存位置001，读取存储的第一个指令。第一条指令一般是相同的：将前80个内存位置的信息移到一个汇集区域（打孔卡片2，3，4...)。一旦信息被移动到这些区域后，机器跳转到080位置（读取一个卡片），然后下一个卡片将被读取，并处理相关信息。

同期的其他IBM计算机有着相似的特性。IBM1401系统使用读卡器从打孔卡片中加载一个程序。打孔卡片中存储的80个字符被读入到内存地址001~080.

 个人电脑 


现代计算机的UEFI和BIOS都支持从多种设备中启动，如：硬盘（MBR或者GPT）、光驱、USB大容量存储设备（U盘、SD卡等），或者从网卡启动（使用PXE）。

通常，固件（UEFI或BIOS）都会允许用户设置启动顺序（）。如果将启动顺序设为「第一：DVD 驱动器；第二：硬盘驱动器」，固件会先尝试从 DVD 驱动器启动，如果失败（比如驱动器中没有 DVD）则会再尝试从本地的硬盘驱动器启动。

假设有一台PC，硬盘上装有 Windows 10，用户可以设置启动顺序为上述顺序，然后插入Linux Live CD，这样就可以直接试用Linux。更常见的情况是直接使用键盘从BIOS或UEFI的引导菜单（）或者BIOS設定()中选择，BIOS設定通常可以通过在POST时按或进入。

 智能手机 

现代的智能手机具备操作系统，系统在启动之前需要通过bootloader启动，手机启动的时候基带执行初始化，然后引导系统内核，直到系统启动。智能手机生产厂商通常在出厂时锁定了手机的bootloader，以防止用户误操作损坏了系统文件造成手机功能异常，部分厂商会给开发者或普通用户发放bootloader解锁码，这通常需要步骤众多的申请，锁定bootloader能部分有效阻止恶意程序对手机造成的破坏，部分用户或开发者会通过解锁Bootloader以获得更多的功能和权限，这通常会带来使用风险。

 參見 
 网络引导
 启动管理程序比较

Category:BIOS