• grub各种安装方法


    目录:

    一、在命令行界面,给本机安装grub

      (1)使用grub-install命令安装

      (2)在grub命令提示符下安装

    二、在本机上给其它硬盘安装grub

      (1)boot单独分区

      (2)boot目录不单独分区

    三、在救援模式下安装grub

    正文:

    注:本机环境为centos6

    一、在命令行界面,给本机安装grub

      1、使用grub-install命令安装

      (1)破坏磁盘分区上MBR

        dd if=/dev/zero of=/dev/sda bs=200 count=1  #of后面跟的为整块磁盘,不能为分区,因为分区是不包括MBR扇区的。

      (2) 执行grub-install命令

         grub-install --root-directory=/ /dev/sda  

          后面跟的为/dev/sda设备,非分区,因为grub的第一阶段是装在MBR中的,即指定第一阶段安装位置,但是经过测试,后面即使指的为分区,系统会理解为装在该分区所在设备,仍然可以安装成功。

          --root-directory指定第二阶段安装位置,此目录下必须要有boot目录,如果没有会安装不了(待验证),如果不指定,默认为当前根。

      注:此种方式为三个阶段都会安装,不需要boot目录下有grub文件。但不会生成grub的配置文件(待验证)

      2、在grub命令提示符下安装

        (1) 在命令行键入grub,进入grub命令提示符界面

           ~]# grub

        (2) 执行grub下的操作命令

          grub> root (hd0,0)  # 指定根,个人觉得和上面命令中的--root-directory一个意思

          grub> setup (hd0)   # 指定磁盘,个人觉得和上面的/dev/sda一个意思,如有大神知道的,请告知。
            setup (hd0)
            Checking if "/boot/grub/stage1" exists... no
            Checking if "/grub/stage1" exists... yes
            Checking if "/grub/stage2" exists... yes
            Checking if "/grub/e2fs_stage1_5" exists... yes
            Running "embed /grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded.
            succeeded
            Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded

    二、在本机上给其它硬盘安装grub 

      1、boot单独分区

      

      通常情况下boot分区均为第一分区,这次特地将第二分区设为boot分区。

      (1) 在/mnt目录下创建boot目录,将sdb2挂载到boot目录。(一定是先创建目录,再挂载)

        ~]# mount /dev/sdb2 /mnt/boot/

        ~]# grub-install --root-directory=/mnt /dev/sdb

      安装后在会在/mnt/boot目录下多一个grub目录

      (2) 在/media目录下创建sysroot目录,将sdb1挂载到sysroot目录

        ~]# mkdir /media/sysroot

      (3) 在sysroot目录下创建目录

        sysroot]# mkdir -pv bin dev etc home lib lib64 opt proc root sbin srv sys tmp usr var  # 没有创建boot目录,有没有什么问题?

      (4) 将内核文件cp至新磁盘

        sysroot]# cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /mnt/boot/vmlinuz

        sysroot]# cp /boot/initramfs-2.6.32-754.el6.x86_64.img  /mnt/boot/initramfs.img

        sysroot]# cp /bin/bash /media/sysroot/bin/  # 当init来用

      (5) 查看/bin/bash依赖的库,并将其复制到/media/sysroot/lib64目录下

        sysroot]# ldd /bin/bash

      (6) 创建grub配置文件(grub-install不会自动生成,如果不创建,开机直接进行grub命令行)

        default=0
        timeout=5
        title CentOS 6 (my linux)
          root (hd0,1)  # 分区从0开始,由于之前设置的是第二分区,所以此处填1
          kernel /vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash   # 在之前的主机上是sdb,换到新主机上为sda;init用bash代替
          initrd /initramfs.img  # 后面的img别忘加了,另外initrd后面没有等号

      (7) 开机启动,正常进入bash。

        

      2、boot不单独分区

      

      (1) 将sdb1挂载到/mnt目录,并创建boot目录(一定先挂载再创建)

        ~]# mount /dev/sdb1 /mnt/

        ~]# mkdir /mnt/boot

        ~]# grub-install --root-directory=/mnt /dev/sdb

        ~]# cd /mnt

        mnt]# mkdir -pv bin dev etc home lib lib64 opt proc root sbin srv sys tmp usr var

        mnt]# cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /mnt/boot/vmlinuz

        mnt]# cp /boot/initramfs-2.6.32-754.el6.x86_64.img  /mnt/boot/initramfs.img

        mnt]# cp /bin/bash /mnt/bin/

        mnt]# ldd /bin/bash

        mnt]# cp /lib64/libtinfo.so.5 /mnt/lib64

        mnt]# cp /lib64/libdl.so.2 /mnt/lib64

        mnt]# cp /lib64/libc.so.6 /mnt/lib64

        mnt]# cp /lib64/ld-linux-x86-64.so.2 /mnt/lib64

        mnt]# cp /boot/grub/grub.conf /mnt/boot/grub/

        然后修改grub配置信息如下:   

          default=0
          timeout=5
          title CentOS 6 (linux)
          root (hd0,0)
          kernel /boot/vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash
          initrd /boot/initramfs.img  # 如果不加boot,会导致启动就卡住,左上角就一个“_”符号。  

        

        终于大功告成了,在这个点卡了两天了。

    三、在救援模式下安装grub

      (1) 破坏磁盘分区上MBR

        dd if=/dev/zero of=/dev/sda bs=200 count=1  #of后面跟的为整块磁盘,不能为分区,因为分区是不包括MBR扇区的。

        

      (2) 插入光盘,先择救援模式

        

      (3) 提示如果发现系统,将发现的系统挂载在了/mnt/sysimage目录下

        

      (4) 如果真的发现了系统,系统会提示已经挂在/mnt/sysimage  

        

        

      (5) 切换根,安装grub(安装要等一会),然后退出,reboot(重启好像会执行检查,时间会长一些),这样就安装好了

        

      

  • 相关阅读:
    Socket与系统调用深度分析
    需求分析:未来的图书会是怎么样的?
    构建调试Linux内核网络代码的环境MenuOS系统
    jmeter--开始
    pytest---api
    pytest---mark
    pytest---数据处理
    pytest---fixture运行规则
    pytest---allure(mac版本)
    pytest---pytest.ini
  • 原文地址:https://www.cnblogs.com/sq5288/p/11163227.html
Copyright © 2020-2023  润新知