Linux 启动过程剖析
参考http://blog.chinaunix.net/uid-26495963-id-3066282.html
1,加载BIOS
BISO,英文Basic input Output System,基本的输入输出系统,它是一组固化在计算机主是的ROM芯片上的程序,为计算器提供最底层的、最直接的硬件设置和控制。
(1) 计算机刚上电时对硬件部分的检测,机加电自检,Power On Self Test,简称POST,
检查内容包括CUP,640K基本内存,1M以上内存扩展,ROM,主板,CMOS存储器,串并口,显卡,软硬盘,键盘等进行检查,发现问题则鸣笛警告,如严重错误,则停机;
(2) 初始化,包括创建中断向量、设置寄存器,对一些外部设备进行初始化和检测,其中很重要的一部分是BIOS设置,这样是对硬件设置一些参数;
(3) 引导程序,即引导DOS或其他操作系统,从软盘,硬盘,USB的开始失去读取引导记录。
2.读取MBR
硬盘的主引导扇区位于硬盘的第0磁道0柱面第一个扇区称为MBR,大小512 bytes,由3部分组成:
(1) 硬盘主引导记录MBR(Master Boot Record)占446 Bytes
(2) 分区表DPT(Disk Partition Table)占64Bytes
(3) 硬盘有效标志(Magic Number)占2Bytes
MBR包含硬盘的一系列参数和一段引导程序,其中硬盘引导程序的主要作用是检查分区表是否正确并且在POST完成后引导分区上的操作系统,将Boot Loader复制到物理内存0x7c00;
3.Boot Loader
(1)Boot Loader是在操作系统内核运行之前运行的一段程序,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,以便最终调用操作系统内核;Boot Loader严重依赖硬件;
(2)Boot Loader有若干种,其中Grub,Lilo,Spfdisk是常见的Loader;
Grub使用的最多,系统读取内存中的Grub配置信息,一般为menu.lst或grub.lst,并依照此配置信息来启动不同的操作系统;
4.加载内核
根据Grub设定的内核映像路径,读取内存映像,并进行解压操作;屏幕上会输出“Uncompressing Linux”的提示,解压完成后,输出“Ok,booting the kernel”
系统将解压后的内核放在内存中,并调用start_kernel()函数来启动一系列的初始化动作,完成Linux核心环境的建立;
至此,Linux内核已经建立起来了,基于Linux的程序可以正常运行。
5.用户init设定运行等级
内核加载完成后,第一个运行的程序是/sbin/init,该文件会读取/etc/inittab文件,并以此来进行初始化操作;
/etc/inittab文件最主要的作用就是设定Linux的运行等级,Linux包含5个等级;
6.init进程执行rc.sysinit
设定运行等级后,Linux系统执行的第一个用户层文件是/etc/rc.d/rc.yssinit脚本程序,该脚本会设定PATH,网络配置,启动swap分区,设定/proc等;
7.启动内核模块
依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块;
8.执行不同运行基本的脚本程序
根据不同的运行级别,系统会运行rc0.d到rc9.d中相应的脚本程序,来完成相应的初始化工作和启动相应的服务;
9.执行/etc/rc.d/rc.local
rc.local就是在一切初始化工作完成后,linux留给用户个性化的设定的位置;
10.执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password,输入用户名和密码登录,启动过程完成;
转载于:https://www.cnblogs.com/thoughtInShare/p/4271042.html
Linux 启动过程剖析相关推荐
- linux启动过程剖析,分析Linux系统的启动过程
导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...
- Linux 启动过程详解
随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统.由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Window ...
- 干货 | 走进Node.js之启动过程剖析
走进Node.js之启动过程剖析 作者:正龙 (沪江Web前端开发工程师) 本文原创,转载请注明作者及出处. 随着Node.js的普及,越来越多的开发者使用Node.js来搭建环境,也有很多公司开始把 ...
- Activity启动过程剖析
Activity启动过程剖析 你同样可以在Github上看到这篇文章:https://github.com/onlynight/ActivityStartPrinciple 写在前面 在看这篇文章之前 ...
- 嵌入式Linux启动过程中的问题积累
嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...
- 深入理解Linux启动过程 0号进程,1号进程
深入理解Linux启动过程 Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程. 我们先从Linux启动的顶层视图开始分析,以便能有一个整体 ...
- Linux启动过程详细介绍
Linux启动过程详细介绍 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相 ...
- Linux启动过程学习
该学习过程是一个Linux从主引导记录到第一个用户空间程序的指导. 启动一个Linux系统的过程包含一系列步骤.但是无论你是启动一个标准的X86桌面或嵌入式PowerPC,大部分流程是相似的.该文章探 ...
- linux系统需要占多大的内存,linux启动过程Bootloader、kernel
256M可以推1080P屏幕 128M可以基本运行并安装 256M可以勉强开启特效 512M流畅运行特效 当然内存越大越好,特效与显卡也有关系 和windows相比,当然linux对内存的需求小 Bo ...
最新文章
- 鲜为人知的静态、命令式编程语言——Nimrod
- Web Service 的工作原理
- MySQL客户端和服务器端工具集
- 下拉推广系统立择火星推荐_下拉词删除都择火星下拉
- OpenShift 4 之获取OpenShif的最新开发进度
- 产业互联网的“神”在哪里?
- linux 终端 qmake,qt中的qmake命令设置
- jsweet-quickstart下载测试
- Tomcat安装步骤及详细配置教程(2022最新版)
- Linux - Manjaro查看本机IP地址
- java读取图片 去除alpha_java – 从图像中剥离Alpha通道
- 第三阶段应用层——1.4 数码相册—FreeType介绍
- c语言程序设计第三版乌云高娃答案,C语言程序设计教学课件作者第3版乌云高娃补充习题及答案C语言程序设计教学课件作者第3版乌云高娃补充习题及答案第3章补充习题及答案课件.doc...
- 关于union联合查询
- windwos操作系统有snmp服务器,windows服务器snmp v3
- [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
- vscode在报错时候自动格式化代码
- 测试治具、夹具、托盘
- php x12,小辣椒x12pro是什么处理器,一款专门为老年人服务的手机
- Linux远程登录xftp,xshell下载以及简单使用教程