LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

Linux内核载入到内存的分为步骤是怎样的??

2022年12月21日 507点热度

Linux系统从开机开始到用户登录界面,需要启动一系列的进程,分为几个步骤。具体启动的过程如下

1. 载入内核

即把Linux内核载入到内存,Linux内核保存在/boot目录,/boot目录的内容大致如下

把某个程序设置开机启动_linux程序开机启动_怎么将程序设置为开机启动

2. 启动init进程

运行/sbin/init程序,这个是Linux第一个进程,这个进程读取相应的配置文件并启动一系列进程,这个进程的PID为1,所有的进程都由它衍生,都是它的子进程。

这个进程读取/etc/inittab文件,根据文件中设置的启动层级和执行项来启动对应的程序。

文件头内容大致如下

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:
...

表示0-6的文件中说明了不同的启动层级,以及设定的启动层级。0为关机,1为单用户模式(维护模式),较为常用的是3和5,3为普通用户登陆的字符终端模式,5为带图形界面的用户终端模式。

上述示例,其中设定的行

id:5:initdefault:

表示启动的层级为5,即图形界面终端模式。

3. 执行系统初始化脚本(/etc/rc.d/rc.sysinit)

之后/etc/inittab第一个执行项,通常为

si::sysinit:/etc/rc.d/rc.sysinit

表示启动脚本/etc/rc.d/rc.sysinit,这个脚本对系统进行一系列的初始化,包括时钟、键盘、磁盘、文件系统等初始化。

其中/etc/inittab每一行代表一个执行项,格式如下

id:runlevels:action:process

id:表示该执行项的id,为符合命名规则的标识符

runlevels: 符合执行条件的运行层级,为0-6数字的组合

action: 启动进程的方式,有initdefault, wait, respawn等选项

process: 表示需要执行的进程

4. 执行启动层级对应脚本(rc*.d)

之后启动不同层级的初始化进程,/etc/inittab执行项通常如下

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

这个执行项执行不同启动层级对应的程序,启动程序放在/etc/rcN.d目录下,N为0-6,比如层级3对应/etc/rc3.d目录。init进程依次执行对应目录下的脚本文件。

rcN.d目录下的文件通常是链接文件,指向/etc/init.d目录下的文件,实际执行的是/etc/init.d目录下的文件。如下为/etc/rc3.d目录下的文件list示例

把某个程序设置开机启动_怎么将程序设置为开机启动_linux程序开机启动

/etc/init.d的.d表示目录的意思linux程序开机启动,与启动程序/etc/init区分开,表示都是启动程序或目录。/etc/rcN.d的.d也表示目录的意思,rc大致为run-level command的意思,表示不同启动层级的程序。可以在init.d目录下查看,这里的程序其实都是脚本程序。这些脚本程序基本上都是服务程序,能接受start、stop、restart、status等参数。

4. 启动终端

rc执行完毕之后,系统环境已经设置完成,各种服务进程也已经启动。init开始启动终端程序。inittab文件中执行项通常如下

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

这里表示2345层级的启动以respawn方式启动6个mingetty终端进程。

终端响应键盘鼠标显示器等设备实现与用户进行交互。终端程序会启动登录界面,提示输入用户名和口令。运行级别5的系统模式会启动图形界面的终端程序。

6个终端进程之间可以通过键盘CTRL+ALT+F1~F6进行切换。

终端启动之后,用户就可以通过键盘、鼠标或者网络连接等登录系统进行操作了。

5. 总结

整体的启动过程总结大体如下图。

linux程序开机启动_怎么将程序设置为开机启动_把某个程序设置开机启动

总体上的流程就是

1 载入内核之后启动第一个进程/sbin/init进行初始化

2 /sbin/init调用/etc/inittab文件,根据文件配置进行系统初始化

3 /etc/inittab文件完成

a) 设定运行层级

b) 运行初始化脚本/etc/rc.d/rc.sysinit

c) 执行运行层级对应目录/etc/rcN.d下的脚本

d) 启动终端进程

不同版本的Linux配置方式,文件目录等可能略有不同,大体上启动流程则如上所述。

基于systemd的启动机制

随着Linux系统版本的更新与迭代,不同版本的Linux系统启动机制开始有所不同,一些新版本的Linux系统(如CentOS 7,Debian,Ubuntu等)开始采用systemd为基础的启动机制。

这种启动机制是一个守护进程的概念,启动一系列服务,以/lib/systemd/sytemd为第一个启动进程,以/lib/systemd/system等目录为配置目录。参考如下

比较主要的点是

1 系统第一个启动的进程为/lib/systemd/systemd(替代init进程)

systemd是一个系统守护进程,为Linux内核载入后的第一个进程,替代原来的init进程。以Ubuntu 18.04为例,可以查看/sbin/init文件,发现它是一个指向/lib/systemd/systemd的链接

2 启动进程通过配置目录进行配置(替代/etc/inittab配置方式)

配置目录为

/etc/systemd/system

/run/systemd/system

/lib/systemd/system

优先级从高到低,systemd进程依次从这些目录读取配置文件,启动配置文件设定的相应进程。参考。

目录中包含了几种类型的文件LINUX 删除目录,其中主要的为

