欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

引导过程和服务控制

程序员文章站 2022-05-02 07:55:24
...

一、Linux操作系统引导过程

1.1 Linux操作系统的分类

  • 内核
    面向硬件的层面
  • 外壳
    面向用户的层面

1.2 引导过程的总览

引导过程和服务控制

1.3 系统进程初始化

1.3.1 init进程

  • 由linux内核加载运行 /sbin/init程序
  • init进程是系统中第一个进程
  • init进程的PID(进程标记)永远都是1

1.3.2 systemd组件

  • systemd是linux操作系统的一种init组件
  • CentOS7中采用全新的System的启动方式,取代传统的sysVinit
  • CentOS7中运行的第一个init进程是 /lib/systemd/system

1.4 Systemd单元格式

单元类型 扩展名 说明
Service .service 描述一个系统服务
Socket .socket 描述一个进程通信的套接字
Device .device 描述一个内核识别的设备文件
Mount .mount 描述一个文件系统的挂载点
Automount .automount 描述一个文件系统的自动挂载点
Swap .swap 描述一个内核交换设备或交换文件
Path .path 描述一个文件系统的文件或目录
Timer .timer 描述一个定时器(用于实现cron的调度任务)
Snapshot .snapshot 用于保存一个system的的状态
Scope .scope 使用systemd的总线接口以编程方式创建外部进程
Slice .slice 使用居于Cgroup的一组通过层次组织的管理系统进程
Target .target 描述一组systemd的单元

1.5 运行级别所对应的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 graphcal.target 图形界面的多用户模式,提供了图形桌面操作系统
init 6 reboot.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   ## 备份文件
dd if=/dev/zero of=/dev/sda bs=1024k count=1  ## 破坏已备份的源文件
init 6    ## 重启

MBR扇区修复

mkdir /data1   
mount /dev/sdb1 /data1   ## 制作新的挂载点
dd if=/data1/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/    ## 进入grub程序
rm -rf grub.cfg      ## 删除grub.cfg 模拟故障
init 6    重启系统

2.2.3 故障现象

系统引导停滞,出现如图情况
引导过程和服务控制

2.2.4 修复故障

  • 尝试手动引导命令
  • 进入急救模式,重写或从备份中恢复grub.cfg
  • 向MBR扇区重建grub程序

修复故障命令

因为硬盘配置的丢失,我们是准备用光盘来代替硬盘备份恢复grub.cfg配置文件,所以在看见上图故障现象时,重新启动并按F2进入模式,选择boot模式,将CD按住“shift+”设置为第一选项,然后按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 控制类型 服务名称
  • service 服务名称 控制类型
    这两种的效果是一样的,只是在命令的时候先后顺序不同。
    systemctl和service在管理服务时,在 /lib/systemd/system下面要有这个服务。service文件或者在 /etc/init.d/服务的配置文件。

3.1.1 控制类型

控制命令 作用
start 启动
stop 停止
restart 重新启动
reload 重新加载
status 查看服务状态

其中restart和reload的区别在于前者需要先关闭服务再开启服务,中间服务会断开,而后者不会中断服务。

3.2 运行级别

3.2.1 查看运行级别

  • runlevel命令
    只能查看切换运行级别和当前运行级别
  • systemctl工具
    查看默认的运行级别

3.2.2 临时切换运行级别

  • init命令
    init命令参数是运行级别所对应的参数
  • systemctl工具
    命令参数是具体的参数

3.2.3 设置永久运行级别

方式一:

systemctl set-default multi-user.target

方式二:

rm -rf /etc/systemd/system /default.target
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

两条命令的功能相同,都要重启才能生效

另: 查看当前的运行级别

 systemctl get-default

3.3 优化启动过程

3.3.1 ntsysv工具

  • 提供一个交互式、可视化窗口
  • 可以在字符终端运行
  • 便于集中管理多个服务

ntsysv系统服务管理工具

  • ntsysv
  • ntsysv --level 级别列表

3.3.2 systemctl工具

  • 不提供交互式、可视化窗口
  • 管理单个服务效率高

查看系统服务的启动状态

systemctl is-enable 服务名称

设置系统服务的启动状态

systemctl enable/disable 服务名称