启动流程排错和自建linux系统

一、grub的配置文件/boot/grub/grub.conf

default=0        ###设置默认启动项0表示第一个
timeout=5        ##设置超时时间,如果超过5s用户没有操作,则默认启动第一个
splashimage=(hd0,0)/grub/splash.xpm.gz        ###设置选择内核界面的图片
hiddenmenu
password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/        ###选择内核界面,进入"a","e","c"模式需要登录的密码
title CentOS 6 (2.6.32-642.el6.x86_64)        ###选择内核界面处的提示信息
        root (hd0,0)        ###相对于grub的根路径
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=8ecfb3ed-37d8-43cd-a1ec-8a4be6fa5973 nomodeset rd_NO_LUKS  
        KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet  ax_loop=100       
              ###内核的核心文件,如果boot没有独立分区则需要写成/boot/vmlinuz.....ro只读挂载(系统启动后会重新挂载rw)
              ###root=***指明根,后面的都是配置的其他额外辅助功能可省略。
             ###ax_loop=100定义最大的loop设备为100个(默认8个)
             ###rhgb(图形) quiet(隐藏内核启动过程) 这两项去掉后会显示启动过程(默认不显示,只有按esc才能看到)
        initrd /initramfs-2.6.32-642.el6.x86_64.img        ###虚拟文件系统,伪根,根的驱动程序
        password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/        ###启动该系统时需要输入的密码

               2.png   

                        p:输入密码,输入密码之后会提示"a","e","c"

                        a:在启动之前修改内核参数

                        e:编辑模式,用于编辑菜单
                        c:命令模式,交互式接口

                        o:在选择的行后面增加一行

                        O:在选择的行前面增加一行

                        d:删除选择的行

                    上述操作都是属于临时修改!!!

                    注意:输入c进入命令行模式,此时可以略过选择内核阶段,自己制定内核文件和伪根文件,步骤如下:

            1.png

                注意:kernel处,指明的根是文件系统的根,不是相对于grub的根。

        

                内核选择界面更换图片的办法:

                        more /boot/grub/splash.xpm.gz  可以查到图片的分辨率

                        根据分辨率的大小,截取或查找对应的图片

                         linux系统中安装图片编辑器yum install ImageMagick -y

                         格式转换 convert-resize 640×480 -colors 14 win.jpg win.xpm

                         gzip win.xpm

                         更改grub.conf 中配置的图片名字,重启即可。

启动排错问题:

    1、内核文件,虚拟文件系统文件配置文件中写错或者信息不完整导致系统无法启动。

            1.png

                如果出现上述kernel文件信息不完整或者错误,可按下"e"键,输入kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda3,按回车,然后回到上述界面,按"b"键,重新启动即可。

                注意:上述修改属于临时修改,启动完成之后,下次启动还是存在问题,还要重新修改grub的配置文件。

    2、grub.conf被误删除,导致系统无法启动。

                启动后直接进入命令行模式:

        1.png

             按如下操作即可,由于是临时生效,因此后续还要重新编辑grub.conf 配置文件。

        1.png

    3、破坏第一阶段MBR 446个字节,dd if=/dev/zero of=/dev/sda bs=1 count=446,hexdump -C -v /dev/sda -n 512 确认。

            重启后出现如下所示,因为启动程序被破坏,因此系统认为硬盘不可启动,直接从光盘引导,选择第三项进入安全模式。

            1.png

首先/sbin/grub-install 救援模式上不存在该工具,存储在硬盘上,因此要切根,stage1不属于任何分区的属于MBR,关联硬盘设备,因此要写/dev/sda。

            具体操作步骤:

                      方法1:

                                    1、chroot /mnt/sysimage/

                                    2、grub-install /dev/sda

                                    3、exit exit

                                    4、选择reboot

            注意:有些环境中如果想把grub安装到别的硬盘上根不是boot的上级目录就要按如下写法操作:

                                grub-install –root-directory=DIR(boot目录的父目录,如果其父目录是根则可省略) /dev/DISK

                        方法2:

                                    1、grub

                                    2、root (hd0,0)

                                    3、setup (hd0)

                                    4、quit exit

                                    5、选择reboot

    

    4、破坏1.5阶段,dd if=/dev/zero of=/dev/sda bs=512 cxount=2 seek=1.

                    reboot后直接黑屏,重新启动进入光盘引导,进入救援模式,后续具体操作同第三题破坏MBR的解决办法相同。

                    注意:用上述第二种方法修复stage1.5要依赖于/boot/grub/*1.5*的文件,如果这个文件不存在则会修复失败,第一种方法grub-install不依赖/boot/grub/*1.5*文件。

    5、删除rm -rf /boot/grub  stage 2阶段并修复。

        1.png

                重新启动,光盘启动进入救援模式,在命令行中操作如下(不能采用问题3中的方法2 ,因为缺失1.5文件):

        q.png

                注意:–root-directory=/ 可以省略,此时进入/boot/grub目录中,可以看到缺少grub.conf文件

        1.png

                可以在在该目录下手写一份,也可以重新启动,在gurb命令行中重新输入,同问题2一样的解决办法。

        1.png

                    注意:输入上述操作完后会进行修复,修复完成之后还要在输入一遍才能启动,启动完成后,在/boot/grub/目录下手写一份grub。conf文件。

        1.png

    6、删除/sbin/init程序,并恢复。

                    开机后进入后卡在如下画面,不支持输入命令,不能进行任何操作。

        1.png

                重新启动,进入内核选择界面,按"a"键,进入编辑内核参数,让bash代替init命令,具体操作如下。

            1.png

                回车后重新启动,将准备好的init文件还原到/sbin目录下,重新启动即可。

            2.png

                    如果启动过程中,卡在某个程序不能正常启动,可以在内核选择界面,输入"a",进入内核编辑界面输入1,回车,进入单用户模式,用chkconfig 某程序 off ,在重新启动即可。

    

    7、删除vmlinuz-2.6.32-642.el6.x86_64,initramfs-2.6.32-642.el6.x86_64.img 文件,重启并恢复

                重启后出现的画面

                1.png

                再次从光盘启动进入救援模式,然后创建一个目录挂载光盘,在光盘中的isolinux目录中可以看到vmlinuz文件,将其cp到/mnt/sysimage/boot/目录下

            3.png

                创建/boot目录下创建initramfs-2.6.32-642.el6.x86_64.img 文件:

            1.png

                注意:光盘/boot目录里面vmlinuz 文件名要与/boot/grub/grub.conf配置文件的中文件名保持一致,复制完后还要修改grub.conf中文件名

       方法2、

                假设我们用网络启动,用光盘引导,开启网络连接,选择yes。

            1.png

                可以自己配置网络也可动态获取,我们选择动态获取。

1.png

            进入到命令行模式后,输入ifconfig 获取ip地址后,通过scp命令从别的主机拷贝到问题主机上,重新启动即可。

            1.png

            1.png

    8、dd if=/dev/zero of=/dev/sda bs=446 count=1

            rm -rf /boot

            破坏后重新启动,光盘引导进入救援模式,安装kernel包,指明安装路径,用–force 或–replacepkgs选项

            2.png

                用grub-install修复mbr第一阶段

            2.png

                进入/boot/grub/目录下,创建grub.conf 文件,重启即可。

    9、删除/etc/fstab 、删除/boot/,重新启动不恢复。

                进入光盘救援模式,fdisk -l 和 blkid 查看磁盘信息

            1.png

                根据上图根据磁盘空间大小可以分析出来sda1是boot,sda3是根,但是如果在磁盘大小比较均衡,且数目表多时,就需要将每个磁盘挂载到指定目录中,然后根据磁盘空间中的内容来确定每个磁盘。

                1.png

                2.png

                   进入根目录中,创建etc/fstab文件。

            1.png

                    /dev/sda1 /boot ext4 defaults 1 1

                    /dev/sda3 / ext4 defaults 1 2

                    重新启动系统,重新进入救援模式,让系统帮我们挂载

                1.png

                1.png

                    在/boot/目录下可以看到缺失grub目录,因此需要通过grub-install /dev/sda来安装

                1.png

                    最后在/boot/grub/目录下创建grub.conf 的配置文件,重新启动系统即可。

    

    10、逻辑卷情况下,删除/etc/fstab,删除/boot/的修复方法。

                    光盘启动进入救援模式

                    lvscan 扫描逻辑卷

                    vgchage -ay 激活逻辑卷

                    mount /dev/vg0/root /mnt/sysimage 挂载逻辑卷

                    vi /mnt/sysimage/etc/fstab

                    /dev/sda1     /boot     ext4     defaults     1 1

                    /dev/vg0/root  /     ext4       defaults     1 2

                    /dev/vg0/var    /var      ext4    defaults    0  0

                    /dev/vg0/usr    /usr       ext4    defaults     0 0   

                     reboot

                     光盘启动进入救援模式,让系统自动挂载

                     mkdir /mnt/cdrom

                     mount /dev/cdrom /mnt/cdrom

                     chroot /mnt/sysimage

                     rpm -ivh /mnt/cdrom/Packages/kernel-2****.rpm –replace|force

                     grub-install /dev/sda

                     vim /boot/grub/grub.conf

                     default=0

                     timeout=5

                     title linuxkernel

                     root (hd0,0)

                     kernel /vmlinuz。。。。。root=/dev/vg0/root

                     initrd /intramfs……………………..

 

    11、简易linux制作

          添加一块硬盘,扫描让系统识别

                1.png
          分区格式化,创建/boot/  和 /

                1.png

           格式化

                    mkfs.ext4 /dev/sdc1

                    mkfs.ext4 /dev/sdc2

           挂载/dev/sdc1 到/mnt/boot目录,并将核心文件拷贝到目录中,安装grub-intall

                1.png

            创建/boot/grub/grub.conf

                1.png

           挂载根目录,并创建根目录中的文件

                1.png

                1.png

           编辑/mnt/sysroot/etc/fstab,注意由于我要把这个硬盘当做系统来启动,因此在新的主机上面启动sdc1会变成sda1 

                1.png

            将命令对应的二进制文件和库文件通过脚本拷贝到对应的目录中

            关机,新建虚拟机,让配置好的硬盘,添加到虚拟机中启动。

                        CentOS 6.8-milinux.vmdk  54M

            

                

                

原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/45913

(0)
NarutoNaruto
上一篇 2016-09-18
下一篇 2016-09-18

相关推荐

  • Linux发行版介绍

    一,Linux是什么?      Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统…

    2016-10-29
  • Linux cluster集群全讲解

                     Linux cluster集群 Linux cluster(集群): cluster:计算机组合,为解决某个特定问题组合起来形成的单个系统;   Linux Cluster类型:    LB:Load Balancing,负载均衡;    HA:High Availiablity,高可用;    A=MTBF(平均无故障时长…

    2016-11-18
  • cache: 缓存相关

    cache: 缓存相关 —————————————————— 以下所陈述的缓存概念多是相对web服务而言 缓存所起的作用就是加速,减轻后端服务器压力。一般而言,我们请求的web服务资源往往不是由后端 服务器所响应的(对于颇具规模的站点来说),而是由前端的缓存服务器所缓存的内容直接响应,所以, 我们得到的资源可能不实最新的,因为缓存的数据于后端服务器不一定时同…

    Linux干货 2016-11-08
  • HA之corosync+pacemaker+crmsh

    高可用集群框架 图片转载之http://www.178linux.com/16656 实验拓扑: 两台节点服务器: node1     192.168.150.137     node1.com node2     192.168.150.138     node2.com nf…

    Linux干货 2017-01-18
  • Linux文件夹作用

    适用对象:本文适用于初学Linux以及有志于学习Linux的朋友们。   Linux文件系统形状类似于倒置的树状结构,所有的文件或文件夹都可以被认为是根目录/的子目录。 在Linux系统安装完成之后,系统会自动在/目录下创建一些文件,而这些文件都有自己特殊的作用。本文就/下的目录做个简单的介绍。 /bin:存放所有用户使用的二进制可执行命令 /bo…

    Linux干货 2016-10-19
  • 常用RAID级别介绍

    RAID是什么         磁盘阵列(Redundant Arrays of Independent Disks,RAID),磁盘阵列是将多个价格便宜的磁盘按照一定的组合方式组成具有高容量的磁盘组,按照不同的组合方式可以达到不同的效果,如:可以提升磁盘的存取效率,可提高磁盘的…

    Linux干货 2016-02-14