加载内核并执行init程序

简介:

核心的加载
由boot loader管理而开始读取核心档案后,linux将核心解压到主存储器中,并利用核心的功能,开始与驱动各个周边装置,包括储存装置、CPU、网络卡、声卡等。

虚拟文件系统(Initial RAM Disk )一般使用档名为/boot/initrd  它可以通过boot loader来加载到内存中,然后此档案会被解压缩并在内存中仿真成一个根目录,且此仿真在内存中的文件系统能提供一个可执行程序,通过此程序来加载开机过程中所最需要的核心模块,通常为USB、RAID、LVE、SCSI等文件系统与磁盘接口的驱动程序。载入完成后,重新呼叫/sbin/init来开始后续的正常开机流程。
根目录在特殊的磁盘接口 (USB, SATA, SCSI) , 或者为 LVM, RAID 等等,会需要 initrd。
如为IDE接口,并使用默认的ext2/ext3文件系统,不需要initrd也可以正常开机。

核心加载完成后,主机开始正确动作。
开始执行系统的第一支程序 /sbin/init
此程序主要功能是准备软件执行的环境,包括系统的主机名,网络设定,语系处理,文件系统格式及其它服务的启动等。


所有的动作都会透过init的配置文件/etc/inittab来规划,inittab里设置有围住的runlevel.
rnulevel 介绍
0-halt
1-single user mode            单人维护模式,用在系统故障时维护。
2-Multi-user,without NFS      类似runlevel3,但无NFS服务
3-Full molti-user mode        完整含有网络功能的纯文本模式
4-unused                      系统保留功能
5-X11                         与runlevel3类似,但加载X WINDOW
6-reboot                      重新启动

init 的处理流程
1.先取得runlevel
2.使用/etc/rc.d/rc.sysinit进行系统初始化
3.由于runlevel 是5,因此只进行 l5:5:wait:/etc/rc.d/rc 5 
4.设定好 ctrl + alt + del组合键功能
5.设定不断电系统的pf.pr两种机制
6.启动mingetty的六个终端机 (tty1~tty6)
7.启动图形窗口

init 处理系统初始化流程 (/etc/rc.d/rc.sysinit)
在/etc/inittab中, si::sysinit:/etc/rc.d/rc.sysinit    表示开始加载各项系统服务前需先配置好整个系统环境。这里就是自用/etc/rc.d/rc.sysinit 这个shell script来进行设定。
rc.sysinit中的很多预设配置文件都在 /etc/sysconfig/ 中.
 

rc.sysinit主要工作:
1.取得网络环境与主机类型
读取网络配置文件/etc/sysconfig/network ,获得主机名,网关等网络设置
2.测试与挂载内存装置/proc 及USB装置/sys  
3.决定是否启动SELinux 
4.启动系统的随机数生成器(密码加密演算)
5.设定console字形
6.设定显示于开机过程中的欢迎画画 (test banner)
7.设定系统时间 与时区 /etc/sysconfig/clock
8.接口设备的侦测与PNP参数测试
9.用户自定义模块的加载   /etc/sysconfig/modules/*.modules
10.加载核心的相关设置 /etc/sysctl.conf
11.设定主机名与初始化电源管理模块ACPI
12.初始化软件磁盘阵列 /etc/mdadm.conf
13.初始化LBM文件系统功能 
14.以fsck检验磁盘文件系统,  进行filesystem check
15.进行磁盘配额quota的转换
16.重新以可读写模式挂载系统磁盘
17.启动quota功能,
18.启动系统虚拟随机数生成器pseudo-random
19.清除开机过程中的临时文件
20.将开机相关信息加载到/var/log/dmesg

用户自定义开机启动程序 /etc/rc.d/rc.local
是在其它的init scripts执行完后才执行,类似WINDOWS 的启动

 .本文转自  还不算晕  51CTO博客,原文链接:http://blog.51cto.com/haibusuanyun/751250

相关文章
|
前端开发 数据安全/隐私保护
若依框架---权限控制角色设计
若依框架---权限控制角色设计
3485 0
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
消息中间件 运维 Kubernetes
带你读《云原生架构白皮书2022新版》——云原生中间件
带你读《云原生架构白皮书2022新版》——云原生中间件
1081 96
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
2051 15
|
算法 C++
空间直线与球面相交算法
空间直线与球面相交算法
193 0
|
存储 关系型数据库 MySQL
mysql的InnoDB引擎实现ACID特性的原理
mysql的InnoDB引擎实现ACID特性的原理
|
缓存 负载均衡 关系型数据库
Pgpool-II实现高可用+读写分离+负载均衡(三)---- 日常使用篇
Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。本系列的前两篇讲解了Pgpool-II的安装及配置,本篇介绍日常使用。
|
机器学习/深度学习 计算机视觉 异构计算
CNN结构演变总结(三)设计原则
前两篇对一些经典模型和轻量化模型关于结构设计方面的一些创新进行了总结,在本文将对前面的一些结构设计的原则,作用进行总结。 本文将介绍两种提升模型的表示能力的结构或方式,模型的五条设计原则,轻量化模型的四个设计方式。
CNN结构演变总结(三)设计原则
|
开发框架 前端开发 测试技术
17-Bootstrap 全局 css 样式-图片,响应式工具|学习笔记
快速学习17-Bootstrap 全局 css 样式-图片,响应式工具
237 0
|
Prometheus 监控 Cloud Native
阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态
应用实时监控服务 (ARMS) 是一款APM类的监控产品。 用户可基于 ARMS 的前端、应用、自定义监控,快速构建实时的应用性能和业务监控能力。ARMS 让所有性能问题“一屏了然”,不遗余力提升每一秒用户体验,驱动业务快速发展。
16229 0