Linux引导过程与服务控制

Linux 操作系统的引导过程

        系统引导是操作系统运行的开始,在用户能够正常登录到系统前,Linux操作系统的 引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。

引导过程总览

        Linux 操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUB菜单、加载Linux内核、init进程初始化。

引导过程阶段介绍

开机自检

服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

MBR引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区(零磁道的零扇区)中MBR(Master  Boot  Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如GRUB )。

主要部分包括:BootLoader(主引导程序,占446字节)、DPT(磁盘分区表,占64字节)、结束标识(55aa,占2字节)

GRUB菜单

对于Linux操作系统来说,GRUB(GRand Unified Bootloader, 统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux 内核文件,然后将系统控制权转交给内核。

加载Linux内核

Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux 操作系统的运行过程。

init进程初始化

为了完成进一步的系统引导过程,Linux  内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程(父进程)负责完成一系列的系统初始化过程,最后等待用户进行登录。

现在系统为systemd(守护进程)

系统初始化进程

init进程

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

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

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

Systemd

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

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

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

        systemd  守护进程负责Linux的系统和服务,systemctl用于控制Systemd管理的系统和服务状态。Systemd将其管理的资源组织成各种类型的单元(Unit)。

Systemd的单元类型

单元类型

扩展名

说明

Service

.service

描述一个系统服务

Socket

.socket

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

Device

.device

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

Mount

.mount

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

Automount

automount

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

Swap

.swap

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

Path

.Path

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

Timer

.timer

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

Snapsho

snapshot

用于保存一个systemd的状态

Scope

scope

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

Slice

.slice

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

Target

.target

描述一组systemd的单元

        早期Linux操作系统中的 SysVinit 机制,默认包括七种不同的服务搭配方式,其中每一种搭配方式称为运行级别,类似于Windows系统中的正常启动、安 全模式、不带网络连接 的安全模式等。这些运行级别分别使用数字0,1,…,6来表示。为了向下兼容SysVinit 系统,Systemd 使用了相应的target  (目标)模拟了SysVinit 的运行级别。

运行级别

Systemd的targe

说明

0        poweroff.target         关机状态,使用该级别时将会关闭主机 halt中断系统

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

2         multi-user.target      用户定义/域特定运行级别。默认等同于3

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

4        multi-user.target       用户定义/域特定运行级别。默认等同于3

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

6        reboot.target         重新启动,使用该级别时将会重启主机

        切换运行级别或Systemd的target的方式:

init 0~6 systemctl get-default

修复MBR扇区故障

故障原因

病毒、木马等造成的破坏

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

故障现象

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

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

解决思路

应提前做好备份文件

将磁盘中的MBR引导文件备份到别的独立磁盘中

[root@localhost~]# mkdir /backup 
[root@localhost~]# mount /dev/sdb1 /backup 
[root@localhost~]#dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1 
//将sda的mbr引导文件被分到/bak/sda.mbr.bak中 bs是读取的文件大小默认Byte ,count是读取的文件块数

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

在出现安装向导界面时,选择“Troubleshooting”选项进去,再选择“Rescue a CentOS Linux system”选项,进入救援模式,然后系统会自动查找

硬盘中的Linux 分区并尝试将其挂载到/mnt/sysimage 目录(选择“1”确认并按 Enter 键继续)。

以备份文件中恢复

sh-4.2#mkdir /aaa sh-4.2#mount /dev/sdb1 /aaa //挂载带有备份文件的分区 
sh-4.2#dd if=/tmpdir/sda.mbr.bak of=/dev/sda//恢复备份数据

GRUB引导故障

首先备份/boot/grub2/中的grub.cfg文件

cd /boot/grub2 cp grub.cfg grub.cfg.bak

GRUB是大多数Linux 操作系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统(如果有)。当配置文件/boot/grub2/grub.cfg     丢失,或者关键配置出现错误,或者MBR中的引导程序遭到破坏时,Linux主机启动后可能只出现“grub>”的提示符,无法完成进一步的系统启动过程。

若在该提示符后可以进行编辑,则通过输入对应的引导命令(可参考其他相同版本 CentOS  中/boot/grub2/grub.cfg     文件的引导语句),然后执行“boot”命令即可正常引导 Linux操作系统,具体操作如下:

grub>insmod xfs
grub>llinux16       
/vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/cl-root   
crashkernel=auto rd.lvm.Iv=clroot rd.Ivm.Iv=cl/swap rhgb quiet LANG=en_US.UTF-8
grub>initrd16 /initramfs-3.10.0-514.el7.x86_64.img
grub>boot

正常进入系统后,去修复你的/boot/grub2/中的grub.cfg文件

或者可以使用Ctrl+Alt+Insert重启系统,在进度条页面按下Esc键后选择进入光盘引导界面,然后进入救援模式,切换硬盘为你的根目录

chroot /mnt/sysimage //切换硬盘为你的根目录

然后进入/boot/grub2中找到我们的备份文件,将其恢复

cd /boot/grub2 cp grub.cfg.bak grub.cfg

恢复完成后,输入exit退出救援模式,即可正常进入系统

遗忘root用户密码

        使用Ctrl+Alt+Insert重启系统,在进度条页面按下Esc键后选择进入光盘引导界面,然后进入救援模式,切换硬盘为你的根目录

chroot /mnt/sysimage //切换硬盘为你的根目录

然后修改你的root用户密码

passwd root //修改root用户密码

服务控制及优化启动过程

系统服务控制

在 CentOS 系统中,各种系统服务的控制脚本默认放在/usr/lib/systemd 目录下。通过systemctl   命令工具可以实现对指定系统服务的控制,语法格式如下:

systemctl 控制类型 服务名称

对于大多数系统服务来说,常见的几种控制类型如下所述。

>   start  (启动):运行指定的系统服务程序,实现服务功能。

>   stop   (停止):终止指定的系统服务程序,关闭相应的功能。

>    restart  (重启):先退出,再重新运行指定的系统服务程序。

>    reload   (重载):不退出服务程序,只是刷新配置。在某些服务中与 restart 的操作相同。

>    status (查看状态):查看指定的系统服务的运行状态及相关信息。

切换运行级别

不同的target  代表系统不同的运行状态,所启用的服务或程序也不一样。

1. 查看系统的 target

明确当前系统所在的 target 将有助于管理员排除一些应用故障。若未能确知当前所处 的目标,可以直接执行“runlevel ”命令进行查询,显示结果中的两个字符分别表示切换前的目标、当前的目标。若之前尚未切换过运行级别,则第1列将显示“N”

[root@localhost~]#runlevel
 N 5

若用户想查看系统启动时默认运行的target,   可以执行“systemctl   get-default”命令以显示系统默认的 target, 命令如下:

[root@localhost~]# systemctl get-default

2.切换系统的 target

当用户需要将系统转换为其他的target  时,可以通过传统的 init 程序进行,只要使用与 运行级别相对应的数字(0~6)作为命令参数即可,或者使用systemctl命令进行目标切换。

runlevel 3 
systemctl isolate multi-user.target

优化开机自动加载的服务

Linux操作系统在每次开机后会进入默认的systemd 运行目标(如字符模式或图形模式), 并运行该目标中默认设为启动的各种系统服务。若要禁止某些系统服务自动运行,可以使用ntsysv 或者 systemctl 工具进行优化。

(1)使用 ntsysv 工具

ntsysv 工具可以在字符模式中运行,为用户提供一个仿图形的交互式操作界面,专门用于集中配置各种系统服务的启动状态。当需要同时设置多个服务的启动状态时,使用 ntsysv 工具会非常方便。

单独执行“ntsysv”命令时仅用于管理当前运行目标中的服务;通过“-level”选项可以对指 定运行目标(级别)中的服务进行管理。

( 2 ) 使 用 systemctl    工 具

systemctl 工具与 ntsysv 的功能类似,但是 systemctl 不提供交互式的操作界面,它用 于查询或设置系统服务的默认启动状态。当需要设置某一个服务在当前运行目标中的默认启 动状态时,使用systemctl工具会更有效率。使用systemctl工具控制服务开机启停的命令格式如下:

systemctl 控制选项 服务名称

常用的选项有三种:

>  enable:    开机自动启动。

>   disable:   开机自动关闭。

>  is-enable:  查看开机启动状态。

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值