目录
一、操作引导过程
1.bios加电自检
2.Mbr
3.grub
4.加载内核
5.启动进程
二、操作系统运行级别
1.init 0
2.init 1
3.init 2 3 4
4.init5
5.init6
三、开机问题的三个实验
1.模拟破坏mbr和分区表然后修复
2.修复grub文件及程序
3.实验 破解密码
1.有光驱
2.无光驱
四、编译安装 niginx-systemctl
bios加电自检---------mbr-------grub----------加载内核--------------启动进程
开机启动的完整过程:加电位bios程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据mbr的指引,找到完整的grub程序,再根据grub配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。
检测硬件是否正常,然后根据bios中的启动项设置去找内核文件
boot开机启动顺序:可以把内核文件放在何处?
1.硬盘
2.移动设备(u盘,移动硬盘,光驱)
3.网络启动
应为grub太大第一个扇区存不下所有的grub程序分为两部分,指引硬件找到内核文件。
根据grub配置文件中(grub.cfg)记录的位置,去找到内核文件高级语言。
把内核运行再内存中
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版本,毕竟老的版本总要淘汰的,这是一个不争的事实。
注:关机
注:单用户安全模式(类似于windows的急救模式)
注:字符界面
2少些功能
4没用过
所以常用的是init 3
注:图形界面
注:重启
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.信加一块盘,将备份文件备份到新盘
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
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
chroot /mnt/sysimage 切换根目录
passwd 修改密码
exit
reboot
进入系统在选择 内核界面 选择带一个选项按e
将光标移动到linux开头行的最后 添加 rd.break
ctrl +x运行
进入单用户
重新挂载
mount -o remount.rw /sysroot
#重新挂载 添加 读写权限
chroot /sysroot
#切换到真正的根
passwd
#修改密码
touch /.autorelabel
#如果你开启了selinux 要重新打上标记
首先systemctl管理服务依靠的是/lib/systemd/system配置文件下有对应服务以.service结尾的文件,yum安装或者rpm安装服务时该文件是程序员已经写好了,但是编译安装没有此文件所以需要我们手写才可以通过systemctl来管理服务
首先编译安装
#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。
#vim /usr/lib/systemd/system/nginx.service
[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
安装子字符界面
如果代码报错,可以添加