启动流程排错和自建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

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code