启动流程排错和自建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)
上一篇 2016-09-18 12:24
下一篇 2016-09-18 12:26

相关推荐

  • 第二周(8.15-8.21)博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 #touch 如果a.txt不存在,生成一个新的空文档a.txt。如果a.txt存在,那么只更改该文档的时间信息 #ls  是list的简写,列出当前目录下的所有文件名 #cp a.txt b.txt  cp是copy的简写,用来复制文件。在工作目录下,将a.t…

    Linux干货 2016-08-24
  • 网络配置——命令家族

    Linux网络属性配置命令: ifcfg家族:ifconfig,route,netstat ifconfig命令:接口及地址查看和管理          ·ifconfig [INTERFACE]       &nbsp…

    Linux干货 2016-09-07
  • 学习笔记–权限管理

    文件系统的权限管理 1、Linux系统下每个目录或文件的权限对象主要分为:属主(u)、属组(g)、其他用户(o),针对每类访问对象都定义了三种权限:读(r)、写(w)、执行(x),这三种权限针对目录和文件的作用各不相同,以下将做详细说明: 对于文件来说: 读(r)权限:可以使用文本查看类工具读取文件内容 写(w)权限:可以修改文件内容,但不能删除文件本身 执…

    Linux干货 2016-08-05
  • 迁移home到独立分区

    1,fdisk  /dev/sda  创建10G的分区 Lsblk 查看下新创建分区是否同步 partx  -a  /dev/sda 同步 2,mkfs.ext4  /dev/sda6  -L  /home 创建文件系统跟卷标 3,mkdir  /mnt/home  创建一个挂载点 mount  /dev/sda6  /mnt/home 挂载 4,cp  -…

    2017-12-14
  • CentOS6.8启动卡死在开机进度条

    不知道什么原因CentOS6.8开机的时候卡在进度条一直进不去。就是下面的画面 在这个画面下面也看不到什么原因,果断F5切换至有显示开机进程的界面 看到了上述的错误提示:invalid user :'root' root是无效的root这是什么鬼? 接下来重新开机,进入到救援模式 开机的时候快速按一下ESC,进入到CD启动,然后选择救援模…

    Linux干货 2016-12-08
  • 自动化系统安装之DHCP服务实现

    DHCP服务实现 dhcp的工作过程是基于UDP协议的,其中用到了UDP的67(服务器),68(客户端)端口 使用场景 自动化安装系统 解决IPV4资源不足的问题 同网段多dhcp服务 dhcp服务必须基于本地 先到先得 跨网段 RFC 1542 dhcpclient客户端向dhcpsercer服务器请求续约时,中间相隔多网段时,如果路由器是 RFC1542…

    2018-01-29