引导过程与服务控制
1、Linux操作系统引导过程
2、服务控制及切换运行级别
3、优化启动过程
4、排障启动类故障
1、Linux操作系统引导过程:
简单地意思就是:
开机自检通过,把控制权交给第一个引导系统的设备,一般交给硬盘
运行放在MBR扇区里的GRUB引导程序
GRUB引导程序通过读取配置文件 /boot/grub2/grub.cfg ,来获取内核和镜像文件系统的设置和路径
内核接过控制权,把内核和镜像文件系统加载到内存里
加载硬件驱动程序,内核把init进程加载到内存中运行
接下来说说系统初始化进程:
- init进程)是由Linux内核加载运行 /sbin/init程序,init进程是系统中第一个进程,是所有进程的父进程(头子),进程标记号永远是1
- systemd)是Linux操作系统的一种init软件,centos7中采用全新的Systemd启动方式,取代传统的SysVinit。CentOS7中运行的第一个init进程是/lib/systemd/systemd
传统sysvinit依赖于串行执行 Shell 脚本启动服务,导致效率低下,系统启动速度较慢
systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。
systemd单元类型:
单元类型 |
扩展名 |
说明 |
Service |
.service |
描述一个系统服务 |
Socket |
.socket |
描述一个进程间通信的套接字 |
Device |
.device |
描述一个内核识别的设备文件 |
Mount |
.mount |
描述一个文件系统的挂载点 |
Automount |
.automount |
描述一个文件系统的自动挂载点 |
Swap |
.swap |
描述一个内存交换设备或交换文件 |
Path |
.path |
描述一个文件系统中文件或目录 |
Timer |
.timer |
描述一个定时器 |
Snapshot |
.snapshot |
用于保存一个systemd的状态 |
Scope |
.scope |
使用systemd的总线接口以编程的方式创建外部进程 |
Slice |
.slice |
描述居于cgroup的一组通过层次组织的管理系统进程 |
Target |
.target |
描述一组systemd的单元 |
2、系统服务控制:
a)系统服务控制:systemctl 控制类型 服务名称
b)控制类型:
- start:启动
- stop:停止
- restart:重新启动
- reload:重新加载
- status:查看服务状态
Linux系统运行级别:
a)查看运行级别:
runlevel命令
systemct工具
systemct get-default 查看系统默认运行级别
runlevel只能查看切换运行级别与当前运行级别
systemct能查看默认的运行级别
b)临时切换运行级别:
init的命令参数是运行级别所对应的数字
systemctl的命令参数是具体的target
多种方法的运行切换:
init 0 systemctl isolate poweroff.target poweroff
init 1 systemctl isolate rescue.target
init 3 systemctl isolate multi-user.target
init 5 systemctl isolate graphical.target
init 6 systemctl isolate reboot.target reboot
c)设置永久运行级别:
创建软连接方法: ln -sf /lib/ systemd/ system/multi-user.target /etc/ systemd/ system/default.target
直接修改: systemctl set-default multi-user.target
运行级别所对应的systemd目标:
运行级别 |
systemd的target |
说明 |
0 |
target |
使用该级别关闭主机 |
1 |
rescue.target |
单用户模式,无需密码即可登录,用于系统维护 |
2 |
multi-user.target |
用户定义域特定运行级别,默认等同于3 |
3 |
multi-user.target |
字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 |
multi-user.target |
用户定义域特定运行级别,默认等同于3 |
5 |
graphical.target |
图形界面用户模式,提供了图形桌面操作环境 |
6 |
reboot.target |
使用该级别重启主机 |
3、优化启动过程:有两个工具
a)ntsysv工具:
提供一个交互式、可视化窗口
可以在字符终端运行
便于集中管理多个服务
用于控制服务是否开机自启动
b)systemctl / chkconfig 工具
不提供交互式、可视化窗口
管理单个服务效率更高
ntsysv系统服务管理工具:
ntsysv
ntsysv --level 级别列表
空格键表示选中再次空格取消
↑ ↓ 键切换服务选项
tab 键切换光标
systemctl is-enabled 服务名称: 查看系统服务是否启动
systemctl enable 服务名称: 开启开机自启动
systemctl disable 服务名称: 关闭开机自启动
4、排除启动类故障:
修复MBR扇区故障
MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节
a)备份MBR扇区数据到其它磁盘(/dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
b)模拟破坏MBR引导扇区
dd if=/dev/zero of=/dev/sda bs=512 count=1
c)引导界面进入急救模式,从备份文件中恢复MBR扇区数据 ,先加载好光盘镜像,重启操作系统,当出现安装向导界面时,选择"Troubleshooting”选项,再选择"Rescue a Centos Linux system"选项,进入急救模式,选择“1”选择Continue并按Enter键继续 ,再次按Enter键后将进入带“sh-4.2#”提示符的Bash She11环境
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir 挂载带有备份文件的分区
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda 恢复备份数据
sh-4.2# exit 执行exit命令退出临时Shell环境,系统将会自动重启
修复GRUB 引导故障:
由于手动输入引导命令繁琐易出错就不多说了。
方法1:进入急救模式,恢复GRUB引导程序
MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字
中。
mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表
dd if=/dev/zero of=/dev/sda bs=446 count=1
方法2:进入急救模式,恢复GRUB引导程序
MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节
中。
mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
dd if=/dev/zero of=/dev/sda bs=446 count=1 模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表
引导界面进入急救模式,从备份文件中恢复GRUB引导程序
sh-4.2# mkdir /backupdir
sh-4.2# mount/dev/sdb1 /backupdir
sh-4.2# dd if=/backupdir/grub.bak of=/dev/sda
sh-4.2# exit
方法3:引导界面进入急救模式,重建GRUB菜单配置文件
rm -rf /boot/grub2/grub.cfg
sh-4.2# chroot /mnt/sysimage 进入急救模式,加载光盘镜像,切换到系统根环境
bash-4.2# grub2-install /dev/sda 重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg 重新构建GRUB菜单的配置文件
bash-4.2# exit 退出chroot环境,并重启
sh-4.2# reboot 退出chroot环境,并重启
遗忘root用户密码:
第一步:进入光盘模式CD-ROM Drive
第二步进入排障模式:Troubleshooting
第三步进入急救模式:Rescue a Centos system
第四步经过漫长的等待后要你输入继续,选择1 然后确认:
第五步输入新密码退出并重启: