Linux启动流程

一、RHEL6

RHEL6启动级别:
1.关机 init 0
2.单用户模式(文本模式) init 1
3.多用户模式,无网络(文本模式) init 2
4.完整多用户模式 (文本模式) init 3
5.没有被使用 init 4
6.多用户图形界面 init 5
6.重启 init 6

一直重启:
假设vim /etc/inittab
id:5:... 将5改为6
init 6 重启,就会一直重启,则:

时间倒数时
一直按e键 再按e 选第二行 按e
空格
quiet 5或3
回车
b


vim /etc/inittab
id:6:... 将6改为5
:wq保存并退出


忘记密码:
时间倒数时
按e键 再按e 选第二行 按e
空格
quiet 1 进入单用户模式下
回车
b
passwd
root
123456
123456
reboot 重启

启动流程:
1>.开机加电自检
2>.找到GRUB引导器
3>.选择加载内核或者加载grub
4>.内核把init导入到内存中开始执行
5>.读取etc/inittab
etc/rc.d/rc.sysinit
etc/fstab
etc/rd.d/rc.local
6>.加载/sbin/mingetty

MBR位于磁盘边缘的一段引导代码
分为3部分:grub 446节,分区表 64字节,校验位55AA 2字节,一共512字节,一个扇区,每16个字节记录1个分区信息

分区表记录磁盘如何分区
grub:系统启动管理器
cat /boot/grub/grub.conf
default=0,默认从0开始启动
timeout=5,倒数5s
splashimage 启动后调用背景图片
hiddenmenu 隐藏菜单
initrd 帮助内核

内核版本号
主版本号,次版本号(若为奇数为正在开发的),补丁级数
显示内核:uname -r


二、RHEL7

1、RHEL7的启动级别
rescue.target
单用户模式
和多用户区别在于,不启动如何服务,加载了文件系统
适用于某服务设置故障,进入此模式修补

multi-user.target
多用户模式,文本

graphical.target
图形化,和多用户模式没什么区别,就多了图形化驱动

emergency.target
救援模式(只挂载/而且只读,不加载/etc/fstab)


2、级别切换
在系统内
systemctl isolate xxx.target

没进入系统时,按e,到linux16行尾
进入单用户的其他方法
按e,到linux16行尾加入s(single),此模式需要密码

进入救援的方法
按e,到linux16行尾加入emergency,和单用户基本一样,也需要密码,不加载/etc/fstab

RHEL6 fsck---ext3 ext4
RHEL7 xfs_repair 文件系统
rd.break
临时中断运行,未加载文件系统,比单用户还要精简
(也可以用init=/bin/bash init=/bin/sh)

3、RHEL7启动过程:

1.开机
2.找主板BIOS
检测硬件是否有故障
找启动介质
一个特殊的分区--boot分区
MBR Master Boot Recorder 主引导记录
512字节
446字节---Bootloader(GRUB2)
64字节 ---分区表 一个分区16字节
2字节 ---校验结束位
内核保存在 /boot
通过GRUB2加载内核到内存
GRUB2实际上是一个微型的OS,此os会识别一些常用的文件系统,
GRUB2运行时会读取自己的配置文件
/boot/grub2/grub.cfg
每个内核条目以menuentry开头
menuentry包含标题,选项(自己不要修改)
menuentry后面有一对大括号,其中都是启动项
启动项以TAB开头
linux16这行指定内核的位置,根分区的位置,以只读方式挂载根分区
字符集,键盘布局,语言
rhgb --- 以图形化方式显示启动过程
quiet--- 启动过程出现错误,提示

根都是xfs格式的,xfs需要驱动才能读取,/lib/modules/3.10.0-123.el7.x86_64/kernel/fs/xfs启动的位置

通过initrd16 将启动相关的驱动和模块解压到内存。

在RHEL7 grub.cfg不能直接修改,要通过修改/etc/default/grub
修改启动的配置文件
修改后用grub2-mkconfig工具生成grub2.cfg
/etc/grub.d目录在grub2-mkconfig生成配置文件时是需要加载的
00_header 设置grub的默认参数
30_os_prober 设置其他分区中的系统(硬盘中有多个操作系统设置
方法)
40_custom
41_custom 用户自己自定义
10_linux 系统中存在多个linux版本
20_ppc_terminfo 设置tty控制台

/boot/grub2/grub.cfg是上面文件的组合

设置某个内核启动?
grub2-set-default saved|号码
(/etc/default/grub)

原文地址:https://www.cnblogs.com/xmdjb/p/10949614.html