15.开机流程和系统模式
[toc]
开机启动流程
Centos6
| 1 | # 开机流程 | 
Centos6开机流程
- 内核引导 - 1 
 2- # 'BIOS'加电自检,检测主板上的硬件设备,根据'BIOS'设置启动系统 
 # 读取'/boot'分区下,所有内核文件
- 运行 - init- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28- # init运行流程 
 1 运行init,会读取 /etc/inittab配置文件
 2 读取配置文件中的默认运行级别
 3 获取当前系统的运行级别
 4 启动init进程
 # Linux可以在不同场景,分配不同的开机启动程序,叫做'运行级别'
 ## init程序类型:
 SysV:CentOS 5前使用pid为1的进程 # 配置文件:/etc/inittab
 Upstart:CentOS 6 # 配置文件:/etc/inittab, /etc/init/*.conf
 Systemd:CentOS 7 # 配置文件:/usr/lib/systemd/system、 /etc/systemd/system
 # 加载init,涉及到Linux系统中7个运行级别
 运行级别0:关机运行
 运行级别1:单用户运行(修改root密码),root权限,用于系统维护,禁止远程登陆
 运行级别2:多用户运行,没有文件系统
 运行级别3:多用户运行,有文件系统(命令行模式)
 运行级别4:CentOS6和7 保留,未使用
 运行级别5:多用户,图形化运行级别
 运行级别6:重启运行(reboot)
 # 命令
 runlevel # 查看Linux系统当前的运行级别(前级别 现级别)
 init 级别 # 临时切换运行级别
 vim /etc/inittab # 永久切换运行级别
 ## id:3:initdefault(仅针对chentos6)
 chkconfig --list # 查看开机自启服务
 ## 该输出结果只显示 SysV 服务
- 系统初始化 - 1 - # 根据运行级别中设置的开机自启动服务,运行rc脚本来启动对应服务 
- 建立终端 - 1 - # rc执行完毕后,返回init后,init会打开6个终端以便用户登录系统 
- 用户登录系统 - 1 
 2
 3
 4- # 登录方式有三种: 
 命令行登录
 ssh登录
 图形界面登录 
Centos6关机
| 1 | ` 正确的关机流程为:sync > shutdown > reboot > halt | 
Centos6 忘记root密码或调整了运行级别为’6’
| 1 | # 进入单用户级别: | 
Centos7
Centos7开机流程
- BIOS(开机自检)
| 1 | # 'BIOS'加电自检,检测主板上的硬件设备,根据'BIOS'设置启动系统 | 
- MBR(- Master Boot Record主引导记录)
| 1 | # 主引导记录放在'linux'引导硬盘的第一个扇区中,此信息通过'BIOS'预加载到'ROM'中 | 
- GRUB2 Bootloader(引导菜单)
| 1 | # 加载'grub2'菜单,选择要进入的系统 | 
- Kernel(内核引导)
| 1 | 读取'/boot'目录下所有内核文件 | 
- Systemd(不再使用- init,改成了- systemd)
| 1 | runlevel0.target -> poweroff.target | 
- Runlevel-Target(运行级别)
| 1 | 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 | 
Centos7关机
| 1 | # 关机 | 
Centos7单用户模式
修改root密码(忘记root密码时使用)
- 开机在引导界面输入’e’,进入内核编辑模式  
- 进入编辑模式运行修改过的内核程序,并进入单用户模式 - 1 - # 在Linux16行末,添加:'enforcing=0 init=/bin/bash',然后按下'Ctrl+X'组合键来运行修改过的内核程序  
- 在单用户模式界面修改密码 - 1 
 2
 3
 4
 5
 6- # 无法直接修改密码,因为当前'/'目录是只读状态 
 # 挂载'/'目录后再修改密码
 mount -o rw,remount / # 重新挂载'/'目录
 echo 111 | passwd --stdin root # 免交互修改密码
 exec /sbin/init # 重新加载init 
PS:不需要重新挂载的方式
| 1 | 将ro改成rw可以免挂载'/'目录 | 

修改默认运行级别(默认运行级别无法进入系统时使用)
- 开机在引导界面输入’e’,进入内核编辑模式  
- 进入编辑模式运行修改过的内核程序,并进入单用户模式 - 1 - # 在Linux16行末,添加:'rd.break',然后按下'Ctrl+X'组合键来运行修改过的内核程序  
- 在单用户模式界面设备运行级别 - 1 
 2
 3
 4
 5
 6
 7
 8- # 挂载sysroot目录 
 mount -o rw,remount /sysroot/ # 重新挂载sysroot目录
 chroot /sysroot/ # 获取root权限
 systemctl get-default # 查看当前默认运行级别
 systemctl set-default multi-user.target # 设置允许级别为multi-user(runlevel 3级别)
 exit # 退出
 reboot # 重启 
Centos7救援模式
- 挂载Linux系统光盘镜像文件  
- 设置启动时进入BIOS  
- 进入BIOS设置从光盘启动 - 1 
 2
 3
 4
 5- # 设置从光盘启动 
 1.通过键盘'←''→'键进入boot界面
 2.通过'+''-'移动启动项顺序,最上面的为第一启动项
 3.设置完成后按'F10'保存并退出,按回车键确认 
- 进入故障排除界面  
- 进入救援模式  
- 选择’1’ - 1 
 2
 3- # 选择'继续' 
 输入要进入的选项编号'1'
 按回车键进入 
- 修复扇区救援 - 1 
 2
 3
 4
 5- bash-4.2# chroot /mnt/sysimage # 获取root权限 
 bash-4.2# grub2-install /dev/sda # 修复
 bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg # 重置grub.cfg配置文件
 exit # 退出root环境
 reboot # 重启 
- 再进入BIOS把启动项还原  
c7 systemctl(服务运行管理命令)
| 1 | # systemctl(服务运行管理命令) | 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 奥利奥の麦旋风!




