Linux第八章:操作系统引导过程与服务控制

目录

一、操作引导过程

1.bios加电自检

2.Mbr

3.grub

4.加载内核

5.启动进程

二、操作系统运行级别

[1.init 0](#1.init 0)

[2.init 1](#2.init 1)

[3.init 2 3 4](#3.init 2 3 4)

4.init5

5.init6

三、开机问题的三个实验

1.模拟破坏mbr和分区表然后修复

2.修复grub文件及程序

[3.实验 破解密码](#3.实验 破解密码)

1.有光驱

2.无光驱

[四、编译安装 niginx-systemctl](#四、编译安装 niginx-systemctl)


一、操作引导过程

bios加电自检---------mbr-------grub----------加载内核--------------启动进程

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

1.bios加电自检

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

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

1.硬盘

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

3.网络启动

2.Mbr

应为grub太大第一个扇区存不下所有的grub程序分为两部分,指引硬件找到内核文件。

3.grub

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

4.加载内核

把内核运行再内存中

5.启动进程

init进程初始化:启动操作系统后需要启动进程,Centos 6系统的第一个进程是init进程,Centos 7的第一个进程是systemd进程。

system与init区别:

①systemd进程有init进程没有的监听功能,只要systemd正常其他进程都可以休眠,当有需要调用其他进程时systemd会将对应进程唤醒。

②systemd启动是并行启动,所有服务一起启动相对较快。init启动是串行启动,一个服务接一个服务启动相对较慢。

拓展:Centos6和Centos7的区别:

Centos6:默认是EXT4,单个文件系统容量达到1EB,单个文件则达到16TB

Centos7:文件系统:默认是XFS,默认支持8EB减一字节的单个文件系统,最大可支持的文件大小为9EB,最大文件系统尺寸为18EB

操作行为:

Centos6 service 服务名 操作行为

Centos7 systemctl 操作行为 服务名

主要用到的几种操作行为:

start:启动制定服务

stop:关闭指定服务

restart:重启指定服务

status:查看指定服务状态

reload:热加载服务,只读取配置文件不停止服务

总结:总的来说,centos6兼容性不错,而centos7的稳定性、安全性更强。另一个方面,由于centos6的内核版本较老,经常性会遇到安装软件时不能支持安装最新稳定版或安装时需要升级依赖、内核,比较麻烦。最重要的是一些新的流行软件已经不做centos6的兼容。如果现在安装操作系统的话,建议安装centos7版本,毕竟老的版本总要淘汰的,这是一个不争的事实。

二、操作系统运行级别

1.init 0

注:关机

2.init 1

注:单用户安全模式(类似于windows的急救模式)

3.init 2 3 4

注:字符界面

2少些功能

4没用过

所以常用的是init 3

4.init5

注:图形界面

5.init6

注:重启

三、开机问题的三个实验

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节

1.备份MBR 扇区数据到其它磁盘(/dev/sdb1)

mkdir /backup

mount /dev/sdb1 /backup

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

1.模拟破坏mbr和分区表然后修复

1.信加一块盘,将备份文件备份到新盘

2.dd if =/dev/sda of=/mnt/mbr count=1 bs=512 备份 分区表以及mbr

3.模拟破坏 dd if=/dev/zero of =/dev/sda count=1 bs=512

然后进入急救模式:

3

2

1

mdir bak

2.修复grub文件及程序

1.先模拟破坏 grub。cfg配置文件

mv /boot/grub2/grub.cfg /opt

2.重启进入急救模式 321

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

chroot /mnt/sysimage

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

grub2-install /dev/sda

5.重新生成配置文件

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

exit

reboot

3.实验 破解密码

1.有光驱

chroot /mnt/sysimage 切换根目录

passwd 修改密码

exit

reboot

2.无光驱

进入系统在选择 内核界面 选择带一个选项按e

将光标移动到linux开头行的最后 添加 rd.break

ctrl +x运行

进入单用户

重新挂载

mount -o remount.rw /sysroot

#重新挂载 添加 读写权限

chroot /sysroot

#切换到真正的根

passwd

#修改密码

touch /.autorelabel

#如果你开启了selinux 要重新打上标记

四、编译安装 niginx-systemctl

首先systemctl管理服务依靠的是/lib/systemd/system配置文件下有对应服务以.service结尾的文件,yum安装或者rpm安装服务时该文件是程序员已经写好了,但是编译安装没有此文件所以需要我们手写才可以通过systemctl来管理服务

首先编译安装

cpp 复制代码
#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 /apps/nginx -p    
#./configure   --prefix=/apps/nginx
#make
#make  install

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

首先在/lib/systemd/system目录下创建一个对应服务的.service文件,例如我们创建上面安装的httpd.service。

cpp 复制代码
#vim  /usr/lib/systemd/system/nginx.service
cpp 复制代码
[Unit]
Description=The nginx HTTP and reverse proxy server
#描述软件的功能

[Service]
PIDFile=/apps/nginx/logs/nginx.pid
# 方便使用  pid  号 进行操作  ,  指明进程的 pid 号
ExecStart=/apps/nginx/sbin/nginx
#使用绝对路径启动
ExecStop=/usr/bin/kill -s TERM $MAINPID
#杀死进程
ExecReload=/apps/nginx/sbin/nginx -s reload
#重新加载

[Install]
WantedBy=multi-user.target
安装子字符界面

如果代码报错,可以添加

配置文件创建完成后保存退出,然后重新加载systemctl的配置并使用systemctl管理服务停止并查看状态

相关推荐
linux修理工6 分钟前
n1 armbian 安装桌面环境并启用xrdp远程登录
linux·服务器·数据库
花小璇学linux22 分钟前
imx6ull-裸机学习实验1——汇编LED灯实验
linux·汇编·imx6ull·arm裸机开发
Brookty33 分钟前
【操作系统】进程(二)内存管理、通信
java·linux·服务器·网络·学习·java-ee·操作系统
易德研发40 分钟前
ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
运维·服务器·网络
开开心心就好2 小时前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony
生活爱好者!2 小时前
NAS 部署白板工具,实现思维导图/画板/流程图自由
运维·docker·容器
sanggou5 小时前
Linux批量执行工具脚本使用指南:一键运行多个release-dev.sh脚本
linux·bash
段帅龙呀7 小时前
Redis构建缓存服务器
服务器·redis·缓存
乌鸦不像写字台8 小时前
【docker部署】在服务器上使用docker
服务器·docker·容器
牧以南歌〆9 小时前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu