Linux 操作系统引导过程和服务控制及切换运行级别优化启动过程

一,Linux 操作系统引导过程

1,引导过程总览

开机引导启动步骤

  • 1,开机自检(BIOS)
  • 2,MBR引导
  • 3,GRUB菜单
  • 4,加载内核 (Kernel)
  • 5, init 进程初始化
    在这里插入图片描述

启动详细流程:

 当按下电源按键后计算机硬件会读取BIOS或UEFI BIOS来加载硬件信息及进行硬件系统的自我测试,
 之后系统会主动去读第一个可启动的设备(BIOS设定),此时就可以读入启动引导程序了,启动引
 导程序可以指定使用哪个内核文件来启动,并实际加载内核到内存当中解压缩与执行。此时内核就能
 够开始在内存中活动,并检测所有硬件信息与加载适当的驱动程序来使整台主机开始运行,等到内核
 检测硬件与加载驱动程序完毕后,操作系统就启动好了。

流程:

  • 1.加载BIOS的硬件信息与进行自我检测,根据BIOS设置来取得第一个可启动的设备
  • 2.读取并执行第一个启动设备内MBR的启动引导程序(可以是grub2,也可以是spfdisk)
  • 3.根据启动引导程序的设置加载kernel,kernel会开始检测硬件与加载驱动程序
  • 4.在硬件驱动成功后,kernel会主动调用systemd程序,并以default.target流程启动
    systemd执行sysinit.target初始化系统及basic.target准备操作系统
    systemd启动multi-user.target下的本机与服务器服务
    systemd执行multi-user.target下的/etc/rc.d/rc.local文件
    systemd执行multi-user.target下的getty.target及登录服务
    systemd执行graphical需要的服务
  • 几个专有名称解释:
  • BIOS:不论是传统BIOS还是UEFI BIOS都会被简称为BIOS
  • MBR:虽然分区表有传统MBR及新式GPT,GPT有保留一块兼容MBR的区块,因此,都简称MBR
  • 关于内核文件:
 内核文件存放路径:/boot/vmlinuz
2, init 进程
  • 由LInux内核加载运行 /sbin/init程序
  • init 进程是系统中第一个进程
  • init 进程的PID(进程标记)号永远为1

SYStemd 进程 (init下面的一个进程)

  • SYStemd是linux操作系统的一种init软件
  • centos7中采用全新的systemd启动方式,取代传统的sysvinit
  • centos7中运行的第一个init进程是/lib/systemd/systemd

以下为systemd的几种单元类型

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

运行级别对应的systemd目标(重要掌握)

运行级别systemd的target说明
0target关机状态,使用该级别时将会关闭主机
1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护
2multi-user.target用户定义/域特定运行级别。默认等同于3
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
4multi-user.target用户定义/域特定运行级别。默认等同于3
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机

二,排除启动类故障

1,修复MBR扇区故障
故障原因
  • 病毒,木马等造成的破坏
  • 不正确的分区操作,磁盘读写误操作
故障现象
  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏
解决思路
  • 应提前做好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复
模拟MBR扇区破坏修复实验

实验前环境条件 :加一块硬盘做实验

查看磁盘
fdisk -l    //看是否有sdb
mkfs -t ext4 /dev/sdb   //格式化sdb
挂载mount /dev/sdb  /opt
备份MBR扇区数据
dd if=/dev/sda of=/opt/mbr.bar bs=512 count=1
模拟MBR扇区故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
重启后观察系统
 operating system not found    //出现此现象就是有故障MBR已经挂了
进bios系统将光盘设为优先启动
光盘引导,进入急救模式,从备份文件中恢复MBR扇区

步骤如下

1,装入光盘,在光盘引导界面选择 toubleshooting:
2,进入troubleshooting菜单 选择 rescue a centos system
3,进入引导可以按回车键,或者等待 按1 在按回车键进入sh-4.2#
4,急救模式下sdb的挂载

mkdir   /sdd
mount /dev/sdb   /sdd
cd  /sdd  查询下该备份文件是否存在

5,dd if=/sdd/mbr.bak of=/dev/sda count=1 bs=512
6, 启reboot进入系统测试是否正常

2, 修复GRUB引导故障
故障原因
  • MBR中的GRUB引导程序遭到破坏
  • grub.conf 文件丢失,引导配置有误
故障现象
  • 系统引导停滞,显示"grub>"提示符
解决思路
  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MNR扇区中重建grub程序
GRUB修复实例
在虚拟机上进行如下操作来模拟grub破坏:
cd /boot/grub2    //进入grub2
rm -rf grub.cfg    // 删除grub.cfg模拟故障
重启
######出现故障,如下####
grub>
   #####以上为出现故障页面
将光盘设置为开机优先启动之后进入急救模式进行grub构建修复
1,引导急救模式,加载系统镜像
  chroot /mnt/sysimage/
2,重新建立加载sda分区
 grub2-install /dev/sda
3,重新构建grub菜单配置文件
 grub2-mkconfig -o /boot/grub2/grub.cfg
4,退出bash环境
 exit
5,重启
 reboot
3 , 忘记root密码
1,设置光盘为优先启动
2,进入紧急模式
sh-4.2# chroot /mnt/sysimage 加载系统镜像
bash-4.2# passwd root
new:
retry:
exit  //退出bash环境 
reboot  //重启

三,服务控制及切换运行级别

1,系统服务控制

  格式 : systemctl   控制类型   服务名称

2,控制类型

  • start: 启动
  • stop :停止
  • restart : 重新启动 (服务中断)
  • reload :重新加载 (服务不会中断)
  • status :查看服务状态
  • enable : 开机自启动
  • disable :开机禁用

3,运行级别

  • 查看系统默认的运行级别 :systemctl get-default
  • 不重启切换当前运行级别: systemctl isolate multi-user.target
  • 查看当前运行级别:systemctl isolate multi-user.target 完了之后 runlevel

在这里插入图片描述

上图所代表的5是前一个运行级别,3是当前运行级别

  • 查看当前运行级别以及上一运行级别 who -r (run-level 当前运行级别 last: 上一个运行级别)
  • 修改默认运行级别(改完之后重启才能生效)
    systemctl set-default multi-user(graphical). target
    或者
    rm -f /etc/systemd/system/default.target
    ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
    reboot
    两条命令功能相同
    Removed /etc/systemd/system/default.target.
    Created symlink /etc/systemd/system/default.target --> /usr/lib/systemd/system/multi-user,target.
  • 查看哪单元服务依赖图形化界面
    systemctl list-dependencies
  • 看哪些单元服务依赖字符界面·
    systemctl list-dependencies multi-user.target
  • 查看一个运行级别下面所有的unit
    temctl list-dependencies multi-user.target
    说明:各个service前的黑色圆点,如果是绿色,表示正在运行中,active如果是黑色,表示inactive
  • 查看哪些target引用了当前运行级别的target
    systemctl list-dependencies multi-user.target --reverse
    说明 multi-user.target被graphical.target所引用
  • 引出系统中包含的所有target
    systemctl list-unit -files --type=target
  • 关闭cpu,但未关闭电源
    systemctl halt
系统服务的启动和控制
  • 查看系统服务的启动状态
    systemctl is-enabled 服务名称
  • 设置系统服务的启动状态
    systemctl enable/disable 服务名称
  • 列出所有服务是active
    systemctl list-units
  • 列出所有unit 包括 inactive
    systemctl list-units --all
  • 列出所有未运行的unit 即inactive状态
    systemctl list-units --all --state=inactive
  • 引出当前激活状态(active)的所有服务单元
    systemctl list-units --type=service
  • 列出所有状态包括active 和 inactive
    system list-units --type=service --all
  • 查看某一服务的状态
    systemctl status 服务名称
    以上命令针对回文state 说明
    static : 该配置文件没有【install】部分(无法执行)只能归为其他配置文件的依靠
    masked : 该配置文件被禁止建立启动连接
    enabled :已建立自启动连接
    disabled : 没建立自启动连接
  • 引出一个服务所依赖的单元
    systemctl list-dependencies 服务名称
  • 重新加载所有修改过的unit文件
    systemctl daemon-reload
  • 显示指定的unit的所有底层参数
    systemctl show 服务名称
    也可看其中一项;
    systemctl show -p PIDFILE openresty.service
    PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
  • systemctl 与关机/重启相关命令
    • 1,关闭cpu,但未关闭电源
      systemctl halt
    • 2, 关闭电源 (建议使用这个,这个会真正关闭电源)
      systemctl poweroff
    • 3,重启机器
      systemctl reboot

四,优化启动过程

优化启动过程
  • ntsysv 工具
    • 提供一个交互式,可视化窗口
    • 可以在字符终端运行
    • 便于集中管理多个服务
  • systemctl工具
    • 不提供交互式,可视化窗口
    • 管理单个服务效率更高
  • ntsysv 系统服务管理工具
    • ntsysv :图形化生效
    • ntsysv --level 级别列表 ,图形化,字符都生效
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值