文章目录
前言
讲了Linux内核的一些文件组织管理
1. Linux内核体系结构
2. 内核引导与启动
BIOS/OF
- 加电后处理器首先访问通常位于只读内存(一般是Flash ROM或仅仅是Flash)中的某一地址。
- BIOS(基本输入输出)是x86系统加电后最先运行的代码。引导系统并与硬件相关的系统初始化代码。
- Open Firmware是PPC(PowerPC)系统加电后最先运行的代码。
BIOS功能
- 自检及初始化程序;
自检,对CPU,640K基本内存,1M以上的扩展内存,ROM,主板,CMOS存储器等进行测试。
初始化,包括创建中断向量、设置寄存器等。
引导程序 ,引导DOS或Linux等操作系统。 - 硬件中断处理;系统在加电引导机器时,要读取CMOS信息,用来初始化机器各个部件的状态。
- 程序服务请求;程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入输出设备有关,例如读磁盘、文件输出到打印机等。
引导装入程序(Boot Loaders)
- 格式化磁盘时,会创建主引导记录(MBR),该记录存储在引导设备的第一个扇区(0扇区、0磁道、0磁头)。包含:
- 一个小程序
- 一张四入口点的分区表
- 结束标识符(0XAA55),用来做MBR的有效性检测。
- Boot loader
识别操作系统的文件格式,并根据已加载内核到内存中去执行。
BIOS 与boot loader及内核加载流程
GNU GRUB
GRUB(Grand Unified Bootloader),基于x86的引导装入程序,用来加载Linux。
- GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。
- GRUB允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。
- GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
GRUB2
-
GRUB2(GRand Unified Bootloader, Version 2)是GRUB的第二版。
-
GRUB目前已经不再继续开发,只是修正存在的错误。
-
官方的说法是GRUB的编码实在太烂,以至于没法进行维护升级了,所以重新从零开发了新的GRUB2,从此以后原来的GRUB就叫做GRUB Legacy了。
-
GRUB2对GRUB2的接口进行了完整地重写,并且采用了清晰的架构和模块化的布局。
-
目前大部分都采用GRUB2作为内核引导管理器。
-
操作系统必须有loader才有办法加载该OS的内核。但还是MBR是整个硬盘第一个扇区中的一个区块,大小400多B。如何存储loader的数据?
-
Stage1 :执行Boot Loader的主程序
MBR或启动扇区仅安装boot loader的最小主程序 -
Stage2:主程序加载配置文件
通过boot loader加载所有配置文件与相关的环境文件 ( ls –l /boot/grub2)
总结
Linux内核的文件组织形式