Linux基础之Linux操作系统的引导过程-Centos7
- A.开机质检
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测。
- B.MBR引导
当从本机硬盘中启动系统时,首先根据硬盘的第一个扇区中MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导的文件的分区。
- C.GRUB菜单
对于Linux操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示菜单给用户选择,并根据选项加载Linux内核文件,需要注意。CentOs7采用的是GRUB2启动引导器。
- D.加载Linux内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件和操作系统之间,负责资源的分配与调度。内核接过系统控制权以后,将完全掌握整个Linux操作系统的运行过程。在CentOS系统中,默认内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
- E.init 进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
系统初始化进程及文件
- A.init进程
Linux操作系统中的进程使用数字进行标记,每个进程的身份标记号称为PID。在引导系统的过程中“sbin/init”是内核第一个加载的程序,因此init进程对应的PID号总是1。
init下的进程称为它的子进程,而init称为它们的父进程这些子进程还会不断地生成新的进程,依次不断繁衍下去,最终构成一颗枝叶繁茂的进程树,为用户提供服务。
init进程为这棵树的树根,所以init进程不允许轻易终止。需要切换不同的运行状态时可以向init进程发送正确的执行参数,由init自身来完成相关操作。
- B.systemd概述
systemd是Linux操作系统的一种init软件,CentOs7系统中采用全新的systemd启动方式,取代了传统的sysvinit。systemd启动方式使系统初始化时诸多服务并行启动,提高了开机效率。
CentOS 7系统中“/sbin/init”是“/lib/systemd/systemd”的链接文件。换言之CentOS 7系统中运行的第一个init进程是“/lib/systemd/systemd”。systemd守护进程负责Linux的系统和服务,systyemctl用于控制systemd管理的系统和服务状态。
- systemd将其管理的资源组织成各种类型的单元(Unit)
systemd的单元类型:
service unit:文件扩展名为.service,用于定义系统服务
target unit:文件扩展名为.target,用于模拟实现“运行级别”
device unit:文件扩展名为.device,用于定义内核识别的设备
mount unit:文件扩展名为.mount,定义文件系统的挂载点
socket unit:扩展名为.socket,用于表示进程间通信用到的socket文件
snapshot unit:文件扩展名为.snapshot,用于管理系统快照
swap unit:文件扩展名为.swap,用于表示swap设备
automount unit:扩展名为.automount,文件系统自动挂载点设备
path unit:文件扩展名为.path,用于定义文件系统中的文件或者目录
CentOS运行级别:
runlevel查看运行级别
0关机,1单用户模式无需输入密码,2、3、4多用户文字模式,5完整的图形模式,6重启。
切换运行级别:
-
方法1:使用 init 加数字
-
方法2:使用 systemctl isolate 和init7个级别对应的英文单词
0=target 1=rescue.target 2/3/4=multi-user.target 5=graphical.target 6=reboot.target
修改默认级别:systemctl get-default 返回默认级别
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
服务控制及优化启动过程
- 服务的控制:
手工操作服务:
systemctl 指令 服务名称
指令: status查看状态
stop停止服务
start启动服务
restart重启服务(慎用)
reload(修改了服务的配置文件后,可以用reload重读配置文件即可,无需重启)
- 优化启动过程
Linux操作系统中包含了大量的服务程序,这些服务程序根据切换运行级别启动或停止。其中有不少系统服务程序可能不是用户需要的,但默认也运行了。那么如何控制开机自动运行的服务,以减少系统资源的占用,提高系统运行效率呢?
- 调整自启动模式:
ntsysv命令:图形界面配置所有服务(需要跟随启动级别)
ntsysv --level 35
在命令行输入ntsysv进入图形化界面,前面带有*为自动启动,可以↑↓移动位置按Space(空格)就改为了关闭了自动启动。按F1可以查看选中服务的说明信息。按TAB键移动到确定退出
systemctl命令:非图形界面
systemctl 指令 服务名称
指令:enable启用,disable禁用,is-enabled 查询是否自动启动
例如 systemctl is-enabled atd.service(所有服务信息 /lib/systemd/system目录扩展名service)
systemctl enable atd.service 设为自动启动
systemctl disable atd.service 禁用自动启动