引导过程与服务控制

一、开机启动的完整过程

bios加电自检测-------mbr------grub----------加载内核文件------------启动第一个进程

简述:加电后bios程序会自检硬件,硬件无故障,会根据第一启动项去找内核,一般来说,第一启动项是硬盘,找到硬盘后,会根据mbr的指引找到完整的grub程序,再根据grub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后,会启动第一个程序。

bios作用:检测硬件是否正常,然后根据biso中的启动项设置,去找内核文件

boot:开机启动顺序(你可以把内核文件放在何处?)

1.硬盘

2.移动设备(u盘移动硬盘,光驱)

3.网络启动

mbr(二进制):因为grub程序太大,第一个扇区存不下所有的grub程序,所以分为两部分,指引硬件找到内核文件

grub:根据grub配置文件(grub.cfg)中记录的位置,去找到内核文件(高级语言)

加载内核:把内核运行在内存中

启动进程:启动第一个祖宗进程

centos6:init

centos7:启动systemd

1.1区别

init:串行启动后续的程序,一个一个按顺序启动

systemd:并行启动程序,全部一起启动

1.2systemd

systemd:是系统级的程序,代为管理系统上的程序

systemd:保姆级

yum以及rpm安装的软件可以直接使用systemctl去启动关闭,重启,开机自启等功能;   编译安装,不可以直接使用systemctl命令去管理程序,需要手写一个配置文件

systemd   **unit(单元)--------描述一个软件的作用和基本信息**,systemd方便管理程序,将程序按照特定的功能分成了很多单元;    

服务单元---写配置

systemctl       get-default------查看默认运行级别

systemctl       set-default------设置默认的级别


rpcbind:启动后,会监听111端口

1.3linux操作系统的运行级别

0:关机

1:单用户,类似于windows的急救模式

2:字符界面,少些功能 (nfs)

3:字符界面

4:字符界面,从来没用过

5:图形界面

6:重启

runlevel:查看当前运行级别

实验1:模拟破坏mbr和分区表,然后修复

1:新建一块硬盘

fdisk分区一下

格式化一下:

mkfs.xfs  /dev/sdb1

挂载到mnt下:

mount /dev/sdb1  /mnt/

2:将备份文件备份到新盘

dd   if=/dev/sda         of=/mnt/mbr       count=1     bs=512

进入mnt下:cd  /mnt

3.模拟破坏:

dd  if=/dev/zero        of=/dev/sda   count=1  bs=512

4.reboot-----重启一下

 

5.然后进入急救模式修复:3  2  1

6.mkdir  bak

7.mount  /dev/sdb1   bak

8.dd  if=bak/mbr.bak   of=/dev/sda   count=1  bs=512

9.reboot---重启服务


实验2:修复grub文件及程序

1.cd   /boot/     cd   grub2/

2.模拟破坏 grub.cfg 配置文件

mv   grub.cfg   /opt

3.重启一下---reboot

4.

5.

6

7

8.

9.先切换根,从光盘的根切换到 自己系统的根

chroot    /mnt/sysimage

10.重新安装grub2程序,在sda磁盘

grub2-install    /dev/sda

11.重新生成配置文件

grub2-mkconfig    -o     /boot/grub2/grub.cfg

12.退到光驱的根下----exit

13.重启----reboot

实验3:破解密码

第一种:有光驱

1.

2.

3.

4.

5.

6.切换根目录

chroot    /mnt/sysimage

7.修改密码

passwd

8.最后,exit退出,reboot--重启一下


2.无光驱情况

1.重启

2.

3.进入了grup程序里,输入命令

rd.break

4.挂载

mount  -o   remount,rw           /sysroot

5.切根,修改密码

chroot       /sysroot

passwd

6.刷新一下,打个标记

touch      /.autorelabel

7.exit退出去;reboot重启

实验4:编译安装nginx-systemctl

1.cd  /data/-----切换到data下

2.编辑文件

vim  test.sh

cd  /opt
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf   nginx-1.18.0.tar.gz
cd  nginx-1.18.0
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel 
#请使用网络源
mkdir /ky35/nginx -p    
./configure   --prefix=/ky35/nginx
make

make  install

ln -s /ky35/nginx/sbin  
#做软链接   可以补全  

3.

bash  test.sh

4.

vim  /usr/lib/systemd/system/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server

[Service]
PIDFile=/ky35/nginx/logs/nginx.pid
ExecStart=/ky35/nginx/sbin/nginx
ExecStop=/usr/bin/kill -s TERM $MAINPID
ExecReload=/ky35/nginx/sbin/nginx -s reload


[Install]
WantedBy=multi-user.target
 

5. 要 告诉  systemd  我加入你了

systemctl  daemon-reload-----nginx

6.开启nginx

systemctl  start  nginx

二、服务程序管理

1.介绍

什么是服务程序?

1.一旦运行一直运行,不会退出

2.一般是后台运行,不会影响前台的操作


管理服务程序

开启

关闭

重启

重新加载配置文件

开机自启

开机不自启

2.chkconfig    centos6

service   服务程序     start

service   服务程序     stop

service   服务程序     restart

service   服务程序     reload

service   服务程序     status

在 /etc/init.d/  写一个同名文件的脚本 (必须要有 执行权限)

chkconfig  --level  35  服务程序    on/off     开机自启和关闭

3.chkconfig      centos7

systemctl     start     服务名

systemctl     stop     服务名

systemctl     status     服务名

systemctl     reload     服务名

systemctl     restart     服务名

开机自启

systemctl       enable     服务名

开机自启,并立即启动

systemctl      enable   --now      服务名

开机不自启

systemctl       disable       服务名

开机自启,并立即关闭

systemctl      disable   --now      服务名


如果用yum 安装 以及 rpm 安装,会自动生成一个配置文件,不需要手动加入

systemd会自动加入