BIOS引导与Linux启动详解:从MBR到GRUB

需积分: 9 7 下载量 101 浏览量 更新于2024-08-25 收藏 235KB PPT 举报
BIOS引导 Linux 启动过程是一种复杂而精细的过程,涉及计算机启动时的多个步骤。以下是关键知识点的详细解释: 1. 加电自检 (POST): BIOS在计算机开机时首先进行POST(Power-On Self-Test),这是对系统硬件进行全面检查的阶段,包括内存、CPU、显卡、硬盘、键盘和显示器等,确保它们都能正常工作。 2. 本地设备枚举与初始化:BIOS继续查找并识别所有连接的设备,如硬盘、光驱、USB设备等,并初始化它们,以便后续操作。 3. 寻找启动扇区与MBR:BIOS会定位到磁盘的第一个扇区(MBR,即主引导记录),这是一个512字节大小的特殊扇区,其中包含了分区表和引导加载程序,用于指示哪个分区存储操作系统。 4. MBR加载与控制权转移:BIOS将MBR加载到内存中,通常地址是0000:7C00,然后通过INT 19h中断将控制权转交给MBR中的引导加载程序。 5. 引导扇区加载:MBR加载启动扇区到内存的特定地址,比如0000:7C00,然后开始执行那里的代码,这通常是bootsect程序。 6. 主引导记录(MBR)格式:MBR包含一个固定大小的分区表,用于描述硬盘的分区情况,以及一个简化的引导加载程序,如GRUB的stage1。 7. GRUB 引导加载程序:GRUB是一个两阶段的引导加载器,stage1(通常在MBR中)负责加载更复杂的stage2,后者负责内核的加载和引导菜单显示。如果需要文件系统支持,可能会使用stage1.5。 8. GRUB流程:用户可以通过GRUB的Menu.lst配置文件定制启动选项。GRUB允许用户指定内核位置,并在stage2中提供Shell环境。 9. Linux内核的引导:从ancient age开始,Linux内核引导过程涉及汇编代码的执行,如_start()函数,这个函数生成引导扇区并将自己移动到特定内存位置。随后的setup()函数负责初始化硬件、设置内存参数和视频设置,将系统转至保护模式,最后执行startup_32(),解压缩并加载bzImage(预编译的内核)到内存。 10. 初始化环境:startup_32()设置基础环境,如堆栈,然后调用decompress_kernel()解压缩内核,最后跳转到内核的入口点开始执行。 整个过程是一个逐步递进的过程,从BIOS的基本硬件检查到引导加载程序的交互,再到内核的初始化和启动,每一步都是为了确保计算机能够正确地加载和运行操作系统。理解这个过程对于诊断和解决启动问题具有重要意义。