许多人对Linux的启动过程感到很神秘,因为所有的启动信息都在屏幕上一闪而过。其实,

Linux的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段:

1.启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。

2.执行程序init。装入内核并初始化设备后,运行init程序。init程序处理所有程序的启动,

包括重要系统精灵程序和其它指定在启动时装入的软件。

下面以Red Hat为例简单介绍一下Linux的启动过程。

一、启动内核

首先介绍启动内核部分。电脑启动时,BIOS装载MBR,然后从当前活动分区启动,LILO获得引

导过程的控制权后,会显示LILO提示符。此时如果用户不进行任何操作,LILO将在等待制定

时间后自动引导默认的操作系统,而如果在此期间按下TAB键,则可以看到一个可引导的操作

系统列表,选择相应的操作系统名称就能进入相应的操作系统。

当用户选择启动LINUX操作系统时,LILO就会根据事先设置好的信息从ROOT文件系统所在的分

区读取LINUX映象,然后装入内核映象并将控制权交给LINUX内核。LINUX内核获得控制权后,

以如下步骤继续引导系统:

1. LINUX内核一般是压缩保存的,因此,它首先要进行自身的解压缩。内核映象前面的一些

代码完成解压缩。

2. 如果系统中安装有可支持特殊文本模式的、且LINUX可识别的SVGA卡,LINUX会提示用户

选择适当的文本显示模式。但如果在内核的编译过程中预先设置了文本模式,则不会提示选

择显示模式。该显示模式可通过LILO或RDEV工具程序设置。

3. 内核接下来检测其他的硬件设备,例如硬盘、软盘和网卡等,并对相应的设备驱动程序

进行配置。这时,显示器上出现内核运行输出的一些硬件信息。

4. 接下来,内核装载ROOT文件系统。ROOT文件系统的位置可在编译内核时指定,也可通过

LILO或RDEV指定。文件系统的类型可自动检测。如果由于某些原因装载失败,则内核启动

失败,最终会终止系统。

二、执行init程序

其次介绍init程序,利用init程序可以方便地定制启动其间装入哪些程序。init的任务是

启动新进程和退出时重新启动其它进程。例如,在大多数Linux系统中,启动时最初装入

六个虚拟的控制台进程,退出控制台窗口时,进程死亡,然后init启动新的虚拟登录控制台,

因而总是提供六个虚拟登陆控控制台进程。

控制init程序操作的规则存放在文件/etc/inittab中。Red Hat Linux缺省的inittab文

件如下:

#

#inittab This file describes how the INIT process should set up the system in a certain

#run-level.

#

#

#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:3:initdefault:

#system initialization

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

10:0:wait:/etc/rc.d/rc 0

11:1:wait:/etc/rc.d/rc 1

12:2:wait:/etc/rc.d/rc 2

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

14:4:wait:/etc/rc.d/rc 4

15:5:wait:/etc/rc.d/rc 5

16:6:wait:/etc/rc.d/rc 6

#Things to run in every runlevel

ud:once:/sbin/update

#Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

#When our UPS tells us power has failed,assume we have a few minutes of

power left.Schedule a

#shutdown for 2 minutes from now.

#This does,of course,assume you have powered installed and your UPS

connected and working

#correctly.

pf::powerfail:/sbin/shutdown -f -h 2 "Power Restored;Shutdown Cancelled"

#Run gettys in standard runlevels

1:12345:respawn:/sbin/minggetty tty1

2:2345:respawn:/sbin/minggetty tty2

3:2345:respawn:/sbin/minggetty tty3

4:2345:respawn:/sbin/minggetty tty4

5:2345:respawn:/sbin/minggetty tty5

6:2345:respawn:/sbin/minggetty tty6

#Run xdm in runlevel 5

x:5:respawn:/usr/bin/X11/xdm -nodaemon

Linux有个运行级系统,运行级是表示系统当前状态和init应运行哪个进程并保持在这种

系统状态中运行的数字。在inittab文件中,第一个项目指定启动时装入的缺省运行级。

上例中是个多用户控制台方式,运行级为3。然后,inittab文件中每个项目指定第二个

字段的项目用哪种运行级(每个字段用冒号分开)。因此,对运行级3,下列行是相关的:

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

1:12345:respawn:/sbin/minggetty tty1

2:2345:respawn:/sbin/minggetty tty2

3:2345:respawn:/sbin/minggetty tty3

