一、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表示关闭