博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux启动过程总结
阅读量:6835 次
发布时间:2019-06-26

本文共 1179 字,大约阅读时间需要 3 分钟。

当我们按开机键后,主机就会执行:

1、POST(Power-On Self Test 加电自检)。

2、读取BIOS中定义的开机设备启动程序,并加载MBR(主引导记录(Master Boot Record))中的bootloader(一般包括:Grub、Lilo和spfdisk等,常用grub)

3、bootloader会执行一段程序,将内核加载进内存,并解压缩。

4、内核检测硬件、加载驱动程序、挂载根文件系统,启动第一个进程/sbin/init。

5、init读取它的配置文件/etc/inittab,获取运行级别

       /etc/inittab内容包括:1>预设运行级别,2>指定初始化运行环境要执行的脚本,3>7个不同级别,需要启动的服务脚本放置路径,4>设置[ctrl]+[alt]+[del]组合键功能,5>设置断电,恢复时的应急处理等。

6、init会执行/etc/rc.d/rc.sysinit来初始化软件所运行的系统环境。

       /etc/rc.d/rc.sysinit主要功能:

       <1>以读写方式重新挂载根文件系统;

       <2>获取网络环境,主机类型

       <3>启动selinux

       <4>加载核心相关设定,读取/etc/sysctl.conf

       <5>启动swap分区

       <6>设置系统时间,时区

       <7>初始化lvm、raid文件系统

       <8>清除开机过程中的临时文件等等

7、执行指定级别的服务脚本,在/etc/rc.d/rc*d rc0.d~rc6.d

       以K**开头的要执行stop,**数字表示关闭时的次序

       以S**开头的要执行start,**数字表示开启时的次序(一般**越小开启越早,会被别的服务依赖,所以关闭晚,chkconfig会负责处理这些脚本)

8、执行最后一个脚本/etc/rc.d/rc.local。

9、启动虚拟终端,图形终端(运行级别为5时)

开机过程中根目录是以只读方式挂载的,一般非必要的功能会编译成模块放在/lib/modules/中(包括一些磁盘的驱动:USB,SATA,SCSI等,除了IDE),以应对不同厂商的硬件设备。假如Linux装在SATA上,所以要加载SATA的驱动,然后挂载根文件系统,但是驱动是放在/lib/modules中的,根文件还没有挂载,所以就找不到驱动,找不到驱动就挂载不了,挂载不了就找不见驱动(先有鸡还是先有蛋)。

这时就会出现一个虚拟文系统(过度文件系统)/boot/initrd,bootloader加载内核的同时将它也加载进内存,在内存中解压缩,模拟成一个根文件系统,在内存中执行一段程序判断并加载所用磁盘(USB、SATA、SCSI)的驱动,内核得到驱动后就会挂载正真的文件系统。

转载于:https://www.cnblogs.com/imlifelong/p/10651328.html

你可能感兴趣的文章
SGU 164.Airline(结论题)
查看>>
findlibrary returned null
查看>>
scala学习手记28 - Execute Around模式
查看>>
Filebeat的工作原理
查看>>
Elasticsearch配置文件详解
查看>>
Java虚拟机学习 - 查看JVM参数及值的命令行工具
查看>>
Ubiquitous Religions(friends变形)
查看>>
机器学习——聚类分析和主成分分析
查看>>
Win10上 visual studio设置为本地IIS运行网站时 必须以管理员身份加载项目的解决方法...
查看>>
记录常见的HTTP请求错误
查看>>
Java字符串替换函数replace、replaceFirst、replaceAll
查看>>
Ubuntu下搭建Android开发环境
查看>>
汇编指令
查看>>
yum安装mysql后root用户的临时密码
查看>>
mysql 原理~ 乐观锁和悲观锁
查看>>
策略模式
查看>>
neo4j使用
查看>>
MVC WebAPI 的基本使用
查看>>
Oracle 字符集的查看和修改
查看>>
Selection
查看>>