【学神-RHEL7】1-22-RHEL6启动原理和故障恢复

本节所讲内容:

Linux启动过程详解

影响启动的配置文件

常见的启动故障排除

救援模式的使用

Live CD的使用

 

本节课的所有操作在RHEL6操作系统中完成

Linux启动过程详解

1.    加载BIOS 的硬件信息,跟据设定取得第一个可开机引导设置,如:光驱,硬盘,网络,USB; 如果是硬盘为第一引导。

大白菜,  老毛桃   ,电脑店

 

 

2. 读取硬盘中 MBR 的 bootLoader (亦即是 grub,Lilo 等程序);

 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。

16*4+446+2=512

注:磁盘默认一个扇区大小为:512字节。

在总共512字节的主引导扇区

第一部分是:主引导程序(boot loader)占446个字节。主引导程序,它负责从活动分区中装载,并运行系统引导程序。

第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。

第三部分是MBR有效标识位,占2个字节,固定为55AA。如果这个标志位0xAA55,就认为这个是MBR。

 

GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。

 

3. 依据 boot loader 的设定,到引导分区加载 Kernel ,Kernel 会开始侦测硬件并加载驱劢程序;  

4. 在硬件驱动成功后,Kernel 会主动执行 init 程序,而 init 会取得run-level 信息;

5. init 执行 /etc/rc.d/rc.sysinit 文件来准备软件执行的作业环境(如网络、时区等);

6. init 执行 run-level 下各个服务并启动 (script 方式);

7. init 执行开机后自动运行脚本 /etc/rc.d/rc.local 文件;

8. init 执行虚拟终端机控制程序 mingetty 来启动 login 程序,最后就等待用户登入啦;

如图:

 

Linux启动相关的配置文件

在init3 级别下启动图形界面: startx

init 3 - 》init 5 ,需要重启服务

 

系统启动EL6

   BIOS

bootloader(GRUB或 lilo)

[[email protected] ~]# vim/boot/grub/grub.conf

[[email protected] ~]# ll/etc/grub.conf

lrwxrwxrwx. 1 root root 22 Oct21 03:01 /etc/grub.conf -> ../boot/grub/grub.conf

 

判断启动级别:

[[email protected] ~]# vim/etc/inittab

# Default runlevel. Therunlevels 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)

#

id:3:initdefault:

 

/etc/rc.d/rc.sysinit(系统初始化: 像:主机名 和/etc/fstab  selinux都在这里指定了...)

执行rc.sysinit 完成了包括mount分区激活swap 加载modules等重要的工作.

 

启动对应级别下的服务如: init 3 级别

/etc/rc.d/rc3.d/(这里的程序/服务S开头的全部开机执行;K开头的开机不执行)

rcn.d (n为1到6) 是对应于不同的runlevel下起不同的服务. 这些目录下都 
是一些符号连接, 连接到/etc/rc.d /init.d下的一些文件.以S开头的表示要启动, 以K开头的不启动. 
第一个字母后面的数值是一个优先级.

 

例:

[[email protected]]# vim/etc/init.d/network

#!/bin/bash

#

#network       Bring up/down networking

#

# chkconfig:2345  10         90
看有chkconfig的那一行, 2345表示在runlevel 2 3 4 5下被启动, 10是为此服务的启动顺序, 90为关

 

[[email protected] rc3.d]# ls*network*

S10network

[[email protected] rc3.d]#chkconfig network off

[[email protected] rc3.d]#chkconfig --list network

network            0:off       1:off       2:off       3:off       4:off       5:off       6:off

[[email protected] rc3.d]# ls*network*

K90network

#说明,如果在此级别下开机启动,就不再显示其关机顺序了

 

所有服务都运行成功后

设置开机自动执行某个命令: /etc/rc.local

[[email protected]~]# vim /etc/rc.local

[[email protected]~]# chkconfig httpd on

[[email protected]~]# ll /etc/rc.local

