目录
1、Linux系统的引导过程:
开机自检(BIOS)-->MBR引导-->GRUB菜单-->加载内核(kernel)-->init初始化
(1)BIOS:是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。
其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。
(2)主引导记录(MBR)位于硬盘的第一物理扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区;
由于历史原因,硬盘的一个扇区大小是512字节,包含最多446字节的启动代码、4个硬盘分区表项(每个表项16字节,共64字节)、2个签名字节(0x55,0xAA)。
(3)GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序;CentOS 7 采用的是 GRUB2 启动引导器。
GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置;
(4)Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。
在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”;
(5)init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。init 程序首先是需要读取配置文件 /etc/inittab。
进程(process):一段程序的执行过程;
运维的作用:保证服务正常运行,整合和优化资源;
2、Linux系统有7个运行级别(runlevel):
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动;
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆;
运行级别2:多用户状态(没有NFS);
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式;
运行级别4:系统未使用,保留;
运行级别5:X11控制台,登陆后进入图形GUI模式;
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动;
3、系统初始化进程:
Init进程:(centOS6用init进程)
●由Linux内核加载运行/sbin/init程序;
●init进程是系统中第一个进程;
●init进程的PID (进程标记)号永远为1;
Systemd:(centOS7用systemd进程)
●Systemd是Linux操作系统的一种init软件;
●CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit;
●CentOS7中运行的第一个init进程 是/lib/systemd/systemd;
4、Systemd单元类型:
5、修复MBR扇区实验:
(1)故障原因
●病毒、木马等造成的破坏
●不正确的分区操作、磁盘读写误操作
(2)故障现象
●找不到引导程序,启动中断
●无法加载操作系统,开机后黑屏
(3)解决思路
●应提前作好备份文件
●以安装光盘引导进入急救模式
●从备份文件中恢复
实验操作:
(1)将selinux 关闭:# setenforce 0
(2)备份MBR扇区数据到其它磁盘( /dev/sdb1);
# fdisk /dev/sdb //创建/dev/sdb1分区
# mkdir /data //创建挂载点
# mkfs.xfs /dev/sdb1 //格式化分区
# mount /dev/sdb1 /data/ //挂载/dev/sdb1到/data目录下
# dd if=/dev/sda of=/data/tp.bak bs=512 count=1
复制 if=你要复制的文件 of=复制后的存放位置 bs=复制的大小 count=复制的次数
[root@localhost ~]# hexdump -C -n 512 /dev/sda //查看硬盘sda的前512个字节
(3)模拟破坏MBR引导扇区:
dd if=/dev/zero of=/dev/sda bs=512 count=1
hexdump -C -n 512 /dev/sda //查看硬盘sda的前512个字节
# init 6 //重启设备
(4)引导界面进入急救模式,从备份文件中恢复MBR扇区数据;
当出现安装向导界面时,选择"Troubleshooting"选项,再选择"Rescue a CentOS Linux system"选项,进入急救模式;
选择“1"选择Continue并按Enter 键继续
再次按Enter 键后将进入带“sh-4.2#"提示符的Bash Shell环境
sh-4.2# mkdir /data //创建挂载点
sh-4.2# mount /dev/sdb1 /data //挂载带有备份文件的分区
sh-4.2# ls /data //查看挂载文件
sh-4.2# dd if=/data/tp.bak of=/dev/sda //恢复MBR中512个字节引导文件
sh-4.2# exit //执行exit命令退出临时Shell环境,系统将会自动重启
(5)重启之后就能再次进入到登入界面了,代表修复成功;
6、修复GRUB 引导故障实验:
(1)故障原因
●MBR中的GRUB弓导程序遭到破坏
●grub.conf文件丢失、引导配置有误
(2)故障现象
●系统引导停滞,显示”grub>” 提示符
(3)解决思路
●尝试手动输入引导命令
●进入急救模式,重写或者从备份中恢复grub.conf
●向MBR扇区中重建grub程序
(1)我们这里采用向MBR扇区中重建grub程序的方法,因为方法二的做法跟上面修复MBR故障用的方法是类似的,所以我们这里采用第三种方式;
将selinux 关闭:# setenforce 0 //这个要关闭,以免带来不必要的麻烦;
(2)故障模拟,我们移走或删除/boot/grub2/grub.cfg这个文件,但这里不建议删除,推荐移走,以免数据的丢失;
mv /boot/grub2/grub.cfg /opt 或 rm -rf /boot/grub2/grub.cfg
(3)重启后进入电脑固件模式,将CD-ROM光驱调为第一项;
(4)进入急救模式,加载光盘镜像,切换到系统根环境;
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)重启后还要进入固件模式,将硬件驱动Hard-Drvie调至第一项,用于启动;
7、系统服务控制:
(1)系统服务控制
systemctl 控制类型服务名称
(2)控制类型
●start:启动
●stop:停止
●restart:重新启动
●reload:重新加载
●status:查看服务状态
chkconfig工具:
格式: chkconfig --list [服务名称]
chkconfig --add 服务名称
chkconfig --level 级别列表服务名 on/off
chkconfig --add httpd
chkconfig --level 35 httpd on
查看系统默认的运行级别
systemctl get -default
8、优化启动过程:
(1)ntsysv工具
●提供一个交互式、可视化窗口
●可以在字符终端运行
●便于集中管理多个服务
(2)systemctl工具:
不提供交互式、可视化窗口;
管理单个服务效率高;
##查看所有开机自启动的服务器
systemctl list-unit-files |grep enabled
总结:
(1)Linux操作系统的引导过程:
开机自检(BIOS)-->MBR引导-->GRUB菜单-->加载内核(kernel)-->init初始化
(2)排除启动类故障:如MBR故障,GRUB故障,忘记root密码等;
(3)服务控制及切换运行级别:init和systemctl;