1.引导过程Troubleshoting与服务控制

本文详细介绍了Linux的引导过程,包括开机自检、MBR引导、GRUB菜单、加载内核和init进程初始化。此外,还探讨了systemd系统初始化进程、运行级别(target)及其切换、服务控制和优化启动过程,包括如何使用systemctl管理服务,以及如何优化开机自动加载的服务。内容适用于Linux系统管理员和运维人员,旨在提升系统启动效率和管理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux引导过程梳理

linux运行服务

各种系统服务的控制脚本默认放在/usr/lib/systemd目录下
1)、Linux的文件系统:
ext4:第四代扩展文件系统,存放文件和目录的分区,centos6默认的文件系统
xfs:日志文件系统,centos7默认的文件系统
swap:交换文件系统,虚拟内存,一般为内存的1.5-2倍
2、引导过程:
1)、开机自检:根据bios设置检测硬件
2)、mbr引导:根据位于0面0磁道第一扇区的mbr引导记录调用grub菜单
3)、grub菜单:根据grub菜单加载内核文件
4)、加载linux内核:加载位于/boot目录的内核文件
5)、init初始化:加载init初始化程序,因此init进程是系统启动的第一个进程
查看启动时默认级别:systemctl get-default
执行runlevel命令:查看系统的运行级别,第一个为上一次级别,第二个为当前级别,N代表没有切换过级别,S代表单用户模式(1级别)
1.开机自检
服务器主机开机后,将根据主板BIOS中的设置对CPU(Central ProcessingUhit.中央处理器),内存显卡,键盘等设备进行初始化测试,检测成功后根据预设的启动顺序移交系统控制权,检测失败通常会通过显示器屏幕或蜂鸣器报警。大多数会移交本地硬盘。
BIOS(Basic Input Output System)基本输入输出系统主要功能:

  • 加电自检
  • 硬件初始化
  • 引导操作系统(BOOT)

BIOS存储硬件的配置信息,CPU虚拟化开关,系统的引导顺序,主机硬件时间(BIOS独立的电池、电池没电的效果、主机的时间不准、不会影响系统的引导,但是硬件的部分配置信息会丢失、BIOS会恢复出场设置)
BIOS电池放电也是为恢复出厂设置
2.MBR引导
当从本地硬盘中启动系统时,首先根据硬盘第0个磁道、第0个柱面的第1个扇区MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包括操作系统引导文件的分区(/boot);或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)。
3.GRUB菜单
对于linux操作系统来说,GRUB(Grand Unified Bootloader,统一启动加载)是使用最为广泛的多系统引导程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载linux内核文件,然后将系统控制权交给内核。需要注意的是,Centos7采用的是GRUB2启动引导器。
GRUB菜单保存:
内核的位置,内核的名字,以及内核要传递的参数等。
4.加载Linux内核
linux内核是一个预先编译号的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过操作系统控制权以后,将完全掌控整个Linux操作系统的运行过程。在Centos系统中,默认的内核文件位于“/boot/vmliunz-3.10.0-514.el7.x86_64”。
5.init进程初始化
为了完成进一步的系统引导过程,linux内核首先将系统中/sbin/init程序加载到内存中运行(运行中的程序称之为进程),init进程负责完成系列的系统初始化过程、最后的等待用户进行登录。
概括:开机自检,触发bios,bios保存硬件的信息,加电自检,硬件初始化,引导操作系统,先去本地硬盘找mbr引导:在硬盘的第0个磁道第0个柱面的第1个扇区,它先去找512字节的前446字节的引导程序,再去找64字节的分区表,来识别分区,来识别哪个分区包含了引导文件。找到之后,交给grub菜单,然后启动菜单中内核的信息及内核的相关参数等。(grub菜单主要是让用户选择启用相应内核的。)加载内核个程序,当内核启动之后,启动系统的第一个进程init。init进程负责完成系统的初始化配置。

系统初始化进程及文件

init进程
linux操作系统中的进程使用数据进行标记,每个进程的身份标记号成为PID。在引导linux操作系统的过程中,/sbin/init是内核第一个加载的程序,因此init进程对应的PID号总是为1

systemd概述

systemd是linux操作系统的一种init软件,centos7系统中采用了全新的system启动方式,取代了传统的sysvinit。systemd启动方式使系统初始化时诸多服务并行启动,大大增高了开机的效率。centos7系统中“/sbin/init”是“/lib/systemd/systemd”的连接文件,换而言之,centos7系统中运行的第一个init进程是“/lib/systemd/systemd”。systemd守护进程负责linux的系统和服务
systemctl用于控制systemd管理的系统和服务状态
systemctl restart sshd.service
systemd将其管理的资源组织成各种类型的单元(unit)

在这里插入图片描述
在这里插入图片描述

系统运行级别(target):

     **共有7个级别:**

