Linux系统启动原理及故障排除

Linux启动过程详解
影响启动的配置文件
常见的启动故障排除
救援模式的使用
Live CD的使用

Linux启动过程详解:
1:加载BIOS的硬件信息,跟据设定取得第一个可开机引导设置
2:读取硬盘中MBR的bootloader<grub.....>
    MBR详解
        名称:主引导扇区,主引导扇区
        位置:硬盘的0柱面,0磁头,1扇区
        大小:磁盘默认一个扇区大小为512字节,而MBR也是1个扇区,自然是512字节
        三部分组成:
            1:主引导程序(bootloader) 占446字节
                主引导程序,它负责从活动分区中装载,并运行系统引导程序
            2:Partition table区(分区表),即DPT,占64个字节
                硬盘中分区有多少以及每一分区的大小都记在其中。
                每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
            3: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 程序,最后就等待用户登入啦;

——————————————————————————————————————————————————————————————————————————————————————————————————————
开机自检(BIOS)————>MBR引导————>GRUB菜单————>加载内核(kernel)————>运行INIT进程
————>读取/etc/inittab配置文件
        --->执行/etc/rc.d/rc.sysinit脚本
        --->执行/etc/rc.d/rc脚本
            --->/etc/rc0.d/*
            --->/etc/rc1.d/*
            --->/etc/rc2.d/*
            --->/etc/rc3.d/*
            --->/etc/rc4.d/*
            --->/etc/rc5.d/*
            --->/etc/rc6.d/*
        --->启动mingetty进程
——————————————————————————————————————————————————————————————————————————————————————————————————————————

Linux启动相关的配置文件
在init3级别下启用图形界面:startx
从init3-->init5进入图形界面需要重启服务,用户重新登陆

RHEL6系统启动相关配置文件

BIOS

/boot/grub/grub.conf-->bootloader 加载kernel
    [[email protected] ~]# vim /boot/grub/grub.conf

/etc/inittab--> 判断启动级别
        systemctl -f enable multi-user.target    RHEL7:
    [[email protected] ~]# 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)
    #
    id:5:initdefault:   #这个代表我当前启动级别是5,可以改成3

/etc/rc.d/rc.sysinit-->系统初始化: 像:主机名 和/etc/fstab 都在这里指定了..
    执行rc.sysinit 完成了包括mount分区 激活swap 加载modules等重要的工作.

/etc/rc.d/rc[1-6].d -->(这里的程序/服务S开头的全部开机执行;K开头的开机不执行)
    rc[1-6].d:对应于不同的runlevel下起不同的服务. 这些目录下都
    是一些符号连接, 连接到/etc/rc.d /init.d下的一些文件.以S开头的表示要启动, 以K
    开头的不启动. 第一个字母后面的数值是一个优先级. 
       
        试着查看下network的启动级别
            [[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]# ls *network*
S10network
[[email protected] rc3.d]# chkconfig --list network
network             0:off     1:off     2:on     3:on     4:on     5:on     6:off

[[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
#说明,如果在此级别下开机启动,就不再显示其关机顺序了

如果系统启动启动级别被恶意改成0或6,进入单用户模式修改默认启动级别就行

/etc/rc.local-->设置开机自动执行某个命令
    比如:设置开机自动挂载光盘,自动开启某服务
        [[email protected] rc.d]# vim /etc/rc.local
        [[email protected] rc.d]# ll /etc/rc.local
        lrwxrwxrwx. 1 root root 13 Apr 10 07:06 /etc/rc.local -> rc.d/rc.local
        #为链接文件

运行mingetty,打开tty1-6
[[email protected] ~]# ps -aux |grep mingetty
Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ
root       2156  0.0  0.0   4064   536 tty2     Ss+  09:22   0:00 /sbin/mingetty /dev/tty2
root       2158  0.0  0.0   4064   532 tty3     Ss+  09:22   0:00 /sbin/mingetty /dev/tty3
root       2160  0.0  0.0   4064   532 tty4     Ss+  09:22   0:00 /sbin/mingetty /dev/tty4
root       2163  0.0  0.0   4064   536 tty5     Ss+  09:22   0:00 /sbin/mingetty /dev/tty5
root       2165  0.0  0.0   4064   536 tty6     Ss+  09:22   0:00 /sbin/mingetty /dev/tty6
root       4278  0.0  0.0 103256   840 pts/1    S+   15:35   0:00 grep mingetty
       
————————————————————————————————————————————————————————————————————————————————————————
防止密码被破解
    我们都知道进入单用户模式可以破解root密码,怎么防止被破解呢?
    那只能加密grub
    怎么加密grub?我们练习下就知道了
        首先把你想设的密码使用md5加密成密文
            [[email protected] ~]# grub-md5-crypt
            Password:
            Retype password:
            $1$wQfpC$a5wf2zGhDyLdz.wkH6KXg0  #这个就是加密后的密文
        然后我们把密码添加到grub配置文件中去
            [[email protected] ~]# vim /boot/grub/grub.conf
            #boot=/dev/sda
            default=0
            timeout=5
            splashimage=(hd0,0)/grub/splash.xpm.gz
            hiddenmenu
         lock
            password --md5 $1$wQfpC$a5wf2zGhDyLdz.wkH6KXg0
            title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
            root (hd0,0)
         ....
         lock
     lock锁定系统,不能启动

最后重启测试下(reboot)
   重启时在grub引导菜单按p键输入密码后才能进入grub编辑模式
____________________________________________________
进入救援模式

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

挂载安装系统的光盘
    重启
    F2进入虚拟机bios设置,设置从光盘启动,F10保存
    进入光盘引导界面,选择Rescue Install system这项
    会加载ramfs:内存文件系统
    chroot  /mnt/sysimage   # 切换文件系统根
    挂载其他存储设备,拷贝数据
   
————————————————————————————————————————————————————————
常见系统故障解决方案:
    1:忘记root用户的密码
解决方法:重启系统进入单用户模式,然后重设密码
grub界面按任意键,干预启动过程。
e按键,编辑启动时内核接收的选项,增加“1”。
enter和b按键,按照修改过的选项启动操作系统。
把下图中的x去掉,然后reboot 就可以,再次使用root进入密码,就不需要输入密码
进入系统passwd就可以修改root。

2::磁盘资源耗尽故障
        1、:无法写入新的文件,提示“… : 设备上没有空间”
        2、:部分程序无法运行,甚至系统无法启动
        故障原因
            1:磁盘空间已被大量的数据占满,空间耗尽
            2:虽然还有可用空间,但文件数i节点耗尽
        解决方案:
             1. 清理磁盘空间,删除无用、冗余的文件
             2 .转移或删除占用大量i节点的琐碎文件
             3. 进入单用户模式、救援模式进行修复或删除文件

3:双系统启动修复
        安装windows,linux双系统建议先装windows,再装linux

故障:
            当我们安装双系统环境,先安装Linux再安装Windows或
            经安装好双系统环境的Windows损坏,在重新安装Windows后,
            保存 GRUB的MBR(Master Boot 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引导的双系统启动。
           
           
    也可以借用livecd处理故障,如:再生龙
           
         mbr备份与恢复

备份mbr :dd if=/dev/sda of=/tmp/mbr bs=512 count=1
          破坏mbr:  dd if=/dev/zero of=/dev/sdb bs=512 count=1
          恢复mbr:  dd if=/tmp/mbr of=/dev/sdb bs=512  count=1

时间: 2024-11-04 21:18:55

Linux系统启动原理及故障排除的相关文章

Linux下的系统启动原理及故障排除

Linux下的系统启动原理及故障排除 一:实验环境 1):虚拟机 2):linux系统环境 二:实验目标 1):理解Linux启动过程详解 2):理解影响启动的配置文件 3):常见的启动故障排除 4):救援模式的使用 三:实验步骤 第一块 Linux启动过程详解 1. 加载 BIOS 的硬件信息,跟据设定取得第一个可开机引导设置,如:光驱,硬盘,网络,USB: 如果是硬盘为第一引导. 2. 读取硬盘中 MBR 的 bootLoader (亦即是 grub,Lilo 等程序): 硬盘的0柱面.0磁

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

PROFESSIONAL SQL SERVER? 2012 INTERNALS AND TROUBLESHOOTING一书(可从这里下载),觉得内容很不错.自己也想对SQL Server 2012有个较全面的理解,于是边看边翻译,并将重点内容发表在博客中.下面是相关博客的链接,希望能够给大家带来一点帮助.因个人能力有限,若有翻译不妥之处,欢迎指正和交流! 第一部分  内部原理(INTERNALS) 第一章 SQL Server 架构 数据库事务:          http://blog.csd

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 ======

系统启动过程以及故障排除

系统的启动过程 1.加电----CMOS----post(上电自测试程序)----- grub(早期的时候使用的是lilo) Grub的第一阶段主要起到一个引导MBR中的446B.第二阶段在硬盘上,主要是一个配置. 对于任何一种操作系统,任何一台机器,刚开始的时候,肯定是要进行加电的,加完电之后在主板上有一个叫CMOS的芯片,CMOS里面有一个程序,这个程序叫post上电自测试程序.它能够对硬件来完成一些自检,比如,在机器里面内存有多大,CPU是哪一种型号的,声卡.显卡,所以这个叫上电自测试.

RHEL6启动原理和故障排除

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

linux学习笔记——grub故障排除

注:本文为本人学习笔记,故只代表本人的理解,如有错误,请见谅并欢迎指正 1.grub简介 详细描述请自行搜索网络,非常多.这里只简单引用网络上的描述.grub是电脑的启动管理程序.是 计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成. Linux下除了Grub,还有LILO等,windows环境还有其他相关软件. 2.grub的常见故障 a.grub.c

九、Linux系统安装和常见故障排除

一.软件安装:源码与tarball 什么是开发源码 可以随意修改的经由文本编辑器编辑的纯文本文件就是开发源代码. 可执行文件通常为二进制文件. 查看文件类型:file [[email protected] kernels]# file /bin/rm /bin/rm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.

linux网络配置及故障排除(虚拟机)

ip地址配置VM Virtualbox的网卡配置文件和VM ware的不同,如下vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 默认没有vim,配置好网络后使用yum安装即可 配置项说明 TYPE=Ethernet 网络类型,默认以太网BOOTPROTO=static IP获取模式,dhcp动态,static静态配置DEFROUTE=yes PEERROUTES=yesIPV4_FAILURE_FATAL=noNAME=enp0s3 网卡配置文件名

Linux启动原理

Linux系统启动原理 #!此文章参考某godedu,用于复习查看 centos6系统 centos6系统启动过程 1. 加载 BIOS 的硬件信息,跟据设定取得第一个可开机引导设置,如:光驱,硬盘,网络,USB: 如果是硬盘为第一引导. 2. 读取硬盘中 MBR 的 boot Loader 就是 grub引导 GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序. MBR的硬盘的0柱面.0磁头.1扇区称为主引导扇区(也叫主引导记录