1) service文件,描述需要启动的服务进程,可以进行启动、停止、查看状态等操作

2) target文件,运行目标,相当于程序组,用以设定需要启动的系列进程,可以设定不同的启动进程组,对应原来的run level。

常用的target有basic.target、multi-user.target、graphical.target、default.target等。里面也有runlevel*.target文件linux qq,分别对应原来的0-6的运行层级。通过ls -l可以看到它们是指向不同target的软链接。

把某个程序设置开机启动_怎么将程序设置为开机启动_linux程序开机启动

default.target是systemd启动之后默认运行的目标,相当于原来启动方式中默认的启动层级。

在Ubuntu系统中通过ls -l查看,实际上它是指向graphical.target的链接。表示它指代的默认启动层级为图像界面方式。

其它文件如device、mount、socket、path等类型,这里不再赘述。

如果需要添加自己定义的服务程序,可以在配置目录(通常/etc/systemd/system)添加服务描述service文件,在文件中描述需要启动的服务程序linux程序开机启动,并设置启动。

总体上,新的机制用systemd管理启动服务,systemd通过target文件来确定需要启动的服务,需要启动的服务由service文件来进行描述。

参考链接:

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: etc linux系统 systemd target 文件目录
最后更新:2022年12月21日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
查看系统版本 linux “”的有关知识,不少人都会遇到这样的困境 Linux在内核中是如何记录进程资源的?你能从C语言源代码层面分析下吗? 【】原操作系统配备内核源代码,更不能进行内核模块实验 【Linux基础知识】与文件权限管理的Linux关系 linux/管理员管理员发布于5年前34(图) Linux和Unix操作系统之间有区别但也有联系?(一) Ubuntu系统如何升级和更新Linux内核版本?将推荐 Linux内核技术组成、组织和重要的数据结构等(组图) 【报错日志】一下升级linux内核的启动顺序为0 Linux终端窗口中输入mysql-V以显示MySQL版本信息sky 计算机操作系统全新版装系统盘点、理念与系统的优缺点 linux中常用的用户管理命令:1groups?列出当前用户所属 Linux下如何设置开机启动启动脚本?学算法 Linux中已经安装好了mysql命令 Linux系统用户系统上的三种类型的帐户的介绍 Linux下的开机启动设置方法是什么?脚本或服务 谷歌更新Linux内核构建的公共内核库:添加对kokoro作业的支持 linux下mysql中可以使用REVOKE语句来删除某个用户的权限 内核的角度来看,调用hotplug和通常的hotplug环境 Linux系统在开机的时候自动加载某些脚本或系统服务
Linux5.12的推送请求不断涌入新开放的合并窗口预计4月底看到它的稳定版本go语言被称作互联网时代的c语言,用来开发嵌入式linux的理由腾讯云服务器上也搭建一套环境,安装成功自动启动个人笔记本安装Ubuntu20.04LTS下载地址启动第一步--加载BIOS当你打开计算机电源(组图)虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载指令中各个make-C~/linuxM=`pwd编译Linux启动过程中的几个部分内核的引导(图)如何在Linux上安装虚拟机的结果大多都是怎么安装的一个免费软件时间跟进的小白鼠是什么鬼?专题计算机是如何启动的?、内核操作系统的启动流程学习Linux最简单、最实用的环境就是虚拟机环境(上)基于命令修改文件的权限命令-ld1.Linux磁盘分区和目录Linux发行版本之间的差别很少?国内性价比很高的Linux虚拟主机系统安装的流程是什么?Linux下修改文件权限的权限与所有权的实现就显得很有必要linux到底难不难学呢?推荐可以查看Linux命令大全Linux中修改文件权限的命令、创建者所在组、所有人Linux的内核放在了哪里?/boot的启动目录一览阿里云>社区>主题地图S>查看存储推荐
【Linux基础知识】与文件权限管理的Linux关系 Linux线程的操作、多线程的同步和互斥的基本单位 告诉我们哪个Linux发行版对游戏支持的**.. Linux下修改文件权限的权限与所有权的实现就显得很有必要 Linux平台下的嵌入式软件要具备说明技能吗? 阿里云>社区>主题地图S>查看存储推荐 驱动开发:通过ReadFile与内核层通信详细介绍如何使用应用层 linux 用户空间内存申请 kmallockzallocmalloc和get_free_malloc_start这段地址 Linux系统用户系统上的三种类型的帐户的介绍 Windows环境中远程连接Linux服务器_轻量 统信UOS为啥火?国产操作系统又该如何发展?(组图) samba主机名称解析服务//samba/smb.conf 腾讯云服务器上也搭建一套环境,安装成功自动启动 虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载 U盘安装linux系统解决方法:确保Linux下采用dd命令 知识点KaliLinux安装-linux系统基本用法-重新设置root 如何查看Linux操作系统版本_谦杯的博客_51CTO博客 Ubuntu上使用的默认浏览器为Firefox,该怎么安装? LINUX设备驱动程序(第3版)-设备 Linux计算机上使用ip命令来找到目标IP地址的方法
标签聚合
虚拟机 电脑 linux服务器 sudo shell 命令模式 软件 unix 文件目录 linux系统
书籍
课程
技术群
技术干货大合集↓
  • 2023年2月 / 26篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.