Linux操作系统引导过程和服务控制
1、引导分区
1.1引导过程详解
1、开机自检(BIOS)
加电自检,检硬件是否有故障,如果无故障,就去bios中设置的第一启动项找grub的第一阶段。
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit, 中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移 交系统控制权,大多时候会移交给本机硬盘。 网络启动 加载 网络批量pxe 。
硬件启动POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测
主板的ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
2、MBR引导
第一个扇区的前446字节,有一个 grub程序第一阶段,引导硬件找到grub完整的程序。
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。
总结:运行放在MBR扇区里的启动 GRUB引导程序
3、GRUB菜单
会根据grub.cfg 配置文件找到操作系统
grub功能和组成
bootloader: 引导加载器,引导硬件去找到 内核(操作系统的核心)
- Windows: ntloader,仅是启动OS
- Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
Linux的bootloader
- LILO:LInux LOader,早期的bootloader功能单一
- GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使用GRUB 2.02
GRUB 启动阶段
- primary boot loader :
1st stage:MBR的前446个字节 引导 硬件去找 内核
1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统 - secondary boot loader :2nd stage,分区文件/boot/grub2/grub.cfg
4、加载内核(操作系统)
把内核和镜像文件系统加载到内存中,使其可以使用。
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
5、启动程序
祖宗进程
centos7 systemd
centos6 init
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录
总结:加载硬件驱动程序,内核把init进程加载到内存中运行。
传统init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢需要排队进行。
systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。
2、服务
2.1systemd服务控制
第一个启动的程序,提供保姆服务,可以将沉睡的程序叫醒。
使用systemctl命令管理服务类型
-
服务的目录:/user/lib/systemd
-
服务命令:
systemctl start开启服务
systemctl stop关闭服务
systemctl restart 重启服务
systemctl reload重新加载服务配置文件
systemctl status 查看服务状态
systemctl enable开机自启
systemctl disable 关闭开机自启查看防火墙的状态 systemctl status firewalld.service
关闭防火墙systemctl stop firewalld.service
打开防火墙systemctl start firewalld.service
3、运行级别
- 原理:是指现在的系统页面是什么类型,可以是单用户,字符型用户
- 使用runlevel查看当前运行级别和之前运行级别
- N代表之前没有改变,3表示当前运行级别是3字符界面
- 运行级别分类:
0:关机(target)
1:单用户,在生产中只有系统维护时会进入单用户模式(rescue.target)
2:不完整的字符界面
3:字符页面(multi-user.target)
4:重未使用过的功能
5:图形化界面(graphical.target)
6: 重启(reboot.target)
便捷操作:init + 数字
init 1
进入后界面变为这样
根据提示在此处输入root密码:
输入密码后会跳出命令行,输入init 5即可重新进入图形化界面。
- 1.默认级别:表示开机时默认进入哪个级别
查看默认级别:systemctl get-defaults可以看到当前默认级别时字符界面,所以开机时自动进入字符页面
- 2.修改默认级别:systemctl set-default
4、进程初始化
初试化区别:两种init和systemd
- init现在已经基本淘汰,init是串行启动,速度较慢
systemd是centos中一种init软件,是并行启动,速度较快 - init:目录文件/sbin/init
- systemd:目录文件/lib/systemd/systemd
- systemd单元类型:
1.service:启动管理系统服务
2.target:系统运行级别状态
3.socket:端口服务,提供网络套接字,为端到端之类的服务提供通信
4.device:硬件管理服务
5.path:管理文件和目录状态
5、修复扇区与修改密码
5.1 MBR扇区故障
5.1.1 故障原因
- 病毒、木马等造成的破坏
- 不正确的分区操作、磁盘读写等操作
5.1.2修复MBR扇区故障
- 添加新硬盘并分区
- 对硬盘进行分区操作
- 查看正常状态下磁盘的情况
hexdump -C -n 512 /dev/sda
- 备份MBR扇区数据到其他磁盘
dd if=/dev/sda of=/test/mbr.bak bs=512 count=1
//将MBR扇区备份到sdb1分区中.
- 破坏MBR磁盘扇区,使MBR扇区出现故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
//空字符替换 模拟MBR扇区故障
- 重启虚拟机
- 进入急救模式,用备份文件恢复MBR扇区数据,修复故障。
- 此时,新建目录backup下,有备份文件
- 再将备份文件的数据拷贝到sda中
- 在命令行中输入exit ,退出急救模式并重启
- 重启成功
5.2grub 引导故障
5.2.1故障原因
- MBR中的GRUB引导程序遭到破坏
- grub.cfg 文件丢失、引导配置有误
5.2.2 模拟修复grub配置文件
- 删除grub配置文件,重启观察故障情况
cd /boot/grub2 //切换到grub配置文件所在目录
rm -rf grub.cfg //删除配置文件 grub.cfg
- reboot 重启
- 重新启动,在读条界面按 Esc 键进入启动菜单,改用光盘启动,引导界面进入急救模式
5.3修改用户密码