引导和服务

发布时间:2024年01月03日

一、Linux操作系统引导过程

1、引导过程总览图

2、引导过程的详细步骤

1.开机自检(BIOS)

????????服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

总结:检查硬件设备,检测出第一个能够引导系统的设备,比如硬盘或者光驱

2.MBR引导

????????当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。

总结:运行放在MBR扇区里的启动 GRUB引导程序。

3.GRUB菜单

????????对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)准备加载 Linux 内核文件,然后将系统控制权转交给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。

4.加载内核(kernel)

????????Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

总结:把内核和镜像文件系统加载到内存中 可以使用。

5.init进程初始化

????????为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。

总结:加载硬件驱动程序,内核把init进程加载到内存中运行。

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

二、系统初始化进程

1、init进程(串行启动)

  • 由Linux内核加载运行/sbin/init程序
  • init进程是系统中第一个进程
  • init进程的PID(进程标号)号永远为1

2、Systemd(并行启动)

  • System是Linux操作系统的一种init软件

  • Centos7中采用全新的Systemd启动方式,取代传统的SysVinit

  • Centos7中运行的第一个init进程是/lib/systemd/systemd

3、Centos6与Centos7的区别:

CentOS 6串行运行,但有依赖关系还是一步一步执行 ;CentOS 7所有程序并行运行。
启动方式不同:CentOS6 是service? 服务名? start/stop? 。

CentOS 7是systemctl? start/stop??服务名? ?。
引导程序不同:CentOS6 是grub,CentOS 7是grub2
文件类型不同:CentOS6 是ext4,CentOS 7是xfs。

