Linux-引导过程与服务控制

目录

前言

一、引导过程总览

1.1   开机自检

1.2   MBR引导

1.3   GRUB菜单

1.4   加载内核

1.5   init进程

二、系统初始化进程

2.1  init进程

2.2   systemd

2.3   systemd单元类型

2.4  运行级别所对应的Systemd目标

三、排除启动类故障

3.1  修复MBR扇区故障

3.1.1  故障原因

3.1.2  故障现象

3.1.3  解决思路

3.2  修复MBR扇区案例:

3.3  修复GRUP引导故障

3.3.1  故障原因

3.3.2   故障现象

3.3.3    解决思路

3.3.4   修复GRUB引导故障命令

3.3.5    修复GRUP引导故障实验案列:

3.4   遗忘root 用户密码

3.4.1   故障原因

3.4.2   故障现象

3.4.3   解决思路

3.4.5   遗忘root 用户密码实验

四、系统服务控制

4.1  系统服务控制命令systemctl

4.1.1 格式

4.1.2  控制类型

五、 Linux系统的运行级别

5.1  查看运行级别

5.1.1  runlevel 命令

5.1.2  systemctl 工具

5.2  临时切换运行级别

5.2.1  init命令

5.2.2   systemctl 工具

5.2.3   chkconfig 工具

5.3  扩展

六、优化启动过程

6.1   ntsysv工具

6.2   systemctl  工具

6.3   ntsysv系统服务管理工具

ntsysv 

6.4  查看系统服务的启动状态

6.5   设置系统服务的启动状态

6.6    扩展

七、总结


前言

从 CentOS7 版本开始,系统启动和服务管理器都交给 systemd 进行管理。

一、引导过程总览

1.1   开机自检

服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检

测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱

1.2   MBR引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控

制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(

如 GRUB)。

总结:运行放在MBR扇区里的启动GRUB引导程序

1.3   GRUB菜单

对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统

控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载

Linux内核文件,然后将系统控制权转交给内核。

CentOS 7 采用的是 GRUB2 启动引导器。

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统

的设置和路径位置

1.4   加载内核

Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分

配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。

CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

总结:把内核和镜像文件系统加载到内存中

1.5   init进程

为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运

行中的程序称为进程),init 进程负责完成整个系统的初始化,最后等待用户进行登录。

总结:加载硬件驱动程序,内核把init进程加载到内存中运行

二、系统初始化进程

2.1  init进程

由linux内核加载运行/sbin/init程序

init进程是系统中第一个进程

init进程的PID(进程标记)号永远为1

总结:init 进程维持了整个Linux系统运行的所有进程,我们称之为“始祖”。并且init 进程是不允

许被轻

易终止的。当需要切换不同的系统运行状态时,可以向 init 进程发送正确的执行参数,由init 自身

来完成相关操作。

2.2   systemd

Systemd是linux操作系统的一种init软件

CentOS7采用全新的Systemd启动方式,取代传统的SysVinit

CentOS中运行的第一个init进程是/lib/systemd/systemd

总结:传统 SysVinit 依赖于串行执行 Shell 脚本启动服务,导致效率低下,系统启动速度较慢.

systemd 能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进

程,从而提高系统启动速度。

2.3   systemd单元类型

单元类型

扩展名

说明

Service

.service

描述一个系统服务

Socket

.socket

描述一个进程间通信的套接字

Device

.device

描述一个内核识别的设备文件

Mount

.mount

描述一个文件系统的挂载点

Automount

.automount

描述一个文件系统的自动挂载点

Swap

.swap

描述一个内存交换设备或交换文件

Path

.path

描述一个文件系统中文文件或目录

Timer

.timer

描述一个一个定时器(用于实现类似sron的调度任务)

Snapsho

.snapshot

用于一个systemd的状态

Scope

.scope

使用systemd的总线接口以编程的方式创建外部进程

Slice

.slice

描述居于Cgroup的一组通过层次组织的管理系统进程

Target

.target

描述一组systemd的单元

2.4  运行级别所对应的Systemd目标

运行级别

Systemd的target

说明

0

target

关机状态,使用该级别时将会关闭主机

1

rescue.target

单用户模式,不需要密码验证即可登录系统,多用于系统维护

2

multi-user.target

用户定义/域特定运行级别。默认等同于3

3

multi-user.targe

字符界面的完整多用户模式,大多数服务器主机运行在此级别

4

multi-user.targe

用户定义/域特定运行级别。默认等同于3

5

graphical.target

图形界面的多用户模式,提供了图形桌面操作环境

6

reboot.target

重新启动,使用该级别时将会重启主机

各个级别的作用:

0系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的;

1单用户模式,root权限,用于系统维护,禁止远程登录(只能通过实机进去),该模式的进入方

式百度操作即可;就像windows下的安全模式登录;(进入单用户模式的时候root不需要密码就可以登

录,所以在此模式下可以修改root密码)

2多用户模式,没有NFS和网络支持;

3完整的多用户文本模式,有NFs和网络,登录后进入控制台命令行模式。

4系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电池用尽

时,可以切换到这个模式来做一些设置;

5图形化模式,登录后进入图形GUI模式,x windows系;

6重启模式,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启

三、排除启动类故障

3.1  修复MBR扇区故障

MBR扇区故障MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节

3.1.1  故障原因

病毒、木马等造成的破坏

不正确的分区操作、磁盘读写误操作

3.1.2  故障现象

找不到引导程序,启动中断

无法加载操作系统,开机后黑屏

3.1.3  解决思路

应提前作好备份文件

以安装光盘引导进入急救模式

从备份文件中恢复

3.2  修复MBR扇区案例:

1.首先创建一个新的磁盘,20G

 2.先fdisk -l查看一下分区情况,这边硬盘已经添加成功。在管理分区

3.进行格式化

4.创建一个新的目录,备份MBR扇区数据到其他磁盘

5.将/dev/sda目录里面的512个字节复制到/backup/mbr.bak里面

 6.人为制造/dev/sdaMBR主引导分区损坏,然后再进行重启修复。

 

 7.引导界面进入急救模式,按图片上进行选择;

 8.进入带“sh-4.2#”提示符的BASH SHELL 环境,进行挂载分区,恢复备份数据

 

9.执行exit 命令退出临时Shell 环境,系统将会自动重启

3.3  修复GRUP引导故障

3.3.1  故障原因

MBR中的GRUB引导程序遭到破坏

/boot/grub2/grub. cfg 文件丢失、引导配置有误

3.3.2   故障现象

系统引导停滞,显示 “grub>” 提示符

3.3.3    解决思路

尝试手动输入引导命令

进入急救模式,重写或者从备份中恢复grub.conf

向MBR扇区中重建grub程序

3.3.4   修复GRUB引导故障命令

/boot/grub/目录下的包是用于启动菜单的背景图片及样式

/boot/grub2/grub. cfg    #GRUB配置文件

3.3.5    修复GRUP引导故障实验案列:

方法一:手动输入引导命令(笨拙繁琐,不建议使用)

grub>  insmod   xfs      #加载指定的模块到内核

grub>linux16/vmlinuz-3.10.0-693.e17.x86_64root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f

ro rhgb quiet

LANG=zh_CN. UTF-8       #内核的名字及位置等信息

grub>  initrd16    /initramfs-3.10.0-693.e17.x86_64.img      #镜像系统文件

grub>   boot       #引导boot

方法二:进入急救模式,恢复GRUB引导程序(与MBR 引导扇区类似,仅适用于前446字节被破坏)

MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记

录,分区表保存在MBR扇区中的第447-510字节中。

mkdir   /bak

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. rm -rf /boot/grub2/grub.cfg          删除文件

2.进入急救模式,切换系统根环境

 

3.重新安装引导程序,重新构建配置文件

3.4   遗忘root 用户密码

3.4.1   故障原因

遗忘root用户密码

3.4.2   故障现象

无法进行需要root权限的管理操作

若没有其他账号可用,将无法登陆系统

3.4.3   解决思路

进入急救模式,重设密码

3.4.5   遗忘root 用户密码实验

方法一:进入急救模式,加载系统镜像,重启按exit 按c切换到系统根环境

sh-4.2#chroot/mnt/sysimage

#重设root用户密码

bash-4.2#passwd root

方法二:进入单用户模式修改root密码为例。(没有光盘镜像的时候用)

