linux引导过程与服务控制

导读:本篇文章讲解 linux引导过程与服务控制,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Linux系统的引导同理等同于Windows系统的引导,可以通过两种方式实现:
其一,如果系统处于关机状态,那么打开电源按钮将开启系统引导过程。 其二,如果操作系统已经运行在一个本地用户(该用户可以是 root 或其他非特权用户),那么用户可以借助图形界面或命令行界面通过编程方式发起一个重启操作,从而触发系统引导过程,包括关机和重新开始的操作。

一、Linux操作系统引导过程

开机自检,找到第一个引导的设备(或硬盘、或U盘),在找到MBR引导程序,运行起来之后找GRUB菜单,启动菜单时会读取配置文件grub.conf(CentOS6)/gru2.cfg(CentOS7),再找内核和镜像(路径),加载到内核里面,基本完成之后底层就完成结束了。往上走,重新再自检一次(全面自检),会启动init进程,过程中会进行系统初始化(配置文件与进程等待完成即可)
在这里插入图片描述
开机自检:检测硬盘和引导设备
MBR引导:运行放在MBR扇区里的GRUB引导程序
GRUB菜单:GRUB引导程序用过读取配置文件(centOS 7: /boot/grub2/grub.cfg)来获取内核和镜像文件系统的设置和路径位置
加载linux内核:把内核和镜像文件加载到内存中
init进程初始化:加载硬件驱动程序,内核把init进程加载到内存之中

二、服务控制及切换运行级别

系统初始化进程

init进程

由Linux内核加载运行/sbin/init程序
init进程时系统中第一个进程(ps aux查看)
init进程的PID(进程标记)号永远为1(父)

Systemd

systemd是linux操作系统的一种init软件centOS7中采用的是全新的Systemd启动方式,取代传统的SysVint
centOS7中运用的第一个init进程时/lib/systemed/systemd

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 .tar.get 描述一组systemd的单元
*.service:描述一个系统服务 /usr/lib/systemd/system

运行级别所对应的Systemd目标

运行级别
0 target:关机
6 reboot.target:重新启动,重启主机

排除启动类故障

修复MBR扇区故障

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节(0-2047)
故障原因
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作
故障现象
找不到引导程序,启动中端
无法加载操作系统,开机后黑屏
解决思路
应提前作好备份文件 /sda–》/sdb
以安装光盘引导进入急救模式然后选择进入“安全模式”
从备份文件中恢复(dd复制后exit退出重启,检测)

具体过程

备份MBR扇区数据到其他盘(/dev/sdb1)

创建一个目录

[root@yzq ~]# mkdir /backup
[root@yzq ~]# ls/
-bash: ls/: 没有那个文件或目录
[root@yzq ~]# ls /
backup  data   etc   lib64  opt   run   sys  var
bin     data1  home  media  proc  sbin  tmp  wangwu
boot    dev    lib   mnt    root  srv   usr  yonghu

将创建的backup目录挂载到/dev/sdb1下面

[root@yzq ~]# mount /dev/sdb1 /backup/

在这里插入图片描述
将mbr引导备份到/dev/sdb1/backup/mbr.bak

[root@yzq ~]# dd if=/dev/sda1 of=/backup/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000316017 秒,1.6 MB/秒
[root@yzq ~]# cd /backup/
[root@yzq backup]# ls
mbr.bak
[root@yzq backup]# cat mbr.bak 
XFSB?_?G??}nδ@AB 
?? 
[root@yzq backup]# ?????????????????l???????? 

模拟破坏MBR引导扇区

将空文件替换/dev/sda1中的MBR引导

[root@yzq backup]# dd if=/dev/zero of=/dev/sda1 bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00028648 秒,1.8 MB/秒

重启

[root@yzq /]# init 6

引导界面进入急救模式,从备份文件中恢复MBR扇区数据

进入此页面在这里插入图片描述
选择第一项,输入1并点击回车
在这里插入图片描述
在这里插入图片描述
恢复成功在这里插入图片描述

修复GRUB引导故障

/boot/grup目录下的包是用于启动菜单的背景图片及样式
/boot/grub2/grub.cfg
故障原因
MBR中的GRUB引导程序遭到破坏
grub.cfg文件丢失、引导配置有误
故障现象
系统引导停滞,显示“grub>”提示符
解决思路
尝试手动输入引导命令
进入急救模式,重写或者从备份中恢复grub.cfg
向MBR扇区中重建grub程序

示例

删除grup.cfg模拟故障

所在位置:/boot/grub2/grup.cfg
在这里插入图片描述
故障现象
系统引导停滞,显示“grub>”提示符
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上继续进入安全模式
在这里插入图片描述
chroot /mnt/sysimage (进入镜像系统)
grub2-install /dev/sda(重做grup菜单到/dev/sda)
grup2-mkconfig -o /boot/grup2/grup.cfg(生成配置文件)
-o表示输出到
exit退出(退出镜像环境)
在这里插入图片描述
成功进入

遗忘root用户密码(或重置)

故障原因
遗忘root用户密码
故障现象
无法进行需要root权限的管理操作
无法以root用户登录系统
解决思路
进入修复模式,重设密码
进入单用户模式,重设密码

示例

重启页面输入c进入grub菜单模式
在这里插入图片描述
进入此页面进入安全模式(上面已有步骤)在这里插入图片描述
操作如下
在这里插入图片描述
最后reboot重启,密码修改完成

三.linux系统的运行级别

查看运行级别
runlevel命令
systemctl命令
临时切换运行级别
init命令
systemctl工具
设置永久运行级别

查看所有开机自启动的服务器
systemctl list-unit-files | grep enabled(服务器宕机后查看哪些服务需要开启)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76570.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!