大纲:

一、RHEL6系统启动原理

BIOS--->mbr--->bootloader--->内核--->init--->/etc/rc.d/rc.sysinit--->/etc/rc.d/rc[0-6].d--->/etc/rc.d/rc.local--->/bin/login

二、启动故障排除

1、防止恶意破解root密码(grub加密)

2、系统崩溃后,如何备份数据到U盘(救援模式)

3、inode结点满了怎么办

4、双系统,更新grub

===============================================================================

一、RHEL6系统启动原理:

第一步:BIOS执行自检程序,加载硬件信息

因为BIOS中包含了CPU的相关 信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等等

这就是我们的BIOS

第二步:读取mbr,加载Bootloader

硬盘上第0磁道中的第一个扇区被称为MBR(即Master Boot Record)主引导记录,它的大小为512字节

其内容分为两部分:

第一部分:引导区(PRE-BOOT),占用446个字节

第二部分:分区表(PARTITION PABLE),共有66个字节,记录硬盘分区信息

引导区的作用之一就是找到标记为(ACTIVE)即活动的分区,并将活动分区的引导区读入内存

系统找到BIOS指定的硬盘的MBR后,就会将其复制到物理内存中

(其实读入内存的这一部分其实就是Bootloader),而具体到电脑,就是grub了

第三步:bootloader引导

Boot Loader是个小程序,用于初始化硬件,建立内存空间(有很多种)

其中Grub、Lilo和spfdisk是常见的Loader。我们以Grub为实例。

系统读取内存中的Grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不通的操作系统。

第四步:加载内核

系统将解压后的内核方知道内存中,并调用start_kernel()函数,启动一系列初始化函数,来初始化各种设备。完成Linux核心环境的监理。至此Linux内核已经建立起来。基于Linux的程序应该可以正常运行了。

第五步:执行第一个程序init,init程序根据inittab文件配置系统运行级别

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作

vim /etc/inittab

其中,前面的注释告诉我们一下系统配置文件的路径。还有系统的默认启动级别分类

如下:

# Default runlevel. The runlevels used 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) #重启,可使用init 0 关机 or init 6重启,但是不要把0和6设置为默认启动级别

切换运行级别:init [0-6] #运行级别

查看运行级别:runlevel

第六步:执行/etc/rc.d/rc.sysinit,对系统的环境进行配置

在设定了运行级别后,Linux系统执行的第一个文件就是/etc/rc.d/rc.sysinit脚本程序

它的作用非常多,如设置PATH(路径)、设定网络配置(/etc/sysconfig/network),启动swap分区、设定/proc等等。

第七步:根据系统的运行级别,执行不同的脚本。

根据系统运行级别的不同,系统会运行/etc/rc0.d到rc6.d中相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

例如:运行级别为 5 ---> 执行脚本/etc/rc5.d

S 开机要启动的服务   K 开机不启动的服务 中间的是服务的名称 优先级

第八步:执行/etc/rc.d/rc.local,加载开机启动项

rc.local就是在一切初始化工作后,Linux留给用户进行个性化设置的地方。我们可以把自己向设置和启动的内容放在这里。

第九步:执行/bin/login,启动登录界面

此时,系统已经进入到等待用户输入username和password的时候了。

到此Linux完成启动!!!大功告成!!!

===============================================================================

二、常见启动故障排除:

1、防止进入单用户模式,破解ROOT密码。

实战:如何防止破解ROOT密码(RHEL6)

第一步:生成密文密码

grub-md5-crypt

两次输入密码后,就会生成密文密码。

第二步:配置启动配置项/boot/grub/grub.conf

修改前:

修改后:

注意:记得指定密码格式为--md5哦

init 6 重启,看下效果

GRUB加密效果:

看到了么?这是在title上方添加password起到的效果,防止恶意破解root密码

输入密码后,解锁成功!!!

开机启动加密效果:(输入密码即可启动)

======================================

破解(防止恶意修改root密码及系统开机启动密码)

第一步:开机进入bios,设置光盘启动后,F10保存,重启。如下图:

第二步:选择第三项,进入救援模式

进入如下界面:

选择English--->us--->No(不启动网络服务)--->continue(我们需要修改文件,所以不要选择只读)--->

 

最后进入如下界面:

执行换根命令,将根目录转换到/mnt/sysimage下,如下图:

chroot /mnt/sysimage

编辑文件/boot/grub/grub.conf文件,删除密码。

vim /boot/grub/grub.conf

Ok,两次退出,重启即可!!!

2、系统崩溃后,如何备份数据到U盘(救援模式)

使用上一步骤

3、inode结点满了怎么办

结合df –i 和df -hT命令,查找文件系统中的空文件或没用的,将其删除!!!

4、双系统,更新grub