lrwxrwxrwx. 1root root 13 Apr  8 02:29 /etc/rc.local-> rc.d/rc.local

[[email protected]~]# ll /etc/rc.d/rc.local

-rwxr-xr-x. 1root root 240 Jul 23 21:16 /etc/rc.d/rc.local

 

运行mingetty,打开tty1-6

[[email protected]~]# ps -aux | grep ming

Warning:bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ

root      2245 0.0  0.0   4064  580 tty2     Ss+  20:48  0:00 /sbin/mingetty /dev/tty2

root      2247 0.0  0.0   4064  576 tty3     Ss+  20:48  0:00 /sbin/mingetty /dev/tty3

root      2249 0.0  0.0   4064  580 tty4     Ss+  20:48  0:00 /sbin/mingetty /dev/tty4

root      2251 0.0  0.0   4064  576 tty5     Ss+  20:48  0:00 /sbin/mingetty /dev/tty5

root      2253 0.0  0.0   4064  576 tty6     Ss+  20:48  0:00 /sbin/mingetty /dev/tty6

root      3004 0.0  0.0 103244   864 pts/0   S+   21:17   0:00 grep ming

 

[[email protected]~]# runlevel

N 5

 

进入单用户模式,破解root密码。如果防止破解root密码?

加密grub,不让别人破解root密码:

[[email protected]~]# grub-md5-crypt

Password:

Retypepassword:

$1$ehxiQ$tOBQyT3HRKHCxONd/oU3g.

 

[[email protected]~]# vim /boot/grub/grub.conf

 

重启测试: 

编辑grub时,需要按下p键,然后输入密码:123456

 

进入救援模式:

例:当系统坏了,进不去了。  进入救援模式拷贝数据

以光盘引导:

 

 

ramfs  : 内存文件系统

chroot  /mnt/sysimage   # 切换文件系统根

系统故障,忘记root用户的密码

解决方法:重启系统进入单用户模式,然后重设密码

grub界面按任意键,干预启动过程。

e按键,编辑启动时内核接收的选项,增加“1”。

enter和b按键,按照修改过的选项启动操作系统。

把下图中的x去掉,然后reboot 就可以,再次使用root进入密码,就不需要输入密码。

进入系统passwd就可以修改root。

例3:磁盘资源耗尽故障

1、:无法写入新的文件,提示“… :设备上没有空间”

2、:部分程序无法运行,甚至系统无法启动

 

故障原因:

         one :磁盘空间已被大量的数据占满,空间耗尽

         two :虽然还有可用空间,但文件数i节点耗尽

解决方案:

             1.清理磁盘空间,删除无用、冗余的文件

             2.转移或删除占用大量i节点的琐碎文件

             3.进 入单用户模式、救援模式进行修复或删除文件

例4:

双系统启动修复

当我们安装双系统环境,先安装Linux再安装Windows;;或者已经安装好双系统环境的Windows损坏,在重新安装Windows后,保存 GRUB的MBR(MasterBoot Record,主引导记录)会被Windows系统的自举程序NTLDR所覆盖,造成Linux系统无法引导。

1、如果要恢复双系统引导,首先用上述方法进入救援模式,执行chroot命令如下:

sh-4.1#chroot /mnt/sysimage

2、将根目录切换到硬盘系统的根目录中,然后执行grub-install命令重新安装GRUB:

sh-4.1#grub-install  /dev/sda

3、然后依次执行exit命令,退出chroot模式及救援模式(执行两次exit命令):

sh-4.1#exit

sh-4.1#reboot

 

系统重启后,将恢复GRUB引导的双系统启动。

 

live cd    300M左右  iso 。

大白菜     

 

学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589

 

时间: 2024-10-11 07:46:22

【学神-RHEL7】1-22-RHEL6启动原理和故障恢复的相关文章

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启动原理和故障排除