0(target)关机
1(rescue.target)单用户
2(multi-user.target)无网络多用户
3(multi-user.target)完全多用户
4未使用(默认等于3)
5(graphical.target)图形界面
6(reboot.target)重启
在这里插入图片描述

服务控制及优化启动过程

在linux操作系统完成引导以后,如何控制系统服务的运行状态?如何在不同的运行级别之间进行切换?如何优化启动过程,减少系统占用的资源?
1.独立管理(门市房)
systemctl start dhcpd
systemctl stop dhcpd
2.集中管理(商场)xinetd
vim /etc/xinetd.d/tftp
disable = no
systemctl start tftp

系统服务控制

在centos7系统中,各种系统服务的控制脚本默认放在/usr/lib/systemd/system/目录下,通过systemctl命令工具可以实现对指定系统的控制,语法格式如下:
systemctl 控制类型 服务名称[.service]
对于大多数系统服务来说:常见的几种控制类型如下所述。


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

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

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

reload(重载):不退出服务程序,只是刷新配置,在某些服务中与restart的操作相同。
	
status(查看状态):查看指定的系统服务的运行状态及相关信息。

对于实际生产环境中运行的服务器,不要轻易执行stop或restart操作,以免造成客户端访问中断,带来不必要的损失。若只是要为系统服务启动新的配置,可以采取相应的reload参数重载加载配置,而不是生硬的执行restart操作。例如:对于正在为用户提供web访问的httpd服务,当需要应用新的配置时,建议执行“systemctl reload httpd.service”命令来重新载入配置。

切换运行级别

在讲解systemd相关知识的时候,已经介绍过target的含义及类型。不同的target代表不同的运行状态,所启用的服务或程序也不一样例如,对于互联网中的网站,电子邮件等服务来说只需要运行在文本模式就可以了,无需启用桌面程序。

查看系统的target

明确当前系统所在target将有助于运维人员排除一些应用故障。若未能确知当前所处的目标,可以直接执行runlevel命令进行查询,显示结果中的俩个字符分别表示切换前的目标、当前的目标。若之前尚未切换过运行级别,则第1列将显示N(None),S(Single)1界别(单用户模式)
[root@localhost ~]# runlevel
N 5

若查看系统启动时默认运行的target

[root@localhost ~]# systemctl get-default
graphical.target //图形多用户模式

优化启动过程

常见的系统服务
在centos系统中,默认安装的系统服务多大100多种,这些系统服务为用户提供了丰富的应用服务。只有了解各个系统服务的用户,才能有选择地进行优化操作,实现按需启用linux符。以下表中列出了centos中常见的一些系统服务,包括服务的作用。建议启动的章台,以供优化系统服务时参考
在这里插入图片描述
在这里插入图片描述
必须强调的是,这些服务到底是选择开启还是关闭,应根据主机的实际功能需求来定,不要生搬硬套。例如,如果当前的linux主机用来向局域网提供文件共享服务,那么smb服务应开启,而不能关闭

优化开机自动加载的服务

linux操作系统在每次开机后会进入默认的systemd运行目标(如字符模式或图形模式,并运行该目标中默认设置启动的各种系统服务。若要禁止某些系统服务自动运行,可以使用ntsysv或者systemctl工具进行优化
1.使用ntsysv工具
ntsysv工具可以在字符模式中运行,为用户提供了一个仿图形的交互式操作姐买你,专门用于集中配置各种系统服务的启动状态。当需要同时设置多个服务的启动状态时,使用ntsysv工具会非常方便。
单独执行“ntsyv“命令时仅用于管理当前运行目标中的服务,通过”–level”选项可以对指定运行目标(级别)中的服务进行管理。例如,执行“ntsysv --level 35“命令可以打开ntsysv管理程序,同时对运行目标3、5中的各种系统服务的默认启动状态进行调整。
在这里插入图片描述
通过方向键来选择不同的系统服务,通过空格(space)设置服务的默认启动状态
[*] 表示启用
[ ] 表示禁用
使用systemctl工具(centos6系列中chkconfig)
systemctl工具与ntsysv的功能类似,但是systemctl不提供交互式的操作界面,它用于查看或设置系统服务的默认启动状态。当需要设置某一个服务在当前运行目标中的默认启动状态时,使用systemctl工具会更有效率。使用systemctl工具控制服务开机启停的命令格式如下:
systemctl控制选项 服务名称
常用的选项有三种:
*

enable:开机自动启用

disable:开机自动关闭
	
is-enabled:查看开机启动状态

查看当前系统中所有已激活(自启动)的系统服务
[root@localhost ~]# systemctl list-units --type=service

chkconfig工具使用方法:
chkconfig --list #列出所有服务的状态
chkconfig --list network #列出某个服务的状态
chkconfig [–level 35] 服务名称 {on|off} #设置服务状态,默认2345级别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值