进入救援模式,换根后,重新安装grub

grub-install /dev/sda

即可!!!

5、磁盘坏道检测

badblocks -sv /dev/sdb #坏道检测

为啥会进入这个界面

1-19-1 RHEL6启动原理和故障排除的更多相关文章

  1. 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除

    目录 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除 18.1 centos6系统启动过程及相关配置文件 18.1.1 centos6系统启动过程 18.1.2 centos6启 ...

  2. SQL Server 2012内部原理及故障排除(专栏)

    PROFESSIONAL SQL SERVER® 2012 INTERNALS AND TROUBLESHOOTING一书(可从这里下载).认为内容非常不错.自己也想对SQL Server 2012有 ...

  3. RHEL 启动系统及故障排除

    一:Linux的启动过程: 开机加电自检->MBR引导(boot loader占446字节,分区列表64字节,magic占2字节)-->grub菜单(MBR是grub的第一个字段,第二个字 ...

  4. SQL Server 2012的内部原理和故障排除(50):Burgess_Liu的专栏

    http://blog.csdn.net/Burgess_Liu/article/category/1821435/2 http://www.cnblogs.com/fygh/archive/2012 ...

  5. SQL Server 2012内部原理及故障排除

    http://blog.csdn.net/burgess_liu/article/details/37900027

  6. 1-20 RHEL7的启动原理和服务控制

    大纲: RHEL7启动原理 RHEL7服务启动配置 网络概述 发布内网服务器 ############################################################ ...

  7. tomcat启动原理

    2018年04月12日 19:55:22 太极小帅帅 阅读数:282   前言 一直在用Tomcat,但是对其启动原理一直没去研究,这里准备去面试,可能会问道.于是总结了下启动原理.完全凭感觉去揣测, ...

  8. Spring5深度源码分析(三)之AnnotationConfigApplicationContext启动原理分析

    代码地址:https://github.com/showkawa/spring-annotation/tree/master/src/main/java/com/brian AnnotationCon ...

  9. MySQL 启动原理剖析

    200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要从查看MySQL的启动命令的代码来详细了解MySQL的启动过程,内容 ...

随机推荐

  1. 史上最有魄力公司!20亿主要用于团队建设,要在上海做出一家BAT之外的互联网公司

    在去年的创业大军里,有一家公司显得很特别——微鲸科技,背靠华人文化,联合阿里巴巴.腾讯和央广,天使轮就高达20亿,是被誉为互联网电视领域的豪华创业团队. 在上市不到半年的时间里,旗下发布的55吋和43 ...

  2. 搜狗员工用百度算什么,谷歌员工当着老板的面用bing,结果悲剧了!

    之前看到一篇文章,写的是搜狗的员工遇到问题时,用百度,结果网友的评论真是亮瞎眼.今天,W3Cschool小师妹将为大家分享一个类似的故事,那就是谷歌员工当着老板的面,竟然用BING. 这位谷歌员工称, ...

  3. CGlib和JDK动态代理

    一.CGlib动态代理     JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了.CGLib采用了非常底层的1:字节码技术,其原理是通过字节 ...

  4. PKU 2531 Network Saboteur(dfs+剪枝||随机化算法)

    题目大意:原题链接 给定n个节点,任意两个节点之间有权值,把这n个节点分成A,B两个集合,使得A集合中的每一节点与B集合中的每一节点两两结合(即有|A|*|B|种结合方式)权值之和最大. 标记:A集合 ...

  5. HDU 5963 朋友(树+博弈)

    #include<vector> #include<cstdio> #include<cstring> #include<algorithm> #def ...

  6. 京东AI平台 春招实习生面试--NLP(offer)

    给offer了 开心.春招第一个offer!!! 2018.4.11 update 1面: 只有1面, 面试官还是个老乡.. 1.自我介绍 如何学的AI相关的知识? 2.介绍百度的实习 3.拿到一个问 ...

  7. iOS 使用node js 搭建简单的本地服务器

    一.前提:基于iOS 项目 调用,使用了第三方框架NodeMobile.技术说明关键是 应用生命整个周期只能在应用启动时候开辟的一个线程里申请 一个 node  js 资源.如果终止了运行,重启是不支 ...

  8. 好用的http client库CPP REST SDK

    前言 C++中http client库本身就少,好用的就更少了,在了解微软开源的CPP REST SDK库之前,我知道的C++ http client库有libcurl(这个是C语言的),Qt的QNe ...

  9. MLlib1.6指南笔记

    MLlib1.6指南笔记 http://spark.apache.org/docs/latest/mllib-guide.html spark.mllib RDD之上的原始API spark.ml M ...

  10. Java如何清空数组、对象

    //清空 public class Clear { public static void main(String[] args){ // List<String> a= new Array ...