CetnOS6启动流程以及LVM下的fstab及boot恢复实验

centos6启动流程

  1. 主动读取BIOS,通过CMOS加载硬件信息 ,并进行POST,指定第一个可启动的设备

    ROM:BIOS,Basic Input and Output System,保存着计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序
    RAM:保存各项参数的设定

  2. 读取第一个可启动设备MBR的引导加载程序(grub)的启动信息

    • MBR: 446 boot loader 64:分区表 2 :55aa

      • BIOS通过硬件的INT13中断功能来读取MBR的
    • Windows:ntloader 仅是启动OS
      Linux: 提供菜单; 转交系统控制权; 直接指向内核文件

      1. LILO:LInuxLOader
      2. GRUB: GRandUnified Bootloader

        • primary boot loader:1st stage,1.5stage
        • secondary boot loader:2 stage,分区文件

          bootloader的1stage是在MBR内进行的,1.5stage是再0面0磁道0扇区的后续扇区,2stage是在/boot分区上边
          1stage是 寻找/boot分区的文件系统驱动
          1.5stage内就是/boot分区文件系统驱动,识别/boot分区
          2stage是/boot分区相关操作
          /boot/grub下的stage类文件(除了stage2)都是备份

    • ramdisk:使用缓存或缓冲来加速对磁盘上文件的访问

      • centos5:initrd 工具程序:mkinitrd
        centos6:initramfs 工具程序:mkinitrd,dracut\

        自己创建initramfs文件
        mkinitrd [-v] [-with=模块名称] initrd文件名 内核版本

        -v 显示mkinitrd的过程
          --with=[模块名称]:模块名称指的是模块的名字,不需填写文件名
                  如果在救援模式下,需要切根,因为救援模式下好多库文件不存在
    • 解压缩内核到内存中,

      加载可识别的所有硬件设备(以自己的功能重新检查一次硬件,不一定适用BIOS的检测结果)
      加载硬件驱动
      以只读方式挂载根系统
      运行用户空间的第一个程序:/sbin/init

    • 内核内容

  3. 内核执行init程序,获取默认运行信息

    • init程序类型:

      • SysV: init, CentOS 5之前
        配置文件:/etc/inittab
      • Upstart: init,CentOS6
        配置文件:/etc/inittab, /etc/init/*.conf
      • Systemd:systemd, CentOS 7
        配置文件:/usr/lib/systemd/system;/etc/systemd/system
    • 运行级别,为系统运行或者维护等目的而设定;0-6,7个级别

      0 系统直接关机
      1 单用户模式下,用在系统出问题时的维护
      2 类似下面的runlevel 3,但无NFS服务
      3 纯文本模式;多用户模式
      4 系统保留功能;与上面的runlevel 3基本没有差异
      5 图形界面
      6 重新启动
      切换等级:init #
      查看等级: runlevel who -r

    • /etc/inittab文件相关知识

      • 每一行定义一种action以及与之对应的process
      • id : runlevel : action : process

        id:代表init的主要工作选项,只是简单代表说明
        runlevel:在那些等级下运行
        action: initdefault:代表默认的runlevel设置值
        sysinit:代表系统初始化的操作选项
        ctrlaltdel:代表ctrl+alt+del三个按键是否可以重新启动
        wait:代表后面设置的命令项目必须要执行完毕才能继续下面的其他操作
        respawn:代表后边字段的命令可以无限制的重新启动
        process:可以进行的命令

          ca::ctrlaltdel:/sbin/shutdown -t3 -r now
          id:3:initdefault:
          si::sysinit:/etc/rc.d/rc.sysinit
          l0:0:wait:/etc/rc.d/rc0
          l1:1:wait:/etc/rc.d/rc1
          1:2345:respawn:/sbin/mingetty tty
          x:5:resawn:/etc/prefdm -nodaemon  x window 则是这行决定的
      • /etc/init/*.conf

  4. init程序执行/etc/rc.d/rc.sysinit文件

    取得网络环境与主机类型:/etc/sysconfig/network
    设置显示与启动过程中的欢迎界面(textbanner)
    检查根文件系统,并以读写方式重新挂载根文件系统
    挂载/etc/fstab文件中定义的文件系统
    设置系统时间:读入/etc/sysconfig/clock设置值 修改时区的话,把/user/share/zoneinfo/Asia Shanghai复制到/etc/local下
    激活udev和selinux
    激活swap设备
    初始化软件磁盘阵列、初始化lvm文件系统、、磁盘配额
    加载内核相关设置:/etc/sysctl.conf
    用户自定义模块加载:/etc/sysconfig/modules.conf设置
    清除启动过程中产生的临时文件
    将启动相关信息加载到/var/log/dmesg中

  5. 启动核心的外挂模块/etc/modeprobe.conf文件

  6. init执行各个批处理文件

    • 各个运行级别脚本所在目录:

      /etc/rc.d/rc 0.d
      /etc/rc.d/rc 1.d
      /etc/rc.d/rc 2.d
      /etc/rc.d/rc 3.d
      /etc/rc.d/rc 4.d
      /etc/rc.d/rc 5.d
      /etc/rc.d/rc 6.d

    • 脚本文件运行规则:
      进入到某个运行级别的脚本目录/etc/rc.d/rcN.d

      k: k##: ##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
      s: S##:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务
      s开头的文件,运行
      k开头的文件,关闭

    • chkconfig命令详解

      1. 查看服务所在级别的启动或关闭情形
        chkconfig [–list] name
        添加服务给chkconfig管理

      2. SysV的的服务脚本放置于/etc/init.d
        chkconfig –add name

      3. 服务脚本格式信息

        \# chkconfig:   345 95 5    #345表示在3,4,5模式下为开启,95为S95,5为K5
         \# description:                #描述,在CentOS5必须加上,在CentOS6以及之后的版本可不加
      4. 删除
        chkconfig –del name

      5. 修改制定的链接类型
        chkconfig [–level levels] name 
        –level LLLL:省略是表示2345

    • 图形化界面ntsysv命令
  7. init执行/etc/rc.d/rc.local

    正常情况下,最后启动一个服务S99local没有链接至/etc/init.d下的脚本,而是指向了/etc/rc.d/rc.local脚本
    不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中

  8. 执行/bin/login程序,等待用户登录

    1:2345:respawn:/usr/sbin/mingettytty1
         2:2345:respawn:/usr/sbin/mingettytty2
         ...
         6:2345:respawn:/usr/sbin/mingettytty6
         mingetty会自动调用login程序
         x:5:respawn:/etc/X11/prefdm -nodaemon
  9. 登录后以shell控制主机

    BIOS加载硬件信息–》post加电自检–》加载MBR里grub信息–》stage1.5–》stage2–》initramfs–》 rootfs–>init–>/etc/inittab–>设置默认运行级别–>初始化/etc/rc.d/rc.sysinit–>/etc/rc.d/rc#.d–>/etc/rc.local

  10. 补充:

    xinetd管理的服务

    • Linux中,可以将一些不常用的服务先关闭,当有人访问服务的时候激活这些服务,而没有人访问的时候就关闭,这个服务就是 xinetd 服务,也叫做超级守护进程,它是一个独立服务,必须启动。而依赖 xinetd 服务的服务,叫做非独立服务。注意:非独立服务和运行模式没有关系。而非独立服务下,也就是xinetd服务所管理的服务,如果显示为off状态,那么xinetd服务无法将其唤醒。而当其显示为on状态,这个服务将能被xinetd服务唤醒:

      chkconfig --list #查看xinetd服务
       chkconfig 服务名称 on #启动这个服务(这一步相当于修改了它的配置文件,还需要激活才能生效 )
       service xinetd start #激活xinetd服务
    • /etc/xinetd.d/是xinetd的配置文件,它下面存放了依赖于xinetd服务的配置文件,而chkconfig –list所查看到的xinetd中的所有服务都是从这个目录中的配置文件读出的:

      拿telnet服务来所:
        vim /etc/xinetd.d/telnet
            disable = no        #表示不禁用,等于yes表示禁用
    • 注意,在CentOS5,6中是区分独立服务和非独立服务的,而在CentOS7中全部都是非独立服务
    • service命令:手动管理服务

      service 服务 start|stop|restart
        service --status-all
    • 瞬态(Transient)服务被xinetd进程所管理
      进入的请求首先被xinetd代理
      配置文件:/etc/xinetd.conf、/etc/xinetd.d/
      与libwrap.so文件链接
      用chkconfig控制服务

      chkconfig tftp on

实验

  • 删除挂载在逻辑卷的根下的/etc/fstab配置文件以及/boot/目录下的文件
  • 新手上路,使用mv替代rm,cp备份
  • mv /etc/fstab /root/fstab #fstab文件移动到root家目录下的fstab中

              mkdir /root/boot && mv /boot/* /root/boot        #将boot下的所有文件移动到家目录下的boot中(boot需要创建)
              sync*3                                #同步数据到磁盘
              reboot                                #重启
              进入救援模式
              df                                    #查看挂载,发现并没有被挂载!
              [](http://i.imgur.com/RMtLBfO.png)
              ls /dev/mapper    &&                    #mapper是所有LVM存放的地方,我们可以查看有没有逻辑卷存在
              lvdisplay                        #使用lvdisplay命令查看LVM状态,发现都是不可用状态,并且很用容易看出根目录在哪个逻辑卷中
              vgchage -ay                            #激活vg,也就是激活逻辑卷
              lvdisplay                            #再次确认LVM状态
              ls /dev/mapper                        #查看LVM设备
              mount /dev/mapper/VolGroup-lv_root /mnt/sysimage        #根据查看到的信息将根挂载到/mnt/sysimage(sysimage可以是其他挂载点)下
              cd /mnt/sysimage                    #切换到操作系统根目录下
              ls                                    #查看是否是操作系统根目录
              vi etc/fstab                    #在当前目录下的etc下创建fstab文件,注意是当前目录而不是/
                  :r! ls /dev/mapper        #在末行模式下使用r!读取出LVM的名字
                  /dev/sda1  /boot  ext4  defaults 0 0
                  /dev/mapper/VolGroup-lv_root  / ext4 defaults 0 0
                  /dev/mapper/VolGroup-lv_swap swap  swap  defaults 0 0    #注意,所有的LVM信息都需要写入
                  wq            #保存退出
              sync*3        #同步磁盘,sync输入三次
              exit        #退出bash,进入菜单reboot重启,必须退出重启
              进入救援模式
              chroot    /mnt/sysimage/    #切根
              mount /dev/cdrom /mnt    #挂载光盘到/mnt
              rpm -ivh /mnt/Packages/kernel-2.6.32-642.e16.x886_64.rpm --force    #安装kernel包
              ls /boot        #查看boot下文件是否恢复
              grub-install /dev/sda    #修复grub
              退出并重启
              在grub后输入
              kernel /vmlinuz-2(tab补全) root=/dev/mapper/VoGroup-lv_root selinux=0
              initrd /init(tab补全)
              boot    #启动
              #注意,修复grub.conf文件时临时有效,如果想永久修复需要重新编辑/boot/grub/grub.conf
                  default=0
                  timeout=5
                  title CentOS68
                      kernel (hd0,0)/vmlinuz-.... ro root=/dev/vg0/root 
                      initrd /initramfs-...img

原创文章,作者:半斤八两,如若转载,请注明出处:http://www.178linux.com/75355

(0)
半斤八两半斤八两
上一篇 2017-05-13
下一篇 2017-05-13

相关推荐

  • 进程管理,计划任务

    一、进程相关概念及系统管理工具     进程概念         内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等         P…

    Linux干货 2016-09-18
  • Linux系统发展史

    引言:     Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具…

    Linux干货 2016-10-19
  • 导读谷歌三大核心技术之一 GoogleFileSystem(一)

    GoogleFileSystem设计构想 为满足Google数据处理的需求,Google工程师设计并实现了GoogleFileSystem(GFS)。GFS与传统分布式文件系统类似,也需要满足高性能、可伸缩性、可靠性以及可用性。与传统分布式文件系统思路不不同的是: GFS认为组件失效是常态而非意外,GFS由大量廉价设备组成 文件数量异常巨大 绝大部分文件修改…

    Linux干货 2017-05-07
  • 推荐-LVS原理详解

    LVS原理详解 LVS原理详解 LVS简介 LVS结构与工作原理 一.LVS的结构 二.LVS内核模型 三.LVS的包转发模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的调度算法 LVS的调度算法分为静态与动态两类。 1.静态算法(4种):只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况 2.动态算法(6种):前端的调度器…

    Linux干货 2016-03-27
  • 浅谈编译kernel+busybox构建拥有远程ssh登录和web功能最小linux系统(一)

    实验环境win7+VM11.1 大致过程总揽 1,硬件准备以及查看硬件设备型号(不用担心,这些都是VM虚拟出来的) 2,编译环境的配置以及下载内核源码以及编译内核 3,编译busybox,以及提供系统正常运行的配置文件,初步运行linux系统 4,编译安装dropbear提供ssh服务 5,安装nginx;提供web服务 一,硬件准备以及查看硬件设备型号 由…

    Linux干货 2015-09-22
  • 进程管理工具:ps,top,htop,dstat

    进程列表查看,系统资源使用情况查看,比如CPU占用情况,内存使用情况,网络IO,硬盘IO等等。本文介绍的几款工具帮您实现。 进程是指运行中的程序的一个副本,进程的有关信息映射在/proc/#下,ps等工具通过加工/proc/下文件而显示出进程列表。 linux内核属于抢占式多任务式,内核将CPU处理时间按时间片分配给各个进程,这里有一个优先级的问题,优先级越…

    Linux干货 2016-09-22