kernel及系统初始化的过程

1.Kernel初始化的过程:

a、设备探测

b、驱动初始化(可能会从initrd(initramfs)文件中装载驱动模块)

c、以只读挂载根文件系统;

d、装载第一个进程init(PID:1)

e、int进程的配置文件/etc/inittab

f、/etc/inittab文件的格式

id:runlevels:action:process

id: 标识符

runlevels: 在哪个级别运行此行

action: 在什么情况下执行此行

process: 要运行程序

action:

initdefault: 设定默认运行级别

sysinit: 系统初始化

wait: 等待级别切换至此级别时执行

respawn: 一旦程序终止,会重新启动

id:3:initdefault:  设定默认的启动级别

si::sysinit:/etc/rc.d/rc.sysinit 设定系统初始化时执行的脚本

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

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

2./etc/rc.d/rc.sysinit文件完成的任务:

1、激活udev和selinux

2、根据/etc/sysctl.conf文件,来设定内核参数

3、设定时钟时钟

4、装载键盘映射

5、启用交换分区

6、设置主机名

7、根文件系统检测,并以读写方式重新挂载

8、激活RAID和LVM设备

9、启用磁盘配额

10、根据/etc/fstab,检查并挂载其它文件系统

11、清理过期的锁和PID文件

3./etc/rc.d/rc.sysinit脚本会根据运行级别选择执行对应目录下的脚本(服务启动或停止)

l3:3:wait:/etc/rc.d/rc 3

运行级别为3 对应/etc/rc.d/rc3.d/目录下的文件,以K开头的服务被停止,S开头的服务开启(先停止后开启)关闭或启动的优先次序,数值越小越优先被选定

/etc/rc3.d 为链接文件指向/etc/rc.d/rc3.d

/etc/rc3.d/目录下文件为链接文件,源文件存放在/etc/rc.d/init.d/目录下

/etc/init.d指向/etc/rc.d/init.d

4.系统初始化

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

/etc/rc.d/init.d/目录下为所有的服务类脚本

注意:这两行前面一定要有#号

# chkconfig: 2345 9 91
# description: start and stop ISDN services

这两行用于在对应级别目录下创建相应的链接文件

# chkconfig: 2345 9 91

# chkconfig: runlevels SS KK

2345 代表在哪些级别下是启动的,runlevels表示默认创建为S*开头的链接,-表示没有级别默认为S*开头的链接,除此之外的级别默认创建为K*开头的链接

9 SS对应的启动优先级为SS所表示的数字

91 KK对应关闭优先次序为KK所表示的数字

# description: start and stop ISDN services

用于说明此脚本的简单功能; \用于续行

执行chkconfig命令时有这两行的脚本会自动创建相应的链接文件

5./var/lock/目录下

服务脚本启动后会在/var/lock/目录或/var/lock/subsys/目录下创建相应的锁文件

chkconfig --list: 查看所有独立守护服务的启动设定,独立守护进程

chkconfig --list SERVICE_NAME

将指定的脚本转化为服务脚本,并且为其在可运行的相应级别目录下创建链接文件

chkconfig --add SERVICE_NAME

移除相应目录下所有链接文件

chkconfig --del SERVICE_NAME

指定服务脚本在哪些级别下开启或关闭

chkconfig [--level RUNLEVELS] SERVICE_NAME {on|off}

如果省略级别指定,默认为2345级别

6./etc/rc.d/rc.local文件

系统最后启动的一个服务,准确说,应该执行的一个脚本

7./etc/inittab文件

/etc/inittab的任务:

1、设定默认运行级别

2、运行系统初始化脚本

3、运行指定运行级别对应的目录下的脚本

4、设定Ctrl+Alt+Del组合键的操作

5、定义UPS电源在电源故障/恢复时执行的操作

6、启动虚拟终端(2345级别)

7、启动图形终端(5级别)

时间: 2024-08-03 18:45:11

kernel及系统初始化的过程的相关文章

linux kernel 时钟系统的前世今生

趁工作不忙想把最近工作中研究到的kernel的时钟系统 软中断 定时器 tasklet 工作队列实现机制总结下,首先说明,这些原理实现对编写driver不会有多大帮助,但是明白理解这些kernel机制的实现原理,对于我们从系统角度去思考解决问题,会有很大帮助.上篇博文<一个奇葩bug的解决>就印证了这一点,链接如下:http://blog.csdn.net/skyflying2012/article/details/44623515. 那么为什么要把这些内容放在一起总结,因为他们之间是相关联的

详解linux系统的启动过程及系统初始化

一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其 BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab,其进程流 程图如下: 二.剖析详细启动过程 ⑴. POST开机自检:电脑主机打开电源的时候,随后会听到滴的一声,系统启动开始了开机

ucos系统初始化及启动过程

之前在ucos多任务切换中漏掉了一个变量, OSCtxSwCtr标识系统任务切换次数 主要应该还是用在调试功能中 Ucos系统初始化函数为OSInit(),主要完成以下功能 全局变量初始化 就绪任务表初始化 空任务控制块初始化 事件控制块链表初始化 信号量集初始化 存储器管理初始化 Qs队列控制初始化 系统空闲任务初始化 系统统计任务初始化 部分功能需要依靠宏定义打开另外要注意一个变量OSTaskCtr标识系统全部任务数,在初始化完成之后就可以创建任务了,创建任务完成之后启动系统使用OSStar

【linux基础】19、系统初始化流程

一.内核 linux系统的组成:内核(kernel)+根文件系统(rootfs) 1.内核的功能 进程管理:task_struct,scheduler(调度) 内存管理: I/O管理:中断及中断处理 文件系统: 驱动程序 安全相关功能:SElinux,各种加密库 2.内核设计流派 单内核:单一体系 将所有功能都作成一个整体,都作在内核中 linux: 模块化设计:核心 + 外围功能性模块组成 内核支持动态装卸载模块  .ko文件:kernel object 微内核:内核子系统 windows,s

003---Linux系统的启动过程

Linux系统的启动过程 按下电源 开机自检(BIOS):检查cpu.内存.硬盘是否有问题 MBR引导 GRUB菜单 加载内核(kernel) 运行 INIT 进程(linux系统里面的第一个进程) 读取/etc/inittab配置文件(运行级别) 执行初始化脚本/etc/rc.d/rc.sysinit,设置主机名.设置IP地址 根据系统的运行级别,在开机的时候启动不同的软件 启动 mingetty 进程 原文地址:https://www.cnblogs.com/xjmlove/p/103526

Android内核开发:图解Android系统的启动过程

本文是<Android内核开发>系列的第六篇文章,前面的几篇文章介绍了Android内核开发相关的基础知识,包括:Android源码的下载.版本和分支介绍.编译和烧写等等,从本文起就要开始真正地进行Android内核的学习及实战了. 学习任何软硬件系统,研究系统启动过程都是一种非常有效地起步手段,搞Android内核开发也不例外.网上有很多文章对Android启动相关代码进行分析和走读,大家可以先搜索阅读一下,我个人更喜欢更加直观的方式去理解未知的东西,包括图.表.系统输出的log信息等等,因

Saltstack之系统初始化

我使用了我自己制作的saltstack-minion的docker镜像,进行saltstack自动实现系统初始化. PS:处理过程中发现docker的ntpd 是无法更新时间的.需要映射宿主的时间,使用docker -v参数. docker获取方法: docker pull docker.io/516249940/saltsatack-minion 系统初始化过程:每一个sls文件测试一遍 >> 然后写入到初始化目录的sls >> 最后加入到top.sls #vim /etc/sa

Centos6 系统初始化

系统安装完之后,一般不会马上去部署应用.首先需要对系统进行优化,包括:文件句柄优化.服务器时间同步.内核参数的优化.iptables优化等. 需要根据自己的业务,优化相应的参数.如下是之前写的一个初始化脚本. #!/bin/bash #this script is only for CentOS 6 #check the OS #Author: David.zhang yum -y groupinstall "base" yum -y install lsb wget yum -y i

linux系统监控工具汇总及几个小脚本 , 系统初始化脚本

重要性能监测工具:top.vmstat.w.uptime.ps.free.iostat.netstat./proc等 需要监视Linux服务器的性能?大多数Linux发行版都集成了一些监视工具.这些工具可以获取有关系统活动的信息的详细指标.通过这些工具,你可以发现产生系统性能问题可能存在原因.下面讨论的是一些最基本的命令,它涉及到系统分析和调试服务器等一些问题,如:1.    找出系统瓶颈问题.2.    磁盘 (储存) 瓶颈问题.3.    CPU和内存瓶颈问题.4.    网络瓶颈问题.#