Linux引导流程解析

一、 Linux引导流程
1、系统引导流程
固件firmware (CMOS/BIOS) -> POST加电自检

自举程序 BootLoader (GRUB) ->载入内核

载入内核 ->驱动硬件

启动进程init

读取执行配置文件 /etc/inittab

2、常用固件设置
①安全设置
②可引导介质列表
③可引导介质搜索顺序
④电源管理
⑤启动细节显示

3、固件设置实例
hwclock 显示与设定硬件时钟(hardware clock)

4、主引导记录
Bootloader | partition table | Magic number
446bytes | 64bytes | 2bytes = 512 bytes

BootLoader 自举程序(引导装载程序)
Partition table 分区表,记录磁盘分区信息

5、内核
内核源码位置:/usr/src/linux
内核是整个操作系统的核心部分,负责最核心的文件系统管理、进程调度、网络通信等

二、Linux运行级别
Linux运行级别有7个,分别是:
0 关机
1 单用户
2 无NFS的多用户
3 多用户
4 不使用
5 X11
6 重启

三、Linux启动服务管理
1、init的工作
init读取inittab文件,执行缺省运行级别,从而继续引导过程。在UNIX系统中,init是第一个可以存在的进程,它的PID恒为1,但它也必须向一个更高级的功能负责:PID为0的内核调度器(Kernel scheduler),从而获得CPU时间。

2、inittab文件解析
①查看当前的运行级别
直接输入命令runlevel
②运行级别的切换
init [0123456Ss] 或 telinit[0123456Ss]
如 : init 3代表切换到运行级别3

Inittab文件描述了系统默认运行级别,已经相应的级别应该执行的初始化
在inittab中,所有条目采用以下格式:
Id: run-levels: action : process
Id 标识符,一般为两位
Run-levels 指定运行级别,可以指定多个
Action 指定运行状态
Process 指定要运行的脚本/命令

3、启动服务
Action常用取值:
Inittdefault:指定系统缺省启动的运行级别
Sysinit:系统启动执行process中指定的命令
Wait:执行process中指定的命令,并等其结束再运行其他命令
Once: 执行process中指定的命令,不等待其结束
Ctrlaltdel:按下ctrl + alt + del 时执行process指定的命令
Powerfail: 当出现电源错误时执行process指定的命令,不等待其结束
Powerokwait:当电源恢复时恢复process指定的命令
Respawn:一旦process指定的命令中止,便重新运行该命令

/etc/rc.d/init.d 该目录下包含各个运行界别的服务程序脚本
如l3:3:wait:/etc/rc.d/rc 3,表示当运行级别切换为3时,会执行目录/etc/rc.d/rc 脚本,这个脚本会执行/etc/rc.d/rc3.d目录下的服务程序脚本的符号链接,链接到init.d目录中的相应脚本,完成相应级别的初始化设置

id:3:initdefault: 这一句描述了默认的运行级别,3代表多用级别,5代表X windows级别

si::sysinit:/etc/rc.d/rc.sysinit
启动脚本/etc/rc.d/rc.sysinit,完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。

4、设置自启动程序
Ln – s 设置符号链接
Chkconfig 检查、设置系统的各种服务
Ntsysv 以图形化界面程序设置当前运行级别的自启动服务

5、相关命令及日志
①Dmesg 命令可以检查引导期间的错误
②检查系统日志/var/log/messages,查找可能被dmesg忽略的应用程序错误

四、GRUB配置与应用
1、Grub的配置
配置文件默认为/boot/grub/grub.conf
default=0 表示 启动时默认选择的title
timeout=5 表示启动延时
splashimage表示grub菜单背景图片
hidemenu是隐藏菜单
title定义菜单名称
root设置grub的根设备即内核所在的分区
kernel定义内核文件所在位置
initrd命令加载镜像文件

2、GRUB命令
e 编辑当前启动菜单项
c 进入GRUB的命令行方式
b 启动当前的菜单项
d 删除当前行
Esc 返回GRUB启动菜单界面,取消对当前单项所做的任何修改

五、启动故障分析与解决
1、单用户模式应用
①单用户模式可以不用密码登陆系统,并且拥有root权限。
②登录方式:开机进入GRUB界面,按e进入行编辑模式,在kernel按e键,在后面加上1或s ,即可进入单用户模式
③单用户模式可以用于重新设置root密码

2、GRUB密码
为了防止其它用户随意修改root密码,可以给GRUB加一个密码
①使用GRUB自带的grub-md5-crypt命令将明文密码转换为MD5密文 或 在grub交互命令行界面中使用md5crypt命令,即直接键入grub,再键入md5crypt
②编辑GRUB配置文件,加入行password –md5 密文

3、GRUB修复
若开机后没有进入GRUB界面,但是无法成功启动,可能是GRUB配置文件出现了问题(如文件路径写错),根据错误提示直接修改GRUB配置文件即可。在GRUB界面可以查看配置文件 cat /grub/grub.conf

4、Linux修复模式
①将安装盘放入光驱,重新启动机器,在BIOS中设置为光驱引导
②按F5进入linux rescue模式说明,在boot提示符下输入linux rescue回车进入修复模式

原文地址:https://www.cnblogs.com/hlb430/p/2613053.html