Linux:Linux 的启动流程详解
July 10, 2015
第一阶段: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 ==> bootloader ==> kernel & initrd.img ==> /sbin/init 1.bootloader (grub)
/boot/grub/grub.conf 在/boot/grub目录中有两个stage文件,其中: stage1 stage2 如果grub出现问题可能会有两种情况: a.无法进入grub,屏幕左上角只出现一个光标。出现这种情况基本上MBR已经被破坏,需要进入rescue模式进行修复。
–> chroot环境,执行 “grub-install /boot所在分区” 进行修复 –> 无grub相关命令时,安装grub.rpm包进行恢复 –> /boot目录下无相关的vmlinuz和initrd.img文件时,安装kernel.rpm包进行修复 –> 无grub.conf时需要手工修复
b.grub成功加载,屏幕出现“grub>”,表示配置文件grub.conf找不到。
–> 手工修复
2.kernel & initrd.img
在加载vmlinuz和initrd时出现:kernel panic情况,基本是grub.conf设置参数出问题。 –> 检查grub.conf编写是否出现问题 –> 也有可能是分区设置或者硬盘损坏等问题,需要进入rescue模式检查
3./sbin/init
/sbin/init的配置文件是/etc/inittab 按照这个配置文件,系统会依次执行以下脚本: —> /etc/rc.d/rc.sysinit 定义hostname,重新挂载各分区,加载各模块 —> /etc/rc.d/rc[0-6].d/目录下以S开头的脚本 启动各runlevel的服务 —> mingetty /dev/tty[1-6] 启用终端
0 Comments