第八章.引导和服务

106 阅读6分钟

本章结构

Linux操作系统引导过程

排除启动类故障

服务控制及切换运行级别

优化启动过程

一.Linux组成

1.kernel 内核 操作系统

  • 实现进程管理,内存管理,网络管理,驱动程序运行,文件系统,安全功能等

2.root包括程序和glibc

二.操作系统存储在

  • 1.硬盘
  • 2.光盘驱动器
  • 3.网络的远端机器

三.引导过程

image.png

1.加电 检测硬件是否有故障,如果无故障,就去bios中设置的第一启动项找操作系统

2.MBR引导 第一个扇区的前446 字节 有一个 grub 程序第一阶段,引导硬件找到操作系统gub 完整的程序

3.grub 会根据grub.cfg 配置文件找到 操作系统,找到根

4加载内核(操作系统)

5.启动程序 祖宗进程centos7 systemd centos6 init

四.修复MBR扇区故障

- 故障原因

  • 病毒、木马等造成的破坏。
  • 不正确的分区操作、磁盘读写错误操作

故障现象

  • 找不到引导程序,启动中断。
  • 无法加载操作系统,开机后黑屏

解决思路

  • 应提前作好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复

实验操作内容

  • -把MBR前512字节文件修复完成,需要光盘引导进入急救模式

具体操作内容

image.png

操作实验过程

1. sda 磁盘 新sdb磁盘

image.png

2.要想将新磁盘sdb在系统中用起来必须分区、挂载

分区:

image.png

挂载:

image.png

3.把sda磁盘的MBR引导扇区里的字节复制到新的磁盘sdb中去

3.1先在mnt下建立空文件

image.png

3.1将文件备份到别的硬盘中,这样我们破坏环境后可以直接从比别的盘中恢复

将sda扇区复制到sdb挂载点文件下/mnt/bak

image.png

4.模拟破坏MBR引导扇区,把0复制到磁盘中

image.png

5.进入引导界面进入急救模式,从备份文件中恢复MBR 扇区数据 先加载好光盘镜像,重启操作系统

image.png

6.进入急救模式

image.png

输入1回车
image.png
进入成功
image.png

7.在这个操作系统下建立文件夹,并将备份盘sdb1盘挂载到建立的文件夹下。

image.png

 ls /backup   查看backup下/mnt/bak是否成挂载进去

image.png

8.将备份好的的文件拷入坏磁盘的

image.png

9.输入exit退出急救模式并重新启动

mbr扇区坏掉实验结束

五.修复GRUB故障

故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub.cfg 文件丢失、引导配置有误

实验内容

如果grub文件损坏导致启动不了,使用MRB扇区重建grub程序

操作方法

/boot/grub/目录下的包是用于启动菜单的背景图片及样式

/boot/grub2/grub.cfg #GRUB配置文件

image.png

image.png

image.png

模拟修复grub配置文件

注:先用新磁盘将grub.cfg配置文件备份起来
image.png
分区
image.png
查看分区
image.png
格式化
image.png
挂载
image.png
去mnt建立文件

image.png

image.png

删除grub配置文件,重启观察故障情况

cd /boot/grub2         //切换到grub配置文件所在目录

rm -rf grub.cfg       //删除配置文件 grub.cfg

1. 因gurp配置文件被删除,机器无法启动

image.png

2.在读条页面点击读条并快速按esc,进入boot menu模式选择第3

image.png

3.在centos 7页面选择3 troubleshooting

image.png

4.在troubleshooting页面选择急救模式 2.``rescue a centos system

image.png

5.在rescue选择 1 )continue

image.png

6.进入急救模式,加载光盘镜像,切换到硬盘的系统根环境

image.png

7.重新将GRUB引导程序安装到第一块硬盘 (/dev/sda)的MRB扇区,如果有多个分区可省略

image.png

8.重新构建GRUB菜单的配置文件

image.png

9.exit 退出临根目录 ,reboot重启

image.png

10.重启后观察选择第一个

image.png

image.png

六.遗忘root用户密码

故障原因

  • 遗忘root用户的密码

故障现象

  • 无法进行需要root权限的管理操作
  • 若没有其他可用帐号,将无法登录系统

解决思路

  • 进入急救模式,重设密码

有光驱改密码

 chroot /mnt/sysimage
 进入急救模式后更改环境
 passwd 修改密码

无光驱改密码

image.png

具体操作如下

1.重启

image.png

2.启动时任意键暂停启动,按e键进入编辑模式

image.png

3.将光标移动linux 开始的行,添加内核参数 rd.break, 按ctrl-x启动

image.png

4.编写命令修改密码

image.png

5.

image.png

6.更改密码 xshall收到身份验证

image.png

六.linux 运行级别

  • 运行级别(runlevel)指的是系统的工作状态,定义了系统启动时运行的服务和进程.
  • init 0-6 可以切换到 对应的运行级别

systemctl get-default //获得当前的运行级别

systemctl isolate xxx.target //不重启切换运行级别

运行级别含义
0系统关机状态,所有服务已停止,可以安全地关闭电源
1单用户模式只有root用户可以登录,用于系统修复和维护
2文本模式多用户模式,功能不全字符界面
3文本模式多用户模式,完整的字符界面
4文本模式多用户模式,未被使用
5图形多用户模式,登录后进入 图形界面。
6重启

七. Systemd服务管理–systemctl

.init进程

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

Systemd

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

1. 什么是服务程序

  • 为其他机器提供服务的程序,服务程序启动后,会持续监听端口。

运行级别所对应的systemd目标

系统服务和控制

systemd:是保姆级的进,代为管理所有进程

systemctl start 程序名开启程序

systemctl stop程序名 关闭程序

systemctl status 程序名查看程序状态

systemctl restart 程序名重启程序

systemctl reload 程序名重新加载配置文件不会影响业

systemctl enable 程序名开机自启

systemctl disable 程序名 开机不自启

systemct!disable --now http 开机不自启并且立马关闭

systemctlenable --now 开机自启并且立马启动

启动程序

标题含义
systemctl start nginx启动nginx
systemctl status nginx查看运行状态
标题
systemctl stop firewalld关闭防火墙
setenforce 0永久关闭

八.systemctl服务的建立

实验内容

  • 使用编译安装nginx 之后创建systemctl的service快捷服务,可以查看进程并正常使用

具体操作流程

安装 依赖环境

1.yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel

image.png

- 2.cd /opt
- 然后再拖 安装包
- wget nginx.org/download/ng…
- 下载安装包
- tar xf nginx-1.18.0.tar.gz
- 切换加 解压

image.png

- 3.cd /opt/nginx-1.18.0
- ./configure --prefix=/apps/nginx
- 编译安装第一步

image.png

- 4.make -j2
- 两核编译
- make install
- 安装进 系统

image.png

5.cd /apps/nginx/sbin/nginx

image.png

- ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
制作软连接

image.png

6.vim /usr/lib/systemd/system/nginx.service
建立 service 文件

image.png

编写界面按照此格式编写

`[Unit]

Description=nginx - high performance web server

Documentation=nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/apps/nginx/logs/nginx.pid

ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

[Install]

WantedBy=multi-user.target`

- systemctl daemon-reload
- #重新加载 systemctl 程序
- systemctl start nginx
- #启动 nginx 服务
- systemctl status nginx
- #查看nginx 状态

image.png