Linux系统启动的基本过程和步骤: 最近在某个版块看到有人讨论GRUB 的问题,这里是我个人的一些理解。 我想大部分还是正确的,但肯定也有理解错误的地方,在这里抛砖引玉了! Linux 系统启动过程大致按照如下步骤进行(这是一个简述): 第一阶段:BIOS 启动引导阶段; 在该过程中实现硬件的初始化以及查找启动介质; 从 MBR 中装载启动引导管理器(GRUB)并运行该启动引导管理 第二阶段:GRUB 启动引导阶段; 装载 stage1 装载 stage1.5 装载 stage2 读取/boot/grub.conf 文件并显示启动菜单; 装载所选的kernel 和initrd 文件到内存中 第三阶段:内核阶段: 运行内核启动参数; 解压 initrd 文件并挂载 initd 文件系统,装载必须的驱动; 挂载根文件系统 第四阶段:Sys V init 初始化阶段: 启动/sbin/init 程序; 运行 rc.sysinit 脚本,设置系统环境,启动swap 分区,检查和挂载文件系统; 读取/etc/inittab 文件,运行在/et/rc.d/rc<#>.d 中定义的不同运行级别的服务初始化脚本; 打开字符终端 1-6 号控制台/打开图形显示管理的7 号控制台 同时在上述过程中各阶段所需要读取的文件和操作的对象: BIOS 启动引导 阶段 GRUB 启动引 导阶段 内核阶段 /init/sysinit 阶段 ================================================================================================== None /boot/grub/grub.conf /boot/vmlinuz- /etc/rc.d/rc.sysinit /boot/grub/stage1_5 /boot/initrd- /etc/inittab /boot/grub/stage2 /etc/rc.d/rc<#>.d /etc/rc.d/init.d/* (下面是详细的过程) 第一阶段: 系统上电开机后,主板BIOS(Basic Input / Output System)运行POST(Power on self test)代码,检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)。硬件配置信息及一些用户配置参数存储在主板的CMOS( Complementary Metal Oxide Semiconductor)上(一般 64 字节),实际上就是主板上一块可读写的RAM 芯片,由主板上的电池供电,系统掉电后,信息不会丢失。 执行POST 代码对系统外围关键设备检测通过后,系统启动自举程序, 根据我们在 BIOS 中设置的启动顺序搜索启动驱动器(比如的硬盘、光驱、网络服务器等)。选择合适的启动器,比如通常情况下的硬盘设备,BIOS 会读取硬盘设备的第一个扇区(MBR,512 字节),并执行其...