一、系统引导流程

第一步:固件fireware(CMOS/BIOS)——POST加点自检(与操作系统无关)

这一步主要是检查硬盘等硬件是否能正常工作

CMOS:是固化在主板上,详细:http://school.cfan.com.cn/news/cfannews/2007-06-06/1181111816d66664.shtml

BIOS:BIOS是固件的操作界面

CMOS是用来保存硬件参数信息的,而BIOS是用来修改这些参数的程序,简单地说:BIOS就是用来设置CMOS参数的手段,CMOS里面保存了BIOS设定的参数和结果,即“我们通过BIOS设置程序对CMOS参数进行修改”,比如我们需要修改系统启动顺序,在调整时,我们是通过BIOS设置为“光驱→硬盘→软驱”依次启动的,那么这个启动顺序的数据就保存在CMOS中。

hwclock硬件时钟(固化在固件中的时钟)

可以看到我的系统时钟和硬件时钟不同,下面来修改系统时钟和硬件时钟。

如果hwclock是正确的

可以用hwclock –help 查看参数

第二步:自举程序BootLoader(GRUB)——载入内核

MBR(mast boot record):位于磁盘的第一个柱面的第一个扇区

关于MBR详细请看:http://blog.csdn.net/hbrqlpf/article/details/3007863

/etc/grub.conf配置文件中记录关于系统内核的详细信息,我们进去看一下

系统内核版本是2.6.18

2:表示主版本号

6:表示次版本号(奇数表示测试版)

18:末版本号

后面还记录了内核文件的路径root=LABEL=/rhgb quiet initrd /initrd-2.6.18-128.e15.img

第三步:载入内核后(Kernel)——驱动硬件

启动进程(init)

系统首先会启动init进程,该进程启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。在Linux系统中,init是第一个可以存在的进程,它的PID恒为1,但它必须向一个更高级的功能负责:PID为0的内核调度器(Kernel scheduler),从而获得CPU时间。

孤儿进程:父进程死掉后子进程还存在,则子进程被称为孤儿进程(系统检测到孤儿进程后会让init做父进程)。

僵尸进程:子进程死掉后父进程不知道,则子进程被称为僵尸进程。

第四步:读取执行配置文件/etc/inittab

0:表示关机

1:表示单用户模式(只有root账号,类似于Windows的安全模式,没有图形界面)

2:字符界面多用户模式,没有NFS服务

3:字符界面多用户模式,有NFS服务

4:待使用(自定义级别)

5:图形化的多用户模式(系统缺省级别)

6:表示重启

查看当前系统的运行级别(runlevel)

切换运行级别 ( init 级别)

二、inittab文件剖析

1、在inittab中所有条目采取以下格式

id:run-levels:action:process

id:标识符,一般为两位数字字母

run-level:指定运行级别,可以指定多个

action:指定运行状态

process:指定要运行的脚本/命令

2、action常用取值

initdefault:指定系统缺省启动的运行级别(例如在里面可以修改运行级别2后系统启动后进入字符界面)

sysinit:系统启动执行process中指定的命令。

wait:执行process中的命令,并等其结束后再执行其他命令

once:执行process中的命令,不等待其结束

ctrlaltdel:按下ctrl+alt+del时执行process指定的命令

powerfail:当出现电源错误时执行process指定的命令,不等待其结束

powerokwait:当电源恢复时执行process指定命令

respan:一旦process命令终止,便重新运行该命令

3、各个级别服务程序脚本

/etc/rc.d/init.d目录下包含各个运行级别的服务程序脚本

/etc/rc.d/rc[0123456].d分别存放对应运行级别的服务程序脚本的符号链接,链接到init.d目录中的相应脚本

K代表杀死该进程

S代表启动该脚本进程

K和S后面的数字代表执行顺序

