热门问题
时间线
聊天
视角
引导程序
来自维基百科,自由的百科全书
Remove ads
引导程序(英语:bootloader)是指在电脑系统中负责初始化周边设备、启动操作系统的程序。在个人电脑上,当BIOS完成开机硬件检测后,便会由磁盘上的主引导记录或是主板的UEFI固件读取操作系统对应的引导程序,再由引导程序加载操作系统。Linux所使用的GNU GRUB、以及微软为Windows开发的Windows开机管理程序,都属于引导程序的一种。
![]() |
启动流程
启动的英文“boot”语源来自“鞋带”(bootstrap),取成语“拉着自己的鞋带站起来”(Pull oneself up by one's bootstraps)、自立振作之意。
在普通的个人电脑上,引导程序通常分为两部分:第一阶段引导程序位于主引导记录(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.
Remove ads
个人电脑

现代计算机的UEFI和BIOS都支持从多种设备中启动,如:硬盘(MBR或者GPT)、光驱、USB大容量存储设备(U盘、SD卡等),或者从网卡启动(使用PXE)。
通常,固件(UEFI或BIOS)都会允许用户设置启动顺序(英语:boot order)。如果将启动顺序设为“第一:DVD 驱动器;第二:硬盘驱动器”,固件会先尝试从 DVD 驱动器启动,如果失败(比如驱动器中没有 DVD)则会再尝试从本地的硬盘驱动器启动。
假设有一台PC,硬盘上装有 Windows 10,用户可以设置启动顺序为上述顺序,然后插入Linux Live CD,这样就可以直接试用Linux。更常见的情况是直接使用键盘从BIOS或UEFI的引导菜单(英语:boot menu)或者BIOS设置(英语:BIOS Setup)中选择,BIOS设置通常可以通过在POST时按Delete或F2进入。
智能手机
现代的智能手机具备操作系统,系统在启动之前需要通过bootloader启动,手机启动的时候基带执行初始化,然后引导系统内核,直到系统启动。智能手机生产厂商通常在出厂时锁定了手机的bootloader,以防止用户误操作损坏了系统文件造成手机功能异常,部分厂商会给开发者或普通用户发放bootloader解锁码,这通常需要步骤众多的申请,锁定bootloader能部分有效阻止恶意程序对手机造成的破坏,部分用户或开发者会通过解锁Bootloader以获得更多的功能和权限,这通常会带来使用风险。
参见
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads