• Linux系统启动排错实验集合


    Centos6系统启动流程

          1. post  加电自检  检查硬件环境

          2. 选择一个硬件类型引导启动           mbr 446字节   grub  stage1 

          3. 加载boot分区的文件系统驱动  挂在/boot目录      grub  stage1.5

          4. 读取 /boot/grub/grub.conf   加载内核启动菜单     grub  stage2

          5. 加载vmlinuz内核  通过内核加载操作系统的 /  需要/boot/initramfs.img配合来加载根分区文件系统的驱动

          6. 启动操作系统根下的第一个进程 /sbin/init

          7. 通过启动第一个进程运行  rc.sysinit(系统初始化)脚本

          8. 读取 /etc/inittab 配置文件,设置系统启动级别

              各个启动级别的区别本质上就是在操作系统启动的时候设置哪些服务需要启动,哪些服务不需要启动.(不同服务的各种组合)

          9.运行 /etc/rc[0-6].d/[S,K]的脚本 ---->    link      /etc/init.d/

          10.运行 /etc/rc.local

          11.显示登录界面

    实验1:Boot目录下的文件全部被删除

     1.启动故障现象:

    2.重启系统的时候按F2,设置从光盘引导,进入救援模式

      

    3.启动救援系统后开启一个shell窗口

       1. chroot  /mnt/sysimage  &&  mkdir /mnt/cdrom

       2. mount /dev/sr0  /mnt/cdrom

           方法2:  rpm -ivh  /mnt/cdrom/Packages/kernel-2.6.32-el6.x86_46.rpm    --root=/mnt/sysimage/   --force

           这条命令会在/boot目录下自动生成内核文件和伪文件系统

           然后执行grub-install /dev/sda   和创建  grub.conf 文件即可         

       3.cp  /mnt/cdrom/isolinux/vmlinuz    /boot

       4. cd /boot && mkinitrd initramfs.img `uname -r`

       5.grub-install /dev/sda

       6.cd /grub    &&    创建一个grub.conf配置文件

          在grub文件夹中/表示的是boot目录所在的分区,不是指操作系统的根分区.

       

    7.exit     退出切根状态

    8.exit     退出shell窗口

    9.选择重启系统

       

    10.出现如下菜单

     

    结论:boot目录下的内核和伪根系统的文件名称可以不用加版本号,grub-install /dev/sda 不能生成grub.conf

    文件,这个文件必须手动创建

    实现2:同时删除boot目录和etc/fstab文件

      现象:进入救援模式后会出现无法挂载操作系统的/到/mnt/sysimage目录上

      

      1.fdisk -l  查看分区的详细信息

      2.手动挂载每个分区,查看分区里的数据,直到找到系统根所在的分区

      3.修复根分区中的/etc/fstab配置文件

      

      4.重启系统并重新进入救援模式,使救援系统能自动挂载根分区

      5.修复boot目录

    实验3:/sbin/init文件被损坏

      故障现象:

    进入救援模式系统

        1. mkdir /mnt/cdrom

        2. mount /dev/sr0  /mnt/cdrom

        3.rpm2cpio /mnt/cdrom/Packages/upstart-0.3.el6.x86_64.rpm | cpio -idv ./sbin/init       解压到当前目录

        4.cp  ./sbin/init     /mnt/sysimage/sbin

        5.exit

        6.reboot

    实验4:后台服务启动异常

          把启动模式切换到单用户模式,然后再去修改对应的服务脚本

      

    实验5:自定制Linux系统 

        1.给一块新磁盘分区                    fdisk  至少要分两个区

        2.给新创建的分区创建文件系统  mkfs.ext4    /dev/sdb1

        3.挂载boot 

                 mkdir     /mnt/boot       子目录必须为boot 

                 mount   /dev/sdb1      /mnt/boot

        4.安装grub 

               grub-install  --root-directory=/mnt /dev/sdb 

        5.复制内核和initramfs文件

            cp /boot/vmlinuz-2.6.32-642.el6.x86_64             /mnt/boot/   

            cp /boot/initramfs-2.6.32-642.el6.x86_64.img     /mnt/boot

       6.创建grub.conf 写入内核菜单信息

          vim /mnt/boot/grub.conf   

                title yxhlinux 

                root (hd0,0) 

                kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 

                selinux=0

                init=/bin/bash 

                initrd /initramfs-2.6.32-642.el6.x86_64.img

       7.创建一级目录 

            mkdir /mnt/sysroot  mount  /dev/sdb2   /mnt/sysroot 

            mkdir –pv /mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot, dev,mnt,media}

            复制bash和相关库文件

            复制相关命令及相关库文件    如:ifconfig,insmod,ping,mount,ls,cat,df,lsblk,blkid等

    实验6:内核编译  

      内核组成部分: 

           kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为 vmlinuz-VERSION-RELEASE 

           kernel object: 内核对象,一般放置于   /lib/modules/VERSION-RELEASE/  [ ]: N  [M]: M  [*]: Y 

           辅助文件:ramdisk   initrd   initramfs 

    实验7:逻辑卷启动配置文件损坏

          1.重启进入救援模式

          2.逻辑卷不能像分区那样直接挂载  救援模式无法自动激活逻辑卷,所有的逻辑卷处于非活动状态.

          3.  lvdisplay              查看当前系统上的逻辑卷详情

          4.  vgchange -ay      激活所有的逻辑卷

          5.  mount /dev/VolGroup/lv_root /mnt/rootfs       逻辑卷只有被激活后才能被成功挂载

          6. 修复/mnt/rootfs目录下的相关配置文件

    centos7 Systemd 介绍

        POST > Boot Sequence  >  Bootloader > kernel + initramfs > rootfs   > /sbin/init

        POST > Boot Sequence  >  Bootloader > kernel + initramfs > rootfs  这些和centos6启动方式一致

        /sbin/init 在centos7上做了一个软链接  把/sbin/init  指向了 systemd

        之所以系统启动后第一个进程的名字必须为/sbin/init  是因为在内核源码中编写成固定的字符串了

        systemd新特性:

              系统引导时候实现服务并行启动

              按需启动守护进程

              自动化的服务依赖关系管理

              同时采用socket式与D-Bus总线式激活服务

              系统状态快照

          

  • 相关阅读:
    证券公司业务部门深度全解
    转:ORM框架
    深入理解Java:注解(Annotation)基本概念
    Java与.net的区别delegate和event
    XML的四种解析器原理及性能比较
    转: LRU缓存介绍与实现 (Java)
    jquery -- checkbox选中无选中状态
    css -- 背景图片自适应屏幕大小
    javascript -- addEventListener()和removeEventListener
    html5 -- audio标签
  • 原文地址:https://www.cnblogs.com/yxh168/p/9028902.html
Copyright © 2020-2023  润新知