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

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

一、引导流程

1.1主要的流程图如下:

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 定义了初始化的操作。

内容如下:

命令主要格式是: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)

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

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

(由截图知,无论是哪个运行级别,都会执行/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目录下的服务启动脚本 如图

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

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

[解析]

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

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

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

1.3自定义服务启动或关闭

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

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

2)自定义服务并启动

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

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

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

方式有以下几种:

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

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

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

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

1.4小结

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

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

1、# dmesg

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

如查询下硬盘eth0的信息:

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

记录了服务的启动信息

如查看ntpd的启动情况

二、GRUB解析及应用

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

2.1GRUB的配置与运用

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

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

先看下grub.conf

[解析]

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

timeout 定义缺省等待时间

splashimage 定义GRUB界面图片

hiddenmenu 隐藏菜单

title 定义菜单项名称

root 设置GRUB的根设备

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

initrd 定义加载镜像文件

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

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

可以看下/boot目录

2.2列子

2.2.1进入单用户模式

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

方法:

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

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

b ——启动当前的菜单项

d ——删除当前行

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

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

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

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

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

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

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

三、总结

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

转载于:https://www.cnblogs.com/Quains/archive/2012/01/04/2312335.html

Linux 引导流程解析相关推荐

  1. Linux基础自学记录六-引导流程解析2

    第5讲.Linux引导流程解析  9.GRUB配置文件 GRUB的配置文件默认在/boot/grub/grub.conf,/etc/grub.conf是它的软链接:在备份系统时,/boot目录首先应做 ...

  2. Linux引导流程(第二版)

    Linux引导流程 固件 按下电源的第一个启动步骤:启动固件firmware → POST加电自检 检查硬件的加载情况,如,键盘,内存等. 跟操作系统无关.但不同的硬件平台,固件不同; 当你新添加了一 ...

  3. Linux VIM,引导流程解析

    Vim/Vi没有菜单,只有命令 注:熟记vi命令身怀绝技的朋友请路过,以防走火入魔.感觉见到VI命令就头疼难记的兄弟们,结合心法实际操练.(其中只包括插入.定位.删除.剪切.复制命令) ------- ...

  4. Purism 发布 PureBoot:高度安全、完整的 Linux 引导流程

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   Purism 近日发布了 PureBoot,这是一个面向 Linux 计算机和任何希望增强 Linux 计算机安全 ...

  5. 【Linux导论】Linux引导流程(The Boot Process)

    原文 LFS101x.2 Introduction to Linux (Linux Foundation) Chapter 03: Linux Structure and Installation - ...

  6. 兄弟连Linux在线课堂:第5讲Linux系统引导流程

    兄弟连Linux在线课堂:第5讲 Linux系统引导流程 大家好,我是李明,Linux爱好者,我计划推出一套Linux学习的在线课及视频教程,课程内容主要针对Linux初学者,大概每周一讲,差不多在春 ...

  7. 兄弟连Linux在线课堂:第5讲 Linux系统引导流程

    大家好,我是李明,Linux爱好者,我计划推出一套Linux学习的在线课及视频教程,课程内容主要针对Linux初学者,大概每周一讲,差不多在春节前完成Linux基础入门与系统管理部分,总计分为十讲,内 ...

  8. linux 从grub 进入rescue,在grub的rescue模式修复linux引导

    今天在windows 10系统收到系统更新通知,没看清楚就手贱点了马上更新.以为只是像那些普通更新一样重启一下更新就完了,万万没想到这个是覆盖更新,也就是说这是一个全新的系统更新而不是系统补丁.在安装 ...

  9. Linux开机引导流程

    linux开机引导流程: 1.BIOS开机自检 BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做"硬件自检"(Power-On Self-Test),缩写为POST. ...

  10. 平述factory reset ——从main system到重引导流程

    关于Android或linux的引导流程,网上大都是从开机开始讲述的,或者直接跳过bootloader引导阶段,直接从init进程开始说起.这里我从手机正常运行状态开始,到重启状态以及重启之后的状态略 ...

最新文章

  1. Python:python中的可变类型和不可变类型
  2. linux信号处理编程实验报告,Linux编程之信号处理
  3. SD-WAN和虚拟专用网之间有什么区别?虚拟专用网会被替代吗?
  4. Google Pixel 2(XL)录像画质提升背后
  5. worksteal thread pool
  6. 网站服务器中病毒该如何处理,网站被中了木马无法删除怎么办? 解决网站中病毒的办法...
  7. app inventor离线版_小鸡漫画app手机版下载_小鸡漫画好看的漫画手机版下载
  8. 宇宙的最原始状态是个什么样子
  9. C++继承时名字的遮蔽
  10. 信息学奥赛一本通(1161:转进制)
  11. python模块基础之OS模块
  12. Atitit 数据表 资料整理 常见希腊罗马北欧神话神仙与中国对照表 目录1. 神仙体系 12. 神仙分类 13. 印度大神top10 23.1. 神仙列表约70个大神 21.神仙体
  13. 条码标签打印软件连接不了数据库怎么办?
  14. java 空文件夹删除_java创建文件文件夹,删除空文件夹,删除文件夹以及所有文件...
  15. JAVA计算机毕业设计在线教学质量评价系统Mybatis+系统+数据库+调试部署
  16. 为啥俺要写博客--凭什么?
  17. SICP第一章:构造过程抽象(1.1)
  18. 智能体闪耀乌镇 从世界互联网大会透视全场景智慧
  19. js网页点击播放背景音乐,再次点击暂停播放背景音乐
  20. SAP OOALV 动态设置单元格可否编辑

热门文章

  1. SVN日常提交工作时需要注意的事项
  2. 关于Stm32定时器+ADC+DMA进行AD采样的实现
  3. sql server 触发器
  4. php 遍历文件夹下的所有文件名以及文件大小
  5. d3_3 ATM模拟系统
  6. 考研英语作文:环保呼吁信
  7. freeldr 如何调用_BootMain的
  8. Spring Framework 4.0 M1: WebSocket 支持
  9. rnqoj-28-合唱队形-最长上升子序列
  10. python 之头像上传,预览