`
xukenetwork
  • 浏览: 73938 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Linux 引导流程解析

阅读更多

本文主要记录下linux的引导流程(实例采用centOS 5.5)。

内容主要如下:引导流程、解析下GRUB的作用。

 

一、引导流程

 

1.1主要的流程图如下:

 

image

 

1.2每一步的作用

1)第一步firmware固件自检,主要是进行CMOS/BIOS对硬件进行POST加电自检,在物理层次上对硬件进行检测是否正常。

2)读取硬盘中MBR的BootLoader(自启动程序,Linux下常用的自启动程序是GRUB)。这一步主要的功能是载入内核。

3)载入的内核Kernel主要功能是:1、驱动硬件(Kernel中含有大量驱动程序),2、启动init进程。

4)init进程,主要是读取/etc/inittab文件,执行缺省运行级别,从而继续引导。(需要注意的是它的PID恒为1,0为内核调度器Kernel scheduler)。

5)/etc/inittab 定义了初始化的操作。 

内容如下:

image

命令主要格式是:id : runlevels : action : process

[解析]

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

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

action :指定运行状态

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

其中,

1、run-levels运行级别有7个,0—6分别如下:

0 —— halt 关机

1 —— Single user mode 单用户模式

2 —— Multiuser,withoutNFS 多用户模式但不带网络(text模式)

3 —— Full multiuser mode 完整功能的多用户模式(text模式)

4 —— unused 预留

5 —— X11 图形化多用户模式

6 —— reboot 重启

主要命令:查看当前运行级别 #runlevel、 切换运行级别 #init[0 |1 |2 |3 |4 |5 |6]

2、而acion中也有几个比较重要的取值:

① initdefault:指定系统缺省启动的运行级别(通常用于修复,比如我们要进入单用户模式,则可以将其设置为1)

image

( 由截图中可以知道缺省的run-level是:3)

② sysinit:系统启动执行process中指定的命令(每次都会执行)

image

(由截图知,无论是哪个运行级别,都会执行/etc/rc.d/rc.sysinit)

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

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

⑤ ctrlaltdel:按下Ctrl + Alt + Del时执行process指定的命令

6)initdefault

如第五步所说到的,主要是读取/etc/inittab中的信息,判断缺省的运行级别是什么。

7)/etc/rc.d/rc.sysinit

启动这个脚本。完成系统服务程序的启动,如系统环境变量的设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。(由于是基础服务,如截图所示,默认是将其run-level设置为空::即任何级别,action设置为sysinit。即该脚本在任何运行级别下都要启动,以完成基础服务的启动)【可以自定义自己希望启动的脚本,然后加到这个脚本的最后面,便会在启动时被加载】

8)基础服务启动后,会执行/etc/rc.d/rc这个脚本

加载完基础服务后,就要根据不同的运行级别去启动相对应的下的目录,(如3是命令行模式,5是图形模式,他们需要启动的服务不同),但系统如何去加载呢?这就是rc这个脚本的作用了,它的工作原理是先去判断系统的默认运行级别即第6步中的东西,然后再执行相应的rcN.d目录下的服务启动脚本 如图

image

 

9)执行/etc/rc.d/rcN.d目录下的服务启动脚本

看下该目录下有什么东西:

image

[解析]

S —— start表示要启动的脚本

K —— kill 表示要关闭的脚本

数字表示启动顺序,数值小的优先

 

1.3自定义服务启动或关闭

1)关键目录 /etc/rc.d/init.d/ 下,找到相关的服务再对其进行关闭或启动(所以运行级别的脚本都是来自这个目录的软链接)。

image

通过服务脚本名 start |stop等操作去启动或关闭服务

image

2)自定义服务并启动

实际上,无论是哪个运行级别,他们要启动的脚本都位于/etc/rc.d/init.d这个目录中,而启动的时候相对应的/etc/rc.d/rcN.d目录中的脚本只是一个软链接,指向的还是init.d这个目录中的脚本

如图:rc3.d目录中的内容,可以看到都是软链接(概念类似引用)

image

 

了解了上面的原理后,我们就可以定义我们自己的服务脚本,并让系统在引导的时候加载我们的脚本。

方式有以下几种:

1、增加软链接 #ln -s

例子:

先写好一个脚本,再用 ln –s 脚本名 /etc/rc.d/rcN.d/Sxx脚本名

这样系统就会在引导运行级别N时就会加载这个脚本

如:ln  –s  /etc/rc.d/init.d/xx.script  /etc/rc.d/rc3.d/S100xx.script

这样系统就会在运行级别3时加载我们的xx.script这个服务。(注意脚本放在init.d目录中,并且软链接的名字要用S开头)

2、使用 chkconfig

image

3、使用 ntsysv (图形界面选择)

用ntsysv –-level N进入对于相应运行级别服务的启动设置

image

通过空格选择启动或否(*表示启动),上下方向键选择

 

1.4小结

大概的引导流程就是以上的几步了。

最后说下如何查看引导日志,主要有两种方式

1、# dmesg

记录了内核kernel驱动硬件的信息

如查询下硬盘eth0的信息:

image

 

2、查看 /var/log/messages的日志信息

记录了服务的启动信息

如查看ntpd的启动情况

image

 

 

 

 

二、GRUB解析及应用

了解了基本的引导流程,我们再来着重看下流程中最重要的自启动程序BootLoader,Linux常用的是GRUB。

2.1GRUB的配置与运用

GRUB的配置文件默认位置 /boot/grub/grub.conf (即GRUB它的实际位置在/boot下)

他有个软链接是 在/etc/grub.conf

先看下grub.conf

image

[解析]

default 定义缺省启动系统(多系统的时候会用到)

timeout 定义缺省等待时间

splashimage 定义GRUB界面图片

hiddenmenu 隐藏菜单

title 定义菜单项名称

root 设置GRUB的根设备

kernerl 定义内核文件所在位置 ro —只读

initrd 定义加载镜像文件

其中root中 (hd0,0) hd为硬盘类型 0为第一块硬盘 ,0为第一个分区

这个实际上是指定了 /boot所在的硬盘分区

可以看下/boot目录

image

 

2.2列子

2.2.1进入单用户模式

适合场合:忘记root密码、修复系统

方法:

1、在启动倒数的时候按ESC进入GRUB操作界面

image

e ——编辑当前的启动菜单项

b ——启动当前的菜单项

d ——删除当前行

c ——进入GRUB的命令行模式

Esc ——返回GRUB启动菜单界面,取消对当前所做的修改

2、按e进入,再选kernerl按e去编辑kernerl项

image

3、在最后加" 1"(空格 1),即运行级别1的单用户模式

4、按回车确定,再按B重启,便可以进入当用户模式

image

 

在单用户模式下,可以对root密码进行重置(命令 #passwd root)

同时可以做其他需要修复的操作。

 

 

 

三、总结

主要是掌握好系统的引导流程,明白在启动的时候系统的每一步在干什么,这样当系统出现问题了,我们就可以判断出是在哪一步出现了问题。这样才能在寻找解决方案的时候有的放矢,缩小范围。

分享到:
评论

相关推荐

    第5讲.Linux引导流程解析

    兄弟连linux教程的配套课件,可以了解linux的基本操作应用知识

    Linux基础知识及系统管理视频教程

    主要由42节组成,主要内容有Linux应用与发展、Linux应用与发展总结、Linux系统安装总结、Linux常用命令、文本编辑器vin第13节文本编辑器vim总结第14节Linux引导流程解析(一) 第15节Linux引导流程解析(二) 第16节...

    剖析Linux系统引导流程

    剖析Linux系统引导流程,不错的linux入门资料

    linux基础知识及系统管理.txt

    第14节Linux引导流程解析(一).mp4 第15节Linux引导流程解析(二)mp4 第16节Linux引导流程解析(三).mp4 第17节Linux引导流程解析总结.mp4 第18节Linux软件包管理(上).mp4 第19节Linux软件包管理(下).mp4 第20节Linux...

    linux学习资料

    第5 讲Linux 引导流程解析 第6 讲Linux 软件包管理 第7 讲Linux 用户管理 第8 讲Linux 进程管理 第9 讲Linux 文件系统管理 第10 讲Shell 编程 第11 讲Linux 网络设 第12 讲文件共享服务 第13 讲LAMP 环境搭建 第14 ...

    Linux教程PPT课件(shell命令、Apache服务器配置、iptables防火墙等等).zip

    Linux具有如下优点: ...Linux引导流程解析; Linux用户及用户组管理; Linux服务与进程管理; Linux文件系统管理; shell命令; Apache服务器配置;; iptables防火墙; gvim编辑器使用; dns域名服务器等等。

    兄弟连(lampbrother)李明linux课程pdf 资料完整版

    课件05_第5讲.Linux引导流程解析.pdf [LAMP兄弟连李明老师讲Linux].课件06_第6讲.Linux软件包管理课件.pdf [LAMP兄弟连李明老师讲Linux].课件07_第7讲.Linux用户管理.pdf [LAMP兄弟连李明老师讲Linux].课件08_第8讲....

    LAMP兄弟连李明老师Linux讲义笔记PPT下载

    课件05_第5讲.Linux引导流程解析.pdf [LAMP兄弟连李明老师讲Linux].课件06_第6讲.Linux软件包管理课件.pdf [LAMP兄弟连李明老师讲Linux].课件07_第7讲.Linux用户管理.pdf [LAMP兄弟连李明老师讲Linux].课件08_第8...

    经典书籍:LINUX系统开发技术详解-基于ARM(PDF)

    LINUX系统开发技术详解-基于ARM(PDF) 本书以嵌入式Linux系统开发流程为主线,剖析了嵌入式Linux系统构建的各个环节。本书从嵌入式系统基础知识和Linux编程技术讲起,接下来说明了嵌入式Linux交叉开发环境的建立,...

    初学者Linux入门视频教程,共13讲

    第5讲 Linux引导流程解析 第6讲 Linux软件包管理 第7讲 Linux用户管理 第8讲 Linux进程管理 第9讲 Linux文件系统管理 第10讲 Shell编程 第11讲 Linux网络设置 第12讲 Linux文件共享服务 第13讲 LAMP环境编译 网盘...

    Linux(CentOS)学习课件(ppt转换成pdf后的格式)

    第1讲.Linux应用与发展.pdf ...第5讲.Linux引导流程解析.pdf 第6讲.Linux软件包管理课件.pdf 第7讲.Linux用户管理.pdf 第8讲.Linux进程管理.pdf 第9讲.Linux文件系统管理.pdf 第10讲.Shell编程.pdf

    【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.2.pdf

    本书一共分四篇,每篇对应一...通过上面四篇的学习,大家基本掌握了嵌入式 Linux 驱动的开发流程,本书旨在引导大家 入门 Linux 驱动开发,更加深入的研究就需要大家自行查阅其他更加专业的书籍了,祝愿大家 学习顺利

    嵌入式Linux应用程序开发详解

    63 3.2.2 Vi的基本流程 63 3.2.3 Vi的各模式功能键 65 3.3 初探Emacs 66 3.3.1 Emacs的基本操作 67 3.3.2 Emacs的编译概述 70 3.4 Gcc编译器 71 3.4.1 Gcc编译流程解析 71 3.4.2 Gcc编译选项分析 74...

    嵌入式Linux系统开发技术详解-基于ARM (完全版)

    本书从嵌入式系统基础知识和Linux编程技术讲起,接下来说明了嵌入式Linux交叉开发环境的建立,然后分析了嵌入式Linux系统的引导程序、内核和文件系统三大组成部分,最后介绍了嵌入式Linux系统集成和部署的方法。...

    嵌入式linux系统开发详解

    本书以嵌入式Linux 系统开发流程为主线,剖析了嵌入式Linux 系统构建的各个环节。 从嵌入式系统基础知识和Linux 编程技术讲起,接下来说明了建立嵌入式Linux 交叉开发环 境,然后分析了嵌入式Linux 系统的引导程序、...

    嵌入式Linux系统开发技术详解--基于ARM

    本书从嵌入式系统基础知识和Linux编程技术讲起,接下来说明了嵌入式Linux交叉开发环境的建立,然后分析了嵌入式Linux系统的引导程序、内核和文件系统三大组成部分,最后介绍了嵌入式Linux系统集成和部署的方法。...

    LINUX系统开发技术详解---基于ARM

    3.4.2 GCC编译选项解析............................................................................................. 56 3.5 调试器GDB的使用技巧..............................................................

    嵌入式设计及linux驱动开发指南——基于ARM9处理器.pdf

    2.2.2 三星S3C2410X处理器详解 2.3 FS2410开发平台 第3章 创建嵌入式系统开发环境 3.1 嵌入式Linux的开发环境 3.2 Cygwin 3.3 虚拟机 3.4 交叉编译的预备知识 3.4.1 Make命令和Makefile文件 3.4.2 binutils...

    嵌入式Linux应用程序开发标准教程(第2版全)

    3.3.1 gcc编译流程解析 3.3.2 gcc编译选项分析 3.4 gdb调试器 3.4.1 gdb使用流程 3.4.2 gdb基本命令 3.5 make工程管理器 3.5.1 makefile基本结构 3.5.2 makefile变量 3.5.3 makefile规则 3.5.4 make管理器的使用 3.6...

Global site tag (gtag.js) - Google Analytics