而GNU GRUB(GRand Unified Bootloader)和Kernel则是Linux系统启动过程中的两大核心组件
本文将深入探讨Linux系统中GRUB与Kernel的作用、相互关系以及配置方法,帮助读者更好地理解Linux系统的启动机制
GRUB:多系统启动的瑞士军刀 GNU GRUB,简称GRUB,是GNU项目下的一个启动引导程序,它允许用户在一台计算机上同时安装多个操作系统,并在启动时选择希望运行的系统
GRUB不仅支持多种操作系统和文件系统,还具备强大的配置和定制能力,使其成为Linux系统中最常用的引导加载程序之一
GRUB的启动过程分为几个阶段
Stage 1是GRUB的最初阶段,通常存储在磁盘的主引导记录(MBR)中,它的主要任务是查找并加载Stage 2
由于Stage 1在系统未启动时无法直接访问文件系统,因此GRUB引入了Stage 1.5,它位于文件系统可访问的分区上,用于辅助加载Stage 2
Stage 2则是GRUB的主要部分,它负责加载和显示启动菜单,允许用户选择操作系统或内核,并传递启动参数
GRUB的配置文件通常是/boot/grub/grub.cfg,该文件由grub-mkconfig命令根据/etc/default/grub和其他配置文件自动生成
/etc/default/grub是用户修改GRUB行为的主要配置文件,它包含了诸如默认启动项、等待时间、启动参数等设置
通过修改这个文件,用户可以轻松地定制GRUB的启动菜单,比如改变分辨率、隐藏菜单、添加内核参数等
GRUB还支持在启动时编辑菜单项,通过按下“e”键,用户可以临时修改某个菜单项的启动参数,这对于调试和测试非常有用
此外,GRUB的命令行模式(通过按下“c”键进入)提供了强大的交互功能,允许用户在启动过程中执行各种命令,比如挂载文件系统、加载内核等
Kernel:Linux系统的心脏 Kernel是Linux系统的核心组件,它负责管理系统的硬件资源,包括CPU、内存、磁盘等,并提供了进程调度、内存管理、文件系统、网络等功能
Kernel以压缩的形式存储在硬盘上,当GRUB将其加载到内存中并解压缩后,Kernel开始执行,并接管系统的控制权
Kernel的启动过程是一个复杂而精细的过程,它涉及到多个阶段的初始化
在Kernel启动的早期阶段,它会进行硬件检测和资源分配,设置中断和异常处理程序,并初始化内存管理
接着,Kernel会挂载根文件系统,这是系统启动后访问的第一个文件系统,通常包含了系统的核心文件和库
在挂载根文件系统后,Kernel会启动第一个用户空间的进程——init进程
init进程是系统所有用户进程的祖先,它负责执行系统的初始化脚本,比如启动系统服务、设置系统环境等
根据/etc/inittab文件(或现代系统中的systemd服务管理器)的配置,i