Linux引导过程与服务控制
Linux引导过程与服务控制
一、Linux操作系统引导过程
1、开机自检
服务器主机开机后,将根据主板bios中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱。
2、MRB引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单。
总结:运行放在MBR扇区里,启动GRUB引导程序。
3、GRUB菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)准备加载 Linux 内核文件,然后将系统控制权转交给内核。
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。
4、加载Linux内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
总结:把内核和镜像文件系统加载到内存中。
5、init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成整个系统的初始化,最后等待用户进行登录。
总结:加载硬件驱动程序,内核把init进程加载到内存中运行。
二、系统初始化进程
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 是upstart,CentOS 7是systemd。
**引导程序不同:**CentOS6 是grub,CentOS 7是grub2。
**文件类型不同:**CentOS6 是ext4,CentOS 7是xfs。
4、Systemd单元类型
5、运行级别所对Systemd的目标
6、systemctl命令
-
systemctl status httpd #查看服务的运行状态
-
systemctl start httpd #启动
-
systemctl restart httpd #重启
-
systemctl reload httpd #重新加载
三、修复MBR扇区故障
1、故障原因
- 故障、木马等造成的破坏
- 不正确的分区操作、磁盘读写误操作
2、故障现象
- 找不到引导程序,启动中断
- 无法加载操作系统,开机后黑屏
3、解决思路
- 应提前做好备份文件
- 以安装光盘引导进入急救模式
- 从备份文件中恢复
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、实战,修复MBR扇区故障
(1)先添加一块硬盘并且刷新一下
(2)创建分区、备份MBR扇区数据到/dev/sdb1——>模拟破坏MBR引导扇区——>重启
(3)引导界面进入急救模式,从备份文件中恢复MBR扇区数据,先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择 Troubleshooting 选项
再选择 Rescue a CentOS Linux system 选项,进入急救模式选择 1 选择 Continue 并按Enter键继续
再次按Enter键后将进入带 sh-4.2# 提示符的Bash Shell环境
(4)在sh-4.2#后输入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引导程序
MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。
mkdir /bak
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
#模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表
dd if=/dev/zero of=/dev/sda bs=446 count=1
#引导界面进入急救模式,从备份文件中恢复GRUB引导程序
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir
sh-4.2# dd if=/backupdir/grub.bak of=/dev/sda
sh-4.2# exit
实战,修复GRUB扇区故障
(1)以防万一,要是这个文件grub.conf丢了就完了,所以先备份
mv grub.cfg /opt # 移走
(2)添加一块硬盘——>重启或扫描——>分区——>格式化并挂载——>移走grub.cfg,制造故障——>reboot重启
4、修改密码
先要关闭一下核心防护 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表示关闭
总结
Linux操作系统和引导过程、系统初始化进程、优化启动过程、系统服务控制与运行级别设置。