引导过程与服务控制
一、引导过程:
引导过程:当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些开机的过程,就是引导过程。
开机自检--------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、支持多种管理方式。(命令行、图形化)
单元类型:
单元类型 扩展名 描述
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分区表被删了,如何恢复
添加硬盘 重启虚拟机
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
3、root密码忘记 抢救
root@localhost ~]# setenforce 0 # selinux 自带的防御机制
重启虚拟机 在下图白条阶段按Esc
)