学习鸟哥的Linux私房菜笔记(17)——Linux引导流程的更多相关文章

  1. 鸟哥的Linux私房菜笔记第四章

    前言 对着<鸟哥的Linux私房菜-基础版>做了简化笔记.不想让自己知其然而不知其所然.所以写个博客让自己好好巩固一下,当然不可能把书中的内容全部写下来.在这里就简化一点把命令写下来. 让 ...

  2. Linux系统服务(daemon)(鸟哥Linux私房菜笔记)

    Linux系统服务(daemon) 一.SystemV的init管理机制(脚本式启动)1.服务启动分类stand alone 独立启动模式super daemon 总管程序 2.服务的启动.关闭与观察 ...

  3. 鸟哥的Linux私房菜笔记第六章(二)

    文件内容查询 直接查询文件内容 查阅一个文件的内容可以使用指令cat/tac/nl. # [cat|tac|nl] 文件 区别: 1.cat是直接把文件内容输出到屏幕上,并且从第一行开始输出到末行 2 ...

  4. 学习鸟哥的Linux私房菜笔记(1)——Linux系统入门

    今天在阿里云申请了一个centos系统的云服务器,以前对linux了解的只是皮毛,记了几个命令还给忘了,整了半天都弄不好,作为一个做过javaweb开发的coder实在是惭愧啊,决定从今天开始学习Li ...

  5. [置顶] 学习鸟哥的Linux私房菜笔记(6)——过滤器、输入输出及管道

    一.过滤器 Linux中的应用工具分为三种: 交互工具 过滤器 编辑器 能够接受数据,过滤再输出的工具,称之为过滤器 对过滤器和进程,存在着输入源与输出对象 二.输入.输出.重定向 输入:过滤器的数据 ...

  6. 学习鸟哥的Linux私房菜笔记(16)——Ubuntu中建立ftp服务

    1.安装vsftpd,如下图所示:sudo apt-get install vsftpd 2.查看本机是否可以连接ftp 如上图所示,发现login failed了,怎么办呢?我们来看看vsftpd的 ...

  7. 学习鸟哥的Linux私房菜笔记(15)——文件系统

    一.文件结构 为了能在设备上存储与读取文件,我们需要在分区上创立文件系统 文件系统记录目录与文件我们称之为文件结构 每一个文件系统在Linux里都被解释成由一个根目录为起点的目录结构 Linux将各个 ...

  8. 学习鸟哥的Linux私房菜笔记(14)——硬件配置与管理

    一.设备文件 Linux沿袭了Unix的风格,将所有设备看成一个文件 设备文件分为两种: 块设备文件(b):比如硬盘.光驱 字符设备文件(c):比如串口.键盘 设备文件一般存放在/dev目录下 二.常 ...

  9. 学习鸟哥的Linux私房菜笔记(13)——用户管理

    一.检查用户身份 用户可以使用下列指令了解用户身份 who :查询当前在线的用户 groups :查询用户所属组 id :显示当前用户信息 finger :查询用户信息 二.添加用户 用指令添加命令 ...

随机推荐

  1. Python 极简教程(五)输入输出

    输入函数,用于接收键盘输入.主要用于在学习和练习过程中,增加练习的乐趣.让我们的程序相对完整和具备简单的交互能力. 输出函数,将代码运行结果打印在控制台上,同样也能让我们观察程序运行的结果.也是为了增 ...

  2. Appium_Java运行测试脚本时问题汇总

    问题一.java.lang.NoClassDefFoundError: org/openqa/selenium/remote/SessionNotFoundExceptionCaused by: ja ...

  3. [Angular] Use Angular’s @HostBinding and :host(...) to add styling to the component itself

    One thing that we can do is to add styles directly to HTML elements that live within our component. ...

  4. 从大整数乘法的实现到 Karatsuba 快速算法

    Karatsuba 快速乘积算法是具有独特合并过程(combine/merge)的分治算法(Karatsuba 是俄罗斯人).此算法主要是对两个整数进行相乘,并不适用于低位数(如 int 的 32 位 ...

  5. Mosquito的优化——订阅树优化(八)

    本文由逍遥子撰写.转发请标注原址: http://blog.csdn.net/houjixin/article/details/46413783 或 http://houjixin.blog.163. ...

  6. TCP快速重传与快速恢复原理分析(四种不同的算法)

    在TCP/IP中,快速重传和恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能快速恢复丢失的数据包.没有FRR,如果数据包丢失了,TCP将会使用定时器来要 ...

  7. swift 数据存储

    1.plist 存储 1.利用沙盒根目录拼接“Documents”字符串 //存储 func saveArray() { // 1.获得沙盒根路径,不管是真机还是模拟机,用它是最合适不过了 let h ...

  8. SVGALib

    SVGALib是一套运行于Linux及FreeBSD下的开放源代码低阶绘图函式库,它允许程式设计人员变更视讯模式及全屏幕图像,许多热门的电脑游戏如Quake及Doom都源自此技术. 范例 编辑 #in ...

  9. wepy小程序实现列表分页上拉加载(1)

    使用wepy开发微信小程序商城第一篇:项目初始化 使用wepy开发微信小程序商城第二篇:路由配置和页面结构 列表页效果图: 1.新建列表页 (1)在pages里面新建一个list.wpy文件 初始代码 ...

  10. ios移动旋转缩放动画

    //移动旋转动画效果 CATransform3D rotate = CATransform3DMakeRotation(70.0 * M_PI / 180.0, 0.0, 0.0, 1.0); CAT ...