一、Linux操作系统引导过程
1.1 引导过程总览
1.2 系统初始化过程
int进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程
init进程的PID(进程标记)号永远为1
Systemd
Systemd是Linux操作系统的一种init软件
entOS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/lib/systemd/system
Systemd单元类型
单元类型 | 拓展名 | 说明 |
---|---|---|
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述—个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述—个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述—组systemd的单元 |
运行级别所对应的Systemd目标
运行级别 | Systemd的target | 说明 |
---|---|---|
init 0 | poweroff.target | 关机状态,使用该级别时将会关闭主机 |
init 1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
init 2 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
init 3 | multi-user…target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
init 4 | multi-user…target | 用户定义/域特定运行级别。默认等同于3 |
init 5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
init 6 | rebot.target | 重新启动,使用该级别时将会重启主机 |
二、Linux排除启动类故障
2.1 修复MBR扇区故障
2.1.1 故障原因
- 病毒、木马等造成的破坏
- 不正确的分区操作、磁盘读写误操作
2.1.2 故障现象
- 找不到引导程序,启动中断
- 无法加载操作系统,开机后黑屏
2.1.3 解决思路
- 应提前作好备份文件
- 以安装光盘引导进入急救模式
- 从备份文件中恢复
2.1.4 制造故障及修复
MBR扇区破坏
dd if=/dev/sda of=/data/mbr.bak bs=1024k count=1 ## 备份MBR扇区数据
dd if=/dev/zero of=/dev/sda bs=1024k count=1 ## 破坏已备份的MBR扇区源文件
init 6 ## 重启
MBR扇区修复
mkdir /opt1
mount /dev/sdb1 /opt1 ## 制作新的挂载点
dd if=/opt1/mbr.bak of=/dev/sda bs=1024k count=1 ## 将备份文件拷到sda中
reboot ## 重启
2.1.5 MBR故障及修复的注意事项
- mbr扇区存在于第一块硬盘空间里,因此想要破坏mbr数据,只需要破坏第一块硬盘空间里的数据即可。
- 对第一玦硬盘备份时,注意备份磁盘空间不能小于第一块硬盘的空间大小。
2.2 修复GRUB引导故障
2.2.1 故障原因
- MBR中的GRUB引导程序遭到破坏
- grub.conf文件丢失、引导配置有误故障现象
2.2.2 模拟制造故障
cd /boot/grub2/ ## 进入grub2
rm -rf grub.cfg ## 删除grub.cfg 模拟故障
init 6 重启系统
2.2.3 故障现象
- 系统引导停滞,显示“grub>”提示符
如图所示
2.2.4 解决思路
- 尝试手动输入引导命令
- 进入急救模式,重写或者从备份中恢复grub.conf
- 向MBR扇区中重建grub程序
修复故障命令
因为文件的丢失,导致硬盘配置有误,准备用光盘启动来代替硬盘备份恢复grub.cfg配置文件,所以在看见上图故障现象时,重新启动并按F2进入模式,选择boot模式,将CD按住“+”号设置为第一选项,然后按F10保存设置进行如下命令操作。
chroot /mnt/sysimage/ ## 引导急救模式,加载系统镜像
grub2-install /dev/sda ## 重新建立加载sda分区
grub2-mkconfig -o /boot/grub2/grub.cfg ## 重新构建grub菜单配置文件
exit ## 退出bash环境
reboot ## 重启
结束后,因为上面将CD启动设为第一选项,这是应使用同样的方式再将硬盘启动重新设置为第一选项保存即可。
2.3 遗忘root用户密码
2.3.1 故障原因
- 遗忘root用户的密码
2.3.2 故障现象
- 无法进行需要root权限的管理操作
- 若没有其他可用帐号,将无法登录系统
2.3.3 解决思路
进入急救模式,重设密码
修复命令
chroot /mnt/sysimage
passed root
new:
retry:
exit
reboot
三、系统服务控制及切换运行级别
3.1 系统服务控制
systemctl 控制类型 服务名称
3.1.1 控制类型
类型 | 作用 |
---|---|
start | 启动 |
stop | 停止 |
restart | 重新启动 |
reload | 重新加载 |
status | 查看服务模式 |
restart 重新启动 :先关闭服务再开启服务,服务会中断
reload 重新加载:不会中断服务
3.2 Linux系统的运行系统
查看运行级别
1.runlevel命令
2.systemctl工具
runlevel只能查看切换运行级别与当前运行级别
systemctl时能查看默认的运行级别
临时切换运行级别
1.init命令
2.systemctl工具
init的命令参数是运行级别所对应的数字
systemctl的命令参数是具体的target
设置永久运行级别
修改默认的运行级别
set-default 用来指定默认的运行级别
方式1:
systemctl set-default multi-user.target
方式2:
rm -f /etc/systemd/system/default.target
ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
init 6 / reboot
两条命令功能相同,都要重启才能生效
注:查看当前的运行级别
systemctl get-default
四、优化系统启动
4.1 优化启动过程
ntsysv工具
1.提供一个交互式、可视化窗口
2.可以在字符终端运行
3.便于集中管理多个服务
systemctl工具
1.不提供一个交互式、可视化窗口
2.管理单个服务效率更高
4.2 系统服务的启动和控制
ntsysv系统服务管理工具
ntsysv
ntsysv --level 级别列表
按照默认设置,只有当前运行级别会被配置要配置不同的运行级别使用"-level"选项来指定一个或多个运行级别。
例如,命令 “ntsysv --level 345” 配置运行级别3、4和5。
查看系统服务的启动状态
systemctl is-enabled 服务名称
设置系统服务的启动状态
systemctl enable/disable 服务名称
systemctl start 服务 = service 服务 start
systemctl stop 服务 = service 服务 stop
systemctl status 服务 = service 服务 status
systemctl reload 服务 = service 服务 reload
systemctl restart 服务 = service 服务 restart
注意∶systemctl 或 service 管理服务时,在/lib/systemd/system下面要有这个服务,service文件或者在/etc/init.d/服务的配置文件。