基于嵌入式Linux 的完整系统软件由三个部分组成:系统引导程序、Linux 操作系统内核和文件系统。
系统引导程序 Boot Loader 是系统加电后运行的第一段软件代码,它的作用是加载操作系统或者其他程序到内存中,并将控制权交给它们。
系统引导程序通常分为两个阶段:
- 由 BIOS 或者 UEFI 完成,它负责检测硬件设备,读取硬盘的主引导记录(MBR)或者 GUID 分区表(GPT),并执行其中的引导代码;
- 由操作系统的引导加载程序完成,它负责读取操作系统的核心文件,设置启动参数,创建启动菜单,或者链载另一个引导加载程序。
换一个说法:
Boot Loader首先完成系统硬件的初始化,包括时钟的设置、存储区的映射等,设置堆栈指针等;
然后把操作系统内核从flash区拷贝到RAM区,并跳转到内核的入口,将系统控制权交给操作系统,在此之后系统的运行和Boot Loader 再无任何关系。
Linux的发行包中不包含Boot Loader,Boot Loader必须由用户自己设计,但用户可以直接使用或参考一些开源的Boot Loader软件工程。
Boot Loader的大小由其设计功能所决定,最小只有几K字节,功能复杂的一般也不超过100K字节。
Linux
系统的开机过程是这样的:从BIOS
开始,进入Boot Loader
,再加载内核系统,进行内核初始化,最后启动初始化进程。以前Linux
的启动一直是采用init
进程的。
常见的操作系统引导加载程序有 LILO,GRUB,SYSLINUX,Windows Boot Manager 等。
它们各有优缺点,可以根据不同的需求和场景选择合适的引导加载程序。一般来说,引导加载程序需要支持多种文件系统,能够识别不同的操作系统,提供友好的用户界面,支持安全启动等功能。
如果您想了解更多关于系统引导程序 Boot Loader 的信息,您可以参考以下的网页:
(1) 8.8. 配置引导加载器(Bootloader) - Debian. https://www.debian.org/doc/manuals/debian-handbook/sect.config-bootloader.zh-cn.html.
(2) 超详细分析Bootloader到内核的启动流程(万字长文) - 知乎. https://zhuanlan.zhihu.com/p/337507908.
超详细分析Bootloader到内核的启动流程(万字长文) - 知乎 (zhihu.com)
(3) 引导加载程序(BootLoader)_引导程序-CSDN博客. https://bing.com/search?q=%e7%b3%bb%e7%bb%9f%e5%bc%95%e5%af%bc%e7%a8%8b%e5%ba%8f+Boot+Loader.
(4) 引导加载程序(BootLoader)_引导程序-CSDN博客. https://blog.csdn.net/sinat_31608641/article/details/109981978.
(5) Bootloader开发:初识Bootloader - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/556181275.
(6) [小知识]Linux启动加载器介绍 – 深度科技社区 - Deepin. https://www.deepin.org/zh/linux-bootloaders/.