引导过程与服务控制 太详细了
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
![](https://i-blog.csdnimg.cn/direct/e61b0e2a791e4d79a1e23afce63ae1d1.gif)
推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
一、引导过程:
引导过程:当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些开机的过程,就是引导过程。
开机自检--------MBR引导-------GRUB菜单----------加载内核文件-------init(已淘汰) / systemd(Linux目前使用)启动方式
1、开机自检(BIOS) 硬件检查过程
服务器开机之后,根据主板的BIOS设置,对cpu内存,显卡,键盘等等(无涉及硬盘)设备进行初步的检测。检测成功后,根据预设的启动顺序(默认的启动顺序,第二个就是硬盘,要么手工设置的U盘启动。)系统的控制权从BIOS转移到硬盘(大多数时候转移给本机硬盘)。
总结:初步检测硬件工作是否正常,检测成功后,把系统的引导控制权限交给硬盘或着光驱或者 U盘
2、MBR引导:
MBR是硬盘的分区记录表,在这个表里记录硬盘的分区,以及系统启动盘的位置。系统的控制权到了硬盘,根据MBR记录表找系统启动盘,找到之后将系统的控制权传递给包含操作系统引导文件的分区,以及MBR记录中系统的启动菜单(grub)。
3、GRUB菜单:
硬盘启动之后,找到了系统分区,也找到了操作系统所在的位置分区,grup会显示启动菜单,包含所有当前可选的操作系统。选择了其中一个操作系统之后,系统转移控制权,转移到操作系统的内核文件。
centos7 使用的都是grub2引导器。
4、加载内核文件
操作系统的内核文件是一个预先编译好的特殊的二进制文件(可执行的代码),介于硬件资源和系统程序之间。**负责分配资源,**调度资源。只是分配和调度,并未真正运行。预加载到内核文件当中,系统程序等待启动。
5、init(已淘汰) / systemd(Linux目前使用)启动方式
/sbin/init进程是系统当中的第一个进程,是所有其他进程的父进程。先有init才有其他进程。init在系统中的进程号永远是1。
lib/systemd/system 进程: 他是系统的第一个进程,他的进程号也是1。
更换原因: init串行 : 一个一个启动,速度慢。
systemd是并行:加载在内存当中的程序,一起启动。速度快
systemd 单元类型:
systemd是centos7之后用来管理系统服务进程的管理器。使用单元模式(unit)来描述和控制服务资源。
特点:
1、支持并行服务,提高系统启动速度
2、可以支持自动重启
3、可以在进程运行期间动态的控制他的资源和相关的服务参数。
4、可以自动解决服务启动过程中的依赖关系。
5、支持多种管理方式。(命令行、图形化)
单元类型:![](https://i-blog.csdnimg.cn/direct/afaef8e0febf41beb9036fa92b9381e7.png)
单元类型 扩展名 描述
device .device 管理设备,驱动程序,设备文件,设备属性
mount .mount 管理文件挂载,以及挂载的选项,以及挂载之后的数据管理
Automount .automount 根据配置,自动的实现设备或者文件系统的挂载
[Unit] 服务说明
Description=nginx - high performance web server
#Description:描述信息
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
#After:依赖 ,启动的这个进程,systemd会根据after的条件把相关的进程一并启动
#表示支持dns解析以及该软件依赖于网络。
Wants=network-online.target
Wants:也是一个依赖条件,systemd也会把这个网络功能一并启动
#先启动网络服务,才能启动nginx
[Service]
服务运行的参数设置
Type=forking
后台运行
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
#重启的命令
ExecStop=/bin/kill -s TERM $MAINPID
#停止进程的命令
[Install]
#服务安装的相关设置,以及运行的模式
WantedBy=multi-user.target
#支持多用户模
系统运行级别:
运行级别 systemd 对应的target 说明
0 target 关机
1 rescue.target 单用户模式,系统维护使用
2 multi-user.target 字符模式和3一样
3 multi-user.target 字符模式 完整的字符模式 3模式可以支持 多用户,在工作中,我们遇到的都是3
4 multi-user.target 字符模式,和3一样
5 graphical.target 图形化多用户
6 reboot.target 重启
查看系统运行级别:runlevel
查看系统运行级别:init 0 1 2 3 4 5 6
二、如何对服务进程进行控制?:
systemctl 控制类型(必会) 服务名称(进程)
start 启动
stop 停止
restart 重启。先关闭(stop)再开启(start),(修改服务的配置文件,必须重启服务才生效)
reload 重新加载单元配置
status 查看服务状态 running 正常运行 dead 服务停止 fail 启动失败(查找原因)
exit-code 真正的启动失败 Result: signal 有人强制终止该进程
netstat -antp | grep 进程名 #查看进程名
三个实验(学废了可踩缝纫机包吃又包住):
1、mbr引导:mbr分区表被删了,如何恢复
![](https://i-blog.csdnimg.cn/direct/9e7df7eedfe44d04adfba26c456d8f70.png)
![](https://i-blog.csdnimg.cn/direct/70f1940ae7584ae89f10be2d5ea1e199.png)
添加硬盘 重启虚拟机
lsblk 查看硬盘分区
[root@localhost ~]# lsblk
[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# mkfs.xfs /dev/sdb1
[root@localhost ~]# mkdir /backup
[root@localhost ~]# mount /dev/sdb1 /backup/
[root@localhost ~]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
#mbr分区表在第一块硬盘当中的第一个分区,大小512字节。把分区表从第一个硬盘中提取出来,保存到sdb硬盘中。(mbr分区表做一个备份)
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000204599 秒,2.5 MB/秒
[root@localhost backup]# dd if=/dev/zero of=/dev/sda bs=512 count=1
#删除
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000206365 秒,2.5 MB/秒
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir
sh-4.2# df-h
sh-4.2# cd backupdir/
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda
sh-4.2# exit
2、grub2 引导菜单故障
[root@localhost grub2]# rm -rf grub.cfg
重启虚拟机在白条阶段 esc
sh-4.2# chroot /mnt/sysimag #进入系统的跟环境。光盘镜像的根目录
bash-4.2# grub2 -install /dev/sda 3重新安装grub2到第一块硬盘
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot
![](https://i-blog.csdnimg.cn/direct/683f7067849b4b608e626a45f3e8df7b.png)
![](https://i-blog.csdnimg.cn/direct/afca064e896d41139b93cb73fca3dfc7.png)
![](https://i-blog.csdnimg.cn/direct/bce6194605e6451699a23f3cf8b5b065.png)
![](https://i-blog.csdnimg.cn/direct/0b2812deaead4700b96f22323a58919e.png)
3、root密码忘记 抢救
root@localhost ~]# setenforce 0 # selinux 自带的防御机制
重启虚拟机 在下图白条阶段按Esc
![](https://i-blog.csdnimg.cn/direct/9eb1d41ee00c4dd7a3efa0fc2e82e7d0.png)
![](https://i-blog.csdnimg.cn/direct/367516995cc444b2ab275c63e1870966.png)
![](https://i-blog.csdnimg.cn/direct/86cf3283e33b4bdb8387a0e7a7adad31.png)
![](https://i-blog.csdnimg.cn/direct/45b4cd365db94211acf8fcafdcda0e65.png)
![](https://i-blog.csdnimg.cn/direct/2ec36534d22b4ce28fdd9397358729fe.png)
![](https://i-blog.csdnimg.cn/direct/b735dad5eace409a84f4521c12ec433b.gif)