1-19-1 RHEL6启动原理和故障排除
大纲:
一、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启动原理和故障排除的更多相关文章
- 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除
目录 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除 18.1 centos6系统启动过程及相关配置文件 18.1.1 centos6系统启动过程 18.1.2 centos6启 ...
- SQL Server 2012内部原理及故障排除(专栏)
PROFESSIONAL SQL SERVER® 2012 INTERNALS AND TROUBLESHOOTING一书(可从这里下载).认为内容非常不错.自己也想对SQL Server 2012有 ...
- RHEL 启动系统及故障排除
一:Linux的启动过程: 开机加电自检->MBR引导(boot loader占446字节,分区列表64字节,magic占2字节)-->grub菜单(MBR是grub的第一个字段,第二个字 ...
- SQL Server 2012的内部原理和故障排除(50):Burgess_Liu的专栏
http://blog.csdn.net/Burgess_Liu/article/category/1821435/2 http://www.cnblogs.com/fygh/archive/2012 ...
- SQL Server 2012内部原理及故障排除
http://blog.csdn.net/burgess_liu/article/details/37900027
- 1-20 RHEL7的启动原理和服务控制
大纲: RHEL7启动原理 RHEL7服务启动配置 网络概述 发布内网服务器 ############################################################ ...
- tomcat启动原理
2018年04月12日 19:55:22 太极小帅帅 阅读数:282 前言 一直在用Tomcat,但是对其启动原理一直没去研究,这里准备去面试,可能会问道.于是总结了下启动原理.完全凭感觉去揣测, ...
- Spring5深度源码分析(三)之AnnotationConfigApplicationContext启动原理分析
代码地址:https://github.com/showkawa/spring-annotation/tree/master/src/main/java/com/brian AnnotationCon ...
- MySQL 启动原理剖析
200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要从查看MySQL的启动命令的代码来详细了解MySQL的启动过程,内容 ...
随机推荐
- 20165324 实验二《Java面向对象程序设计》实验报告
20165324 实验二<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:何春江 学号:20165324 指导教师:娄嘉鹏 实验日期: ...
- fake-useragent,python爬虫伪装请求头
在编写爬虫进行网页数据的时候,大多数情况下,需要在请求是增加请求头,下面介绍一个python下非常好用的伪装请求头的库:fake-useragent,具体使用说明如下: 1.在scrapy中的使用 第 ...
- iOS开发之XMPPFramework开发基础介绍
1 使用iPhoneXMPP实例 2 修改xmppstream设置 3 基础协议的介绍 协议 协议简介 XEP-0009 在两个XMPP实体间传输XML-RPC编码请求和响应 XEP-0006 使能与 ...
- PHP中的错误信息
PHP中的错误信息 php.ini中配置错误消息 在PHP4中,没有异常 Exception这个概念,只有 错误Error.我们可以通过修改php.ini 文件来配置用户端输出的错误信息. 在ph ...
- Python面试题之Python生成器
首先说明一下生成器也是迭代器,也有迭代器的那些优点. 那为什么要生成器呢?因为到目前为止都 不是你写的迭代器,都是别人定义好的.那如何自己去造一个迭代器呢?下面的内容就会给你答案. 想要自己造一个迭代 ...
- Eclipse配置多个jdk
Eclipse配置多个jdk 步骤: 1,打开windows > Preferences: 2,点击“Add”,新增jdk,选择“Standard VM”: 3,下一步,选择对应版本的jer: ...
- 20145313张雪纯 《Java程序设计》第3周学习总结
20145313张雪纯 <Java程序设计>第3周学习总结 教材学习内容总结 4.1.1 定义类 package four; class Clothes{ String color; ch ...
- 20145329 《Java程序设计》课程总结
每周读书笔记链接汇总 •第一周读书笔记 http://www.cnblogs.com/jdy1453/p/5248592.html •第二周读书笔记 http://www.cnblogs.com/jd ...
- 20145335郝昊《java程序设计》第1次实验报告
2014535郝昊<java程序设计>实验1实验报告 实验名称 利用java语言实现凯撒密码,并运行测试. 实验内容 用java语言实现凯撒密码,凯撒密码是一种代替的移位密码,它将明文加密 ...
- ubuntu 12.04网络设置
1.服务器版本 设置IP地址 ubuntu 12.04的网络设置文件是/etc/network/interfaces,打开文件,会看到 auto lo iface lo inet loopback 这 ...