引导启动和服务控制

1.引导过程

1.1开机自检

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

1.2MBR引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。 总结:运行放在MBR扇区里的启动 GRUB引导程序

1.3 GRUB

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

1.4加载Linux内核 (操作系统)调度硬件

Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。

1.5 启动init进程

加载硬件驱动程序,内核把init进程加载到内存中运行

传统init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢 排队 systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度 大家一起

2.服务

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

2.1systemd服务

Systemd新特性

  • 系统引导时实现服务并行启动
  • 按需启动守护进程
  • 自动化的服务依赖关系管理
  • 同时采用socket式与D-Bus总线式激活服务
  • socket与服务程序分离
  • 向后兼容sysv init脚本
  • 使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
  • systemctl无法与之通信和控制
  • 系统状态快照

systemd单元类型

运行级别多对应的systemd目标

init 0-6 就可以切换到对应的运行级别

2.2系统服务控制

格式:systemdctl 控制类型 服务名称(程序名)

控制类型有:start , stop ,status,reload,restart , enable ,disable

3.修复MBR扇区故障实验

3.1实验内容

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

3.2实验步骤

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

2.模拟破坏MBR引导扇区

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

之后是第二个,进入急救模式

4.输入1进入,回车

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

6.使用备份文件恢复mbr扇区

  1. 退出重启

能成功重启就算修复成功

4.修复GRUB故障

4.1实验内容

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

4.2实验操作

1.MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记,所以先建立备份

2.模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表

3.与mbr文件损坏一样,先进入急救模式,然后把第二块备份的盘挂载到mnt目录下

4.将备份文件覆盖sda盘

5.重启之后能正常开启就算成功

5.修改root密码

5.1实验一:

5.1.1实验内容

使用光驱进行密码修改,

5.1.1实验操作

1.先进入光驱,在电脑重启的一瞬间按一下esc进入,选择光驱

2.进入急救模式选项与上面两个实验一样

3.输入chroot /mnt/sysimage 进入系统根环境,去修改密码

4.输入修改密码命令

5.之后重启,如果成功的话我们自己的x-shell会让我们重新输入密码

5.2实验二:

5.2.1实验内容:

不使用光驱进行修改root密码,使用单用户修改密码

5.2.2实验操作:

1.先进入到grub文件下。

2.输入命令,添加内核参数 rd.break

3.输入ctrl x重启,进入单用户模式

4.输入命令,重新挂载

5.输入命令,进入根

6.修改密码

7.退出重启 如果x-shell让重输入密码就修改成功

6.systemctl服务的建立

6.1实验内容

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

6.2具体操作流程

1.根据安装包去解压到源文件

2.使用./configure 去设置安装目录并指定安装位置

等待安装完成后

3.进行编译

4.安装软件

5.去规定的文件夹下创建.service格式下的文件

6.按照规定格式去写文件

ini 复制代码
[Unit]
Description=The nginx HTTP and reverse proxy server     描述信息

[Service]
PIDFile=/apps/nginx/logs/nginx.pid    
ExecStart=/apps/nginx/sbin/nginx                 开始命令
ExecReload=/usr/bin/kill    -s HUP   $MAINPID     重新加载
ExecStop=/usr/bin/kill      -s TERM  $MAINPID     关闭命令

[Install]
WantedBy=multi-user.target                 弱依赖,被哪些units所依赖
~                            

检查无误后保存退出

7.刷新systemclt下的文件

8.使用systemctl命令启动nginx,并关闭

相关推荐
时差95310 分钟前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
CXDNW2 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
嚣张农民2 小时前
JavaScript中Promise分别有哪些函数?
前端·javascript·面试
阑梦清川6 小时前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展
鱼跃鹰飞15 小时前
大厂面试真题-简单说说线程池接到新任务之后的操作流程
java·jvm·面试
程序员清风17 小时前
浅析Web实时通信技术!
java·后端·面试
测试199818 小时前
外包干了2年,快要废了。。。
自动化测试·软件测试·python·面试·职场和发展·单元测试·压力测试
mingzhi6119 小时前
渗透测试-快速获取目标中存在的漏洞(小白版)
安全·web安全·面试·职场和发展
嚣张农民19 小时前
一文简单看懂Promise实现原理
前端·javascript·面试
Liknana21 小时前
Android 网易游戏面经
android·面试