路径:/usr/lib/systemd/system/*.service 为结尾的文件

systemd能够识别并管理这些以.service为结尾的程序。

4、Systemd单元类型

注意:套接字文件是应用程序之间的数据连接文件,格式是,例如:127.0.0.1:3306。

5、运行级别所对Systemd的目标

6、systemctl命令

  • systemctl status httpd #查看服务的运行状态

  • systemctl start httpd #启动

  • systemctl stop httpd #停止

  • systemctl restart httpd #重启

  • systemctl reload httpd #重新加载

三、修复mbr扇区故障

1、故障原因:

  • 故障、木马等造成的破坏
  • 不正确的分区操作、磁盘读写误操作

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

2、故障现象

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

使用dd命令模拟将MBR损坏,复制512字节到/dev/sda中进行覆盖MBR
?dd if=/dev/zero of=/dev/sda count=1 bs=512

3、解决思路

  • 应提前做好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复

1、在覆盖前需要使用dd进行备份,如果没有备份,那这个系统就挂了。
怎么备份?备份需要使用dd命令将/dev/sda中的前512字节复制到一个新的硬盘中,
新的硬盘需要进行分区、格式化、挂载(建议永久挂载),挂载在新创建的目录下面。
?
2、进入linux中的急救模式,
(在重启前需要在DVD中的设置镜像,不然就无法进去急救模式)。
?
3、在shell环境中,新创建一个目录,然后将这个硬盘挂载在这个目录下
因为硬盘在前面已经复制过MBR的备份进去,所以它里面还是存在的,
最后将这个目录下的文件使用dd复制到/dev/sda中,重启即可。

?4、操作步骤

修复MBR扇区故障
第一步  先加一块硬盘     刷新
第二步  分区 
第三步  mkfs.xfs  /dev/sdb1      格式化  
第四步  mount  /dev/sdb1  /mnt   挂载 
第五步  df -h  查看
第六步  dd if=/dev/sda  of=/mnt/zzt  count=1  bs=512   复制备份zzt是备份的文件名
## if 复制的文件是哪个   of 复制到那个文件里   count=1  复制1次   bs=512  1次512字节 
第七步  ls  /mnt/  查看
第八步  hexdump -C -n 512 /dev/sda   查看512字节
第九步  dd if=/dev/zero  of=/dev/sda  bs=512 count=1     复制0到硬盘的512字节
第十步  重启 之后在光驱进行操作
引导界面进入急救模式,从备份文件中恢复MBR扇区数据,先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择  Troubleshooting  选项

再选择  Rescue a CentOS Linux system  选项,进入急救模式选择  1  选择  Continue 并按Enter键继续

再次按Enter键后将进入带"sh-4.2#"提示符的Bash Shell环境
mkdir bak   #创建文件夹
mount  /dev/sdb1  bak/     #挂载  
ls /bak/                   #查看 
dd if=/bak/zzt  of=/dev/sda  count=1 bs=512    #导给  
hexdump -C -n 512 /dev/sda              #查看 

5、实战

?1.新加一块盘,进行分区、格式化、以及挂载

2.将备份文件复制到新盘

3.模拟破坏/dev/sda

4.引导界面进入急救模式,从备份文件中恢复MBR扇区数据,先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择 Troubleshooting 选项
再选择 Rescue a CentOS Linux system 选项,进入急救模式选择 1 选择 Continue 并按Enter键继续
再次按Enter键后将进入带 sh-4.2# 提示符的Bash Shell环境

5.最后重启:reboot

四、修复GRUB扇区故障

1、故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub.conf文件丢失、引导配置有误

2、故障现象

  • 系统引导停滞,显示“grub”提示符

3、解决思路

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序

4、操作步骤

方法一:

以防万一,要是这个文件grub.conf丢了就完了,所以先备份
mv ?grub.cfg ?/opt ?移走
reboot 重启
进入急救模式,选 CD-ROM Drive ?回车、进去选择 ?Troubleshooting ?选项
再选择 ?Rescue a CentOS Linux system ?选项
#进入急救模式选择 ?1 ? 选择 ?Continue ?并 ?按Enter键继续
#进入急救模式,加载光盘镜像,切换到系统根环境
sh-4.2# chroot /mnt/sysimage ? ? 进入光驱系统里的根 ? ? 当前系统的根
#重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
bash-4.2# grub2-install /dev/sda
#重新构建GRUB菜单的配置文件
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
#退出chroot环境,并重启
bash-4.2# exit
sh-4.2# reboot

方法二:

以防万一,要是这个文件grub.conf丢了就完了,所以先备份
mv ?grub.cfg ?/opt ?移走
reboot 重启
进入急救模式,选 CD-ROM Drive ?回车、进去选择 ?Troubleshooting ?选项
再选择 ?Rescue a CentOS Linux system ?选项
#进入急救模式选择 ?1 ? 选择 ?Continue ?并 ?按Enter键继续
#进入急救模式,加载光盘镜像,切换到系统根环境
sh-4.2# chroot /mnt/sysimage ? ? 进入光驱系统里的根 ? ? 当前系统的根
#重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
bash-4.2# grub2-install /dev/sda
#重新构建GRUB菜单的配置文件
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
#退出chroot环境,并重启
bash-4.2# exit
sh-4.2# reboot

5、修改密码

先要关闭一下核心防护 ?setenforce 0
进入急救模式,选 ?CD-ROM Drive 回车、进去选择 ?Troubleshooting 选项
再选择 ?Rescue a CentOS Linux system ? 选项
进入急救模式选择 1 ?选择 ?Continue ?并按Enter键继续
在输入 ?chroot /mnt/sysimage
? ? ? ?passwd ?root ?#回车
显示passwd: 输入密码

五、优化启动过程

1、ntsysv工具

  • 提供一个交互式、可视化窗口
  • 可以在字符终端运行
  • 便于集成管理多个服务

2、systemctl工具

  • 不提供交互式、可视化窗口
  • 管理单个服务效率更高

六、系统服务控制与运行级别设置

1、Linux系统运行级别

1.查看当前级别

runlevel命令:runlevel只能查看切换运行级别与当前运行级别systemctl能查看默认的运行级别。

systemctl工具

2.临时切换运行级别

init命令

systemctl 工具

2、chkconfig命令

chkconfig命令用于检查,设置系统的各种服务

chkconfig --list #列出所有的系统服务

chkconfig --add httpd #增加httpd服务

chkconfig --del httpd #删除httpd服务

chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态

chkconfig --list #列出系统所有的服务启动情况

chkconfig --list mysqld #列出mysqld服务设置情况

chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭

文章来源:https://blog.csdn.net/AH99999/article/details/135349012
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。