4:2345:respawn:/sbin/minggetty tty4

5:2345:respawn:/sbin/minggetty tty5

6:2345:respawn:/sbin/minggetty tty6

最后六行建立Linux提供的六个虚拟控制台。第一行运行启动脚本/etc/rc.d/ rc 3;

这将运行目录/etc/

rc.d/rc3.d中包含的所有脚本,这些脚本表示系统初始化时要启动的程序。一般来说,

这些脚本不需要编辑或改变,是系统缺省的。

linux启动过程文件系统崩溃,Linux启动过程简介(根文件系统加载过程)相关推荐

  1. 描述一下JAVA的加载过程_JVM源码分析之Java类的加载过程

    简书 占小狼 转载请注明原创出处,谢谢! 趁着年轻,多学习 背景 最近对Java细节的底层实现比较感兴趣,比如Java类文件是如何加载到虚拟机的,类对象和方法是以什么数据结构存在于虚拟机中?虚方法.实 ...

  2. linux内核启动以及文件系统的加载过程

    Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...

  3. redis 启动加载mysql_Redis分析系列:启动加载过程

    从本篇文章开始(命名为Redis分析系列),将会通过分析Redis的源代码(以Redis 2.2.0 RC1为准),来对它的内部实现做一些探讨.本文主要介绍Redis启动加载过程,总体上可以分为如下几 ...

  4. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的 ...

  5. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

  6. linux初始化内存盘卡住,分析内核初始化时根内存盘的加载过程(init/main.c)-嵌入式系统-与非网...

    作者:opera 概述 ==== 1)当内核配置了内存盘时, 内核在初始化时可以将软盘加载到内存盘中作为根盘. 当同时配置了初始化内存盘(Initail RAM Disk)时, 内核在初始化时可以在安 ...

  7. 1wifi 简介(框架)2系统启动后的 wifi加载 过程-图解 3系统启动后的 wifi 加载过程

    http://blog.csdn.net/wh_19910525/article/details/7384480 一.wifi 组建原理: WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在 ...

  8. 设备树语法,加载过程和与驱动的关系

    文章目录 一.设备树语法 1.1 简介 1.2 基本数据格式 1.3 一个例子 1.3.1 根节点 2.3.2 CPU 1.3.3 节点名称 1.3.4 设备 1.3.5 status 1.3.6 编 ...

  9. 模块加载过程代码分析1

    一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...

  10. Java类的加载过程详解 面试高频!!!值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...

最新文章

  1. Leangoo敏捷工具如何升级至企业版
  2. Android Scroller 使用详解
  3. linux存储--mmap与sendfile(十七)
  4. 微软宣布推出Azure Blockchain Tokens加密代币平台
  5. eclipse lombok插件安装_便捷开发,解放双手,lombok插件
  6. 问题:get_params() missing 1 required positional argument: 'self' 之解决
  7. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印...
  8. 发布npm时遇到的两个小问题,解决方法
  9. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
  10. Atitit 单项功能开发 最佳实践规范 标准化流程attilax总结.docx
  11. 3DGPS数据图和3D圆轨道图
  12. 基于multisim的fm调制解调_基于Multisim的AM调制解调电路设计与研究
  13. 十个设计师必备网站,解决你设计的所有难题
  14. 【深度学习】ResNet系列网络结构
  15. Day10 空时编码理论之无线信道、分集和复用
  16. FTP服务器选择经历和踩坑记,wu-ftp, proftpd 和 vsftpd
  17. 王思聪麾下的HR,被刷屏了!
  18. 07_建造者模式(方式一)
  19. lattice diamond烧写问题汇总
  20. 少妇教你如何笑里藏“刀” 榨干老公私房钱

热门文章

  1. 向内看 —— 除了心理咨询外,还有什么办法可以疗愈自己?
  2. PostgreSQL语法
  3. 3-9应用层如何防御
  4. iOS APP黑盒/灰盒审计checklist
  5. Z-Statk协调器 路由器 终端的确定---Simple例程(一)
  6. 异步任务神器 Celery 快速入门
  7. 能带你起飞的【数据结构】成王第一篇:数据结构的顺序表
  8. 电化学传感器(4)---校准、温度补偿、选择性、交叉敏感性
  9. 【计算机网络】Socket网络编程
  10. 服务器防沉迷系统,《明日之后》未成年防沉迷系统上线,11个服务器“遭殃”!...