1.重启开机按esc,第一行按e在启动GRUB菜单中选择编辑选项,按键"e”进入编辑;

⒉.编辑修改:大约在第16行找到"ro”将"ro”修改为" rw init=/sysroot/bin/bash ";

3.按ctrl+X重启,输入命令进入系统

sh-4.2#chroot /sysroot

 4.字符集修改

#修改前可修改字符集:

sh-4.2#LANG=en_US.UFT-8    

重置root密码

sh-4.2# passwd root

 5.#退出chroot环境,并重启;bash-4.2#exit  退出;sh-4.2# init 6  重启

四、系统服务控制

4.1  系统服务控制命令systemctl

4.1.1 格式

systemctl    控制类型    服务名称

4.1.2  控制类型

Start

启动

Stop

停止

Restare

重新启动

Reload

重新加载

Status

查看服务状态

示例:

systemctl status firewalld    查看防火墙服务状态

systemctl start firewalld     启动防火墙服务

systemctl reload [配置文件]

五、 Linux系统的运行级别

5.1  查看运行级别

5.1.1  runlevel 命令

只能查看切换运行级别与当前运行级别

5.1.2  systemctl 工具

能查看默认的运行级别

5.2  临时切换运行级别

5.2.1  init命令

init命令参数是运行级别所对应的数字

示例:

init 0       systemctl isolate poweroff. target        systemctl  poweroff        poweroff 关机

init 1       systemctl isolate rescue . target            切换单用户模式

init 3       systemctl isolate multi -user. target       切换字符界面多用户模式

init 5      systemctl isolate graphical. target          切换图形界面多用户模式

init 6       systemctl isolate reboot. target               systemctl reboot            reboot               重启

5.2.2   systemctl 工具

systemctl的命令参数是具体的target

systemctl [ command指令][unit.target]

command参数:

get-default :       查看当前默认的target(运行级别)

set-default :       设置指定的target为默认的运行级别(设置永久运行级别)

isolate :          切换到指定的运行级别

示例:

systemctl get-default                   查看当前的运行级别

systemctl set-default multi-user.target     设置默认的运行级别为mulit-user

systemctl isolate multi-user.target        在不重启的情况下,切换到运行级别mulit-user下

systemctl isolate graphical.target         在不重启的情况下,切换到图形界面下

5.2.3   chkconfig 工具

用在编译安装之后的服务不能使用系统系统工具进行对服务的控制

格式:chkconfig   --list     [服务名称]

chkconfig --add 服务名称

chkconfig --level级别列表服务名on/off

示例:

chkconfig --add httpd               ###将httpd添加到服务列表

chkconfig --level 35 httpd on   ###切换至3.或5 级别时 httpd自动开启

5.3  扩展

设置永久运行级别

ln -sf  /lib/systemd/system/multi-user.target  /etc/systemd/system/default.target

或    systemctl    set -default    multi-user.target

永久修改主机名

hostnamectl    set-hostname    newname

查看主机名的状态

hostnamectl    status

设置系统语言为中文

localectl   set-locale   LANG=zh_ CN. utf8

查看当前系统使用的语言

localectl   【 status 】

六、优化启动过程

6.1   ntsysv工具

提供一个交互式、可视化窗口

可以在字符终端运行

便于集中管理多个服务

用于控制服务是否开机自启动

6.2   systemctl  工具

不提供交互式,可视化窗口

管理单个服务效率更高

6.3   ntsysv系统服务管理工具

ntsysv 

ntsysv   --level    级别列表

示例:

6.4  查看系统服务的启动状态

systemctl      is-enabled    服务名称

6.5   设置系统服务的启动状态

systemctl   enable/disable     服务名称

示例:

6.6    扩展

查看当前系统中所有已激活的系统类型

 systemctl    list-units    --type=service

查看所有开机自启懂的服务器

systemctl    list-unit-files 

七、总结

1.Linux 操作系统引导过程:开机自检→MBR引导→GRUB菜单→加载内核→init进程初始化

2.Linux 系统服务控制:修复MBR扇区,修复GRUB引导故障和修复遗忘ROOT密码

3.运行级别的切换:init    和   systemctl  set-default  服务级别

4.优化开机自动加载服务:ntsysv  工具  和 systemctl  工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值