zoukankan      html  css  js  c++  java
  • 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的相关 信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等等

    image

    这就是我们的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

    image

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

    如下:

    # 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等等。

    image

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

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

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

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

    image

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

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

    image

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

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

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

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

    二、常见启动故障排除:

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

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

    第一步:生成密文密码

    grub-md5-crypt

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

    image

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

    修改前:

    image

    修改后:

    image

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

    init 6 重启,看下效果

    GRUB加密效果:

    image

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

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

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

    image

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

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

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

    image

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

    image

    进入如下界面:

    image

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

    image

    image  image

    最后进入如下界面:

    image

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

    chroot /mnt/sysimage

    image

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

    vim /boot/grub/grub.conf

    image

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

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

    使用上一步骤

    3、inode结点满了怎么办

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

    4、双系统,更新grub

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

    grub-install /dev/sda

    即可!!!

    5、磁盘坏道检测

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

    image

    为啥会进入这个界面

     

  • 相关阅读:
    LVS实现负载均衡原理及安装配置 负载均衡
    Jexus-5.6.3使用详解
    公共笔记
    net 网站过滤器 mvc webapi
    WebApi 生成帮助文档及顺便创建简单的测试工具
    Dapper.NET——轻量ORM
    C# Entity Framework并发处理
    linq 日常关键字使用
    解决nginx负载均衡的session共享问题
    table中实现数据上移下移效果
  • 原文地址:https://www.cnblogs.com/xiaogan/p/5808880.html
Copyright © 2011-2022 走看看