Linux:系统引导过程与服务控制
一、Linux操作系统引导过程
1.1 引导过程总览
1、开机自检:服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
2、MBR引导:当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用引导菜单(如GURB)。
3、GRUB菜单:对于Linux操作系统来说,GURB(统一启动加器)是使用最为广泛的多系统引导器程序。系统控制权传递给GURB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值) 加载Linux内核文件,然后将系统控制权转交给内核。
4、加载内核:Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度,内核接过系统控制权以后,将完全控整个Linx操作系统的运行过程。
5、init进程初始化:为了完成进一步的系统引导过程,Linux内核首先将系统中的"/sbin/init"程序加载到内存中运行(运行中的程序称为进程),init进程负责完成整个系统的初始化,最后等待用户进行登录。
引导过程 | 说明 |
---|---|
开机自检(BIOS) | 检查硬件设备,检测出第一个能够引导系统的设备,比如硬盘或者光驱 |
MBR引导 | 运行放在MBR扇区里的启动GURB引导文件 |
GRUB菜单 | GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置,并屏幕显示grub菜单 |
加载内核 | 把内核和镜像文件系统加载到内存中 |
init进程初始化 | 加载硬件驱动程序,内核把init进程加载到内存中运行 |
二、排除启动类故障
2.1 系统初始化进程
2.2 Systemd 单元类型
2.3 运行级别所对应的 Systemd目标
2.4 修复MBR扇区故障
- 故障原因
1、病毒、木马等造成的破坏
2、不正确的分区操作、磁盘读写误操作 - 故障现象
1、找不到引导程序,启动中断
2、无法加载操作系统,开机后黑屏 - 解决思路
1、应提前作好备份文件
2、以安装光盘引导进入急救模式
3、从备份文件中恢复 - MBR位于第一块硬盘 (/dev/sda) 的第一个物理扇区处,总共512字节
1.备份MBR 扇区数据到其它磁盘 (/dev/sdb1)
2.模拟破坏MBR引导扇区
重启系统崩溃,重新插入光盘,选择Troubleshooting
选择Rescue a CentOS system
按1,再按两次Enter进入急救模式
2.5 修复GRUB引导故障
- 故障原因
1、MBR中的GRUB引导程序遭到破坏
2、grub.cfg文件丢失、引导配置有误 - 故障现象
1、系统引导停滞,显示“grub>”提示符 - 解决思路
1、尝试手动输入引导命令
2、进入急救模式,重写或者从备份中恢复grub.conf
3、向 MBR 扇区中重建grub程序
一、尝试手动输入引导命令(不建议使用,太过繁琐,无法复制,只可手敲)
内核的名字及位置等信息
镜像文件
第一步:insmod xfs
第二部:输入内核的名字及位置等信息
第三步:输入镜像文件
第四步:boot
二、进入急救模式,重写或者从备份中恢复grub.conf(方法与修复扇区一致,只不过MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。)
三、向 MBR 扇区中重建grub程序
选择CD-ROM Drive,进入急救模式
exit退出系统根环境,reboot重启。
文件已经重新出现。
- 遗忘 root 用户的密码
1、进入急救模式
2、passwd root (改密码不显示)
三、服务控制及切换运行级别
3.1 系统服务控制
systemctl 控制类型 服务名称
命令 | 说明 |
---|---|
start | 开始 |
stop | 停止 |
restart | 重新启动 |
reload | 重新载入 |
status | 查看服务状态 |
3.2 ntsvsv系统服务管理工具
ntsysv
ntsysv --level 级别列表
- 按空格键标志服务选项
- 按↑、↓键切换服务选项
- 按tab键切换光标
四、优化启动过程
-
ntsvsv 工具
1、提供一个交互式、可视化窗口
2、可以在字符终端运行
3、便于集中管理多个服务
4、用于控制服务是否开机 -
systemctl/ chkconfig工具
1、不提供交互式、可视化窗口
2、管理单个服务效率更高 -
第一步:在/etc/init.d/当中建立一个脚本(vim firewall),
-
第二步:加入这个脚本(chkconfig - - add firewall),
-
第三步:更改是否开机自启(chkconfig - - level [1~5] firewall [on,off])
-
第四步:执行此命令(chkconfig - - list firewall)
chkconfig - - add 脚本名 #加入脚本#
脚本有固定格式,所以没有加入成功
-
Linux系统的运行级别
1、runlevel命令:runievel只能查看切换运行级别与当前运行级别
2、systemctl工具:systemctl时能查看默认的运行级别(默认运行级别在/etc/systemd/system/目录中)
-
临时切换运行级别
1、 init命令:init的命令参数是运行级别所对应的数字
2、svstemctl工具:systemctl的命令参数是具体的target -
设置永久运行级别