1.1-Linux启动过程详解 1.2-常见的启动故障排除                  1.2-1 实战-防止黑客破解root密码                  1.2-2 实战-服务器挂机,转移数据                  1.2-3 实战-修复磁盘I节点耗尽                  1.2-4 实战-磁盘坏道检测 一 .Linux启动过程详解 其实就是转交系统控制权的过程 Linux操作系统的引导过程中一般包括一下几个步骤 开机自检àMBR引导àGRUB菜单à加

【学神-RHEL7】1-23-RHEL7启动配置

本节所讲内容: RHEL7 启动配置   MBR保存着系统的主引导程序(grub 446字节,分区表64字节),启动过程就是把内核加载到内存.   启动的顺序: 1.BIOS: 2.BIOS激活MBR: 3.MBR中的引导程序(grub)加载到内存,生成一个微系统(如xfs): 4.grub 读取分区表,找到引导分区: 5.grub读取自身的配置文件,找到内核文件 6.加载内核文件:   RHEL7中第一个启动进程不在init进程 [[email protected] ~]#pstree -p

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

大纲: RHEL7启动原理 RHEL7服务启动配置 网络概述 发布内网服务器 ############################################################ RHEL7启动原理: BIOS自检--->MBR--->GRUB--->加载内核--->systemd的init进程--->login systemd的初始化进程 作用:加载所需的服务和用户空间工具,挂载文件系统/etc/fstab systemd是linux内核启动的第一个进程

【学神-RHEL7】1-16-RAID5和RAID10创建&LVM管理

本节所讲内容: RAID5.RAID10配置 RAID删除   建立RAID5 1)     创建RAID5 2)     停止阵列,重新激活阵列 3)     再添加新的1G热备盘,扩展阵列容量,从3磁盘个扩展到4个 实验环境: sde1,sde2,sde3,sde5,sde6 个主分区  每个1G   [[email protected] ~]# ll/dev/sde* brw-rw---- 1 root disk8, 64 Dec 12 20:35 /dev/sde brw-rw----

Linux零基础入学之1-3 RHEL7基本命令操作和启动级别设置

§Linux零基础入学之1-3 RHEL7基本命令操作和启动级别设置 [本节内容] *Linux终端介绍 *shell提示符 *Bash shell基本语法 *基本命令的使用:ls.pwd.cd *查看系统折BIOS设置 *Linux如何获得帮助 *Linux关机命令:shutdown.init 0等 *Linux 7个启动级别 *设置服务器在来电后自动开机 [Linux终端介绍] tty    控制台终端 pts    代表虚拟终端 tty1-tty6 > 刚进入的图形界面(桌面)为tty1

iOS核心笔记——iOS应用程序启动原理

1.iOS应用程序启动示例图: 2.应用程序启动原理: 2-1.不通过storyboard文件启动: 执行main函数: 执行main函数中的UIApplicationMain函数,创建UIApplication对象,创建ApplicationDelegate对象并将其设置为UIApplication对象的代理: 程序启动完毕,开启消息循环(Main RunLoop).监听事件并调用注册方法:接着调用代理的application:didFinishLaunchingWithOptions:方法:

Spring Boot启动原理解析

Spring Boot启动原理解析http://www.cnblogs.com/moonandstar08/p/6550758.html 前言 前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面纱,让它不在神秘. 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 从上面代码可以看出,Annotation定义(@Sp

iOS程序启动原理是什么

当刚开始学习ios开发的时候,我们学会做的第一件事就是创建一个新的项目.每次我都会好奇,为什么我们选择创建一个Single View Application项目的时候,什么代码都不用敲就可以在模拟器上运行程序了.要解答这个问题需要明白一点程序的启动原理,看完之后你就会明白. 首先,建立一个Single View Application项目以方便我们的研究.可以明确的是,不论是C语言还是Objiective-C语言程序,程序运行的入口都是main函数.所以我们从main函数开始入手. 创建新项目