4.12-15 引导和服务

103 阅读3分钟

Linux操作系统引导过程:

image-20240415135950628.png

1.开机自检(bios)

bios:

1.开机检测硬件是否有故障

2.指引硬件去哪里找操作系统(根据bios中设置的启动顺序去找 操作系统 1本地硬盘 2外界设备 3网卡)

进入bios

image-20240415141134128.png

image-20240415142124212.png

2.mbr引导

mbr(硬盘) 512

1开机引导程序 446字节

2分区表 64字

3.grub菜单

grub:根据 grub.cfg配置文件 找到内核文件

交互

设置密码

修复自己

4.加载内核(kermel)

kermel:加载内核,把内核放入内存里

5.init进程初始化

init进程:

由Linux内核加载运行 /sbin/init 程序

init 进程是系统中第一个进程

init 进程的PID(进程标记)号永远为1

systemd和init的区别:

init:启动程序时,是串行 12345678 顺序启动

systemd:启动程序时,是并行 12345678 同时启动

先启动 systemd或init,再启动其他程序

启动程序

centor7 启动的第一个程序 systemd

centor6 启动的第一个程序 init

解决系统启动中的故障

修复mbr扇区故障

1.新建一块硬盘 将mbr备份

mkdir /backup mount /dev/sdb1 /backup dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1

image-20240415161538906.png

2.模拟破坏mbr

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

image-20240415161808762.png 3.进入急救模式

image-20240415172430731.png

image-20240415172514443.png 挂载硬盘还原

sh-4.2# mkdir /backupdir sh-4.2# mount /dev/sdb1 /backupdir sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda sh-4.2# exit

image-20240415172834660.png

修复grub引导故障

在虚拟机重启的时候点esc键进入光驱系统 CD-ROM Drive

image-20240415175420353.png

然后同上进入急救模式

构建grub菜单配置文件 最后退出并重启

sh-4.2# chroot /mnt/sysimage

bash-4.2# grub2-install /dev/sda

bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg

bash-4.2# exit

sh-4.2# reboot

修改密码

同上进入急救模式 更改环境 然后修改密码

sh-4.2# chroot /mnt/sysimage

bash-4.2# passwd root

屏幕截图 2024-04-15 175946.png

systemd服务

服务程序

1本地服务程序,管理本机

systemd:管家式的程序,管理系统中其他程序

为了方便管理将系统中的程序按照一定的规则进行分类

被systemd程序管理

1系统必要的程序

2 yum rpm 安装的程序

3 编译安装的程序,需要手写配置文件后才可以被管理

/usr/lib/systemd/system/服务名.service 的文件

yum rpm 会自动生成 service 的文件

天生可以被systemd管理

编译需要手写该文件 手写服务名.service的文件

systemd 命令

屏幕截图 2024-04-15 181433.png

设置运行级别

屏幕截图 2024-04-15 144412.png

init 0 systemctl isolate poweroff.target systemctl poweroff poweroff 关机

init 1 systemctl isolate rescue.target 单用户模式(root自动登录), single, 维护模式

init 3 systemctl isolate multi-user.target 多用户模式,正常模式;文本界面

init 5 systemctl isolate graphical.target 多用户模式,正常模式;图形界面

init 6 systemctl isolate reboot.target systemctl reboot reboot 重启

编译安装手写配置文件被systemd管理

mkdir /data
cd /data
wget nginx.org/download/ng…
tar xf nginx-1.18.0.tar.gz
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
cd nginx-1.18.0/
./configure --prefix=/apps/nginx
make
make install
ln -s /apps/nginx/sbin/nginx /usr/local/bin

vim /lib/systemd/system/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server 单元描述

[Service]
Type=forking 启动时是以主进程加子进程启动 PIDFile=/apps/nginx/logs/nginx.pid 指定pid文件在什么地方 ExecStart=/apps/nginx/sbin/nginx 启动unit ExecReload=/apps/nginx/sbin/nginx -s reload 加载unit
ExecStop=/usr/bin/kill -s TERM ${MAINPID} 停止unit

[Install]
WantedBy=multi-user.target 依赖于混合模式

systemctl daemon-reload 重新加载systemd程序
systemctl start nginx 开启服务
systemctl status nginx 查看服务状态
systemctl stop nginx 停止服务
systemctl status nginx 查看服务

作用

unit

主要用来描述此软件的功能,man帮助,依赖关系等等

service

主要作用是,systemd 程序怎么具体管理该程序

怎么启动

怎么关闭

怎么调优 优化

install

在哪个运行级别启动