Linux系统启动过程

2021年5月27日16:45:58 发表评论
摘要

【心语】人生当中成功只是一时的,失败却是主旋律,但是如何面对失败却把人分成不同的样子,有的人会被失败击垮,有的人能够不断的爬起来继续向前,我想真正的成熟应该并不是追求完美,而是直面自己的缺憾,这才是生活的本质

  • 一、Linux启动时我们会看到许多启动信息,Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:centos7 有变化过程有变化
    。内核的引导
    。运行init
    。系统初始化
    。建立终端
    。用户登录系统
    /sbin/init 在各个版本是不同的:
    。Centos 5 sysV init
    。Centos 6 Upstart
    。Centos 7 Systemd
  • 什么是Systtemd:
    。系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。
  • Systemd新特性
    。系统引导实现服务并行启动
    。按需要启动守护进程
    。自动化的服务依赖关系管理
    。同时采用socker式与D-Bus总线式激活服务
    。系统状态快照
  • 核心概念
    unit表示不同类型的systemd对象,通过配置文件进行标识和配置,文件中主要包含了
    系统服务、监听socker、保存的系统快照以及其它与init相关的信息

Init程序类型

。Sysv:init,Centos 5 之前,配置文件:/etc/inittab。

。Upstart:init,Centos 6,配置文件/etc/inittab, /etc/init/*.conf

。Systemd: systemd,Centos 7

。配置文件:

/usr/lib/systemd/system

每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/

/run/systemd/system

系统执行过程中所产生的服务脚本,比上面目录优选运行

/etc/systemd/system

管理员建立的执行脚本,类似于/etc/rcN.d/sxxde 功能,比上面目录优选运行

常见的unit类型概述

[root@localhost system]# systemctl -t help #查看系统的unit类型
service unit:

。文件扩展名为”.service”,用于定义系统服务

Target unit:

。文件扩展名为”.target”,用于模拟实现运行级别

Device unit:

。文件扩展名为:”.device”,用户定义内核识别的设备

Mount unit:

。文件扩展名为”.mount”,定义文件系统挂在点

Socket unit:

。文件扩展名”.socker”,用于标识进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现按需启动。因为socket与服务程序是分离的

Sanpshot unit:

。文件扩展名为”.snapshot”,管理系统快照,保存各个unit的当前状态信息于持久存储设备中

Swap unit:

。文件扩展名为”.swap”,用于标识swap设备

Automount unit:

。文件扩展名为”.automount”文件系统的自动挂载点

Path unit:

。文件扩展为”.path”,用于定义文件系统中的一个文件或目录使用,常用于文件系统变化时,延迟激活服务。如spool目录
存放unit类型的服务

二、内核引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动,操作系统接管硬件以后,首先读入/boot目录下的内核文件。
Linux系统启动过程
三、运行init
init进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动,init程序首先是需要读取配置文件/etc/initiab
Linux系统启动过程
四、运行级别
许多程序需开机启动,它们在windows叫做’服务’(service),在Linux就叫做‘守护进程’(daemon)。Init进程的一大任务,就是去运行这些开机启动的程序,但是,在不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做“”运行级别“”(runlevel)。也就是说,启动时根据“”运行级别“”,确定要运行那些程序。

Linux系统启动过程
Linux系统有7个运行级别(runlevel):

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
  • 查看本机系统运行基本命令
    [root@localhost ~]# runlevel
    Linux系统启动过程

五、系统初始化
在init的配置文件中有这么一行:si::sysinit:/etc/rc.d/rc.sysinit,它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成了一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有,激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务
Linux系统启动过程
六、建立终端

rc执行完毕后,返回init.这时基本系统环境已设置好了,各种守护进程也已经启动了,init接下来会打开6个终端,以便用户登录系统
七、用户登录系统
1、命令行登录
2、SSH登录
3、图形界面登录
Linux系统启动过程

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。 而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。 Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。 然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。 这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。 /etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。 <p在分析完用户名后,login将搜索 etc="" passwd以及="" shadow来验证密码以及设置账户的其它信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为="" bin="" bash。<="" p="">

  • 微信公众号
  • 这是我的微信公众号扫一扫
  • weinxin
  • 我的QQ技术群
  • 我的QQ技术群扫一扫
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: