win10和centos7双系统双磁盘引导的实现
1、背景:dell5460笔记本电脑M2-120G固态盘无法在bios中引导,新装了M360G固态盘后,考虑把120G固态盘安装centos7.5系统做深度学习开发机测试用,因dell5460笔记本有独立显卡NVDIA GT 630,可学习安装支持GPU的深度学习环境。
2、难点:使用网络引导顺利安装完centoos7.5系统后,发现无法直接进入centos7.5系统,使用网络引导的第一层菜单选择第二块磁盘也无法进入,只有进入gpxlinux.0的二层菜单,选择第二块磁盘引导才进入了centos系统。本想手动调整引导功能,过程中才发现,centos7.5是使用grub2引导系统,其与原来的grub有较大差别,原有grub是无法直接引导centos7.5系统的。使用easyBSD和BootICE软件折腾了两天也没有效果,使用easyBSD软件的“添加新条目”——“NeoGrub”功能虽然能添加菜单功能,但其核心仍然是grub,其命令chainloader +1命令是没法驱动grub2下的120G固态盘,因此,也无法实现引导。考虑到使用网络引导时,在gpxlinux.0的菜单下可实现120G固态盘的引导,使用bootice把gpxlinux.0作为引导文件配置进NeoGrub菜单,引导时提示不是PXE网络环境,也无法实现预想的功能。
3、解决思路:既然问题出在grub与grub2的不兼容上,考虑手动建立grub2的引导环境。在网上搜索grub2软件,发现有grub2win软件,可尝试去实现目标。
4、软件安装及配置:
(1)软件下载:Grub2Win.rar     #约3MB
(2)软件安装:解压后,运行安装程序,在c盘根目录会自动生成grub2目录,同时,在windows的BSD菜单中会新增一个条目“Grub 2 For Windows”,其指向的引导文件为“\grub2\g2bootmgr\gnugrub.kernel.bios”。
(3)软件配置:在grub2软件界面,点击“Manage Boot Menu”进入菜单配置界面,点击“Add A New Entry”,在Type项选择fedora或ubuntu等linux系统名称(该项中还没有centos的选项,但不影响使用),在“Automatically Generate Configuration Code For Fedore”标签栏中点选“Chainloader”,在对应的“Driver”选择为“1”,表示从第二块磁盘引导,注意,不要勾选“Partitior”,这是分区选择,因我需要的是系统从第二块磁盘的MBR引导,而不是从分区PBR引导。
查看C:\grub2\grub.cfg配置文件内容,引导第二块磁盘的配置如下:
...
#
  Menu Entry 0       Fedora Linux
##  ** Grub will boot this entry by default **
#
menuentry   'Fedora Linux'       --class fedora   --class icon-fedora  {
     set gfxpayload=any
     set reviewpause=2
     set root='(hd1)'
     chainloader +1
savelast 0 'Fedora Linux'
echo Grub is now loading  Fedora Linux
}
...

5、测试:重启系统后,系统首先进入windows的bsd引导菜单,选择“Grub 2 For Windows”就会进入grub2win菜单,点击刚才建的“Fedora linux”菜单项,系统顺利进入引导centos7.5界面,双系统引导成功!
6、分析:
虽然双引导成功,但是,仔细想想道理不通,因为在这处应用中,不论是grub还是grub2,都是用于为了实现从第二块磁盘(120G固态盘)的MBR区引导系统,在功能上没有根本区别,grub和grub2的区别实质上是在PBR(分区引导扇区)上。在bsd中保留了前面配置的NeoGrub引导选项,因为其支持菜单配置功能。继续进行测试,无意中发现在实现第二块磁盘引导的菜单项改为如下形式后,成功引导第二块磁盘的centos7.5系统。

title 2HD
root (hd1,0)
chainloader (hd1)+1                    #
此处,红色部分(hd1)是新加上的。
注:NeoGrub选项的引导文件NeoGrub.mbr和菜单文件menu.lst都在c:\NST目录下,是由easyBSD软件生成。
      
继续测试,把网络引导的第一层菜单的第二块磁盘引导脚本“chainloader +1”修改为“chainloader (hd1)+1”后,也能成功引导第二块磁盘了。如下:
title 从HDD1第一分区启动
rootnoverify (hd1,0)
makeactive
chainloader (hd1)+1         #此处,红色部分(hd1)是新加上的。

几种错误提示信息:
(1)“chainloader +1”的错误提示:Error 13:Invalid or unsupported executable format
(2) 在“chaniloader (hd1)+1”中增加空格,破坏格式,如“chainloader (hd1)+ 1”:Error 23:Error while parsing number
(3) 仿grub2,修改“root (hd1,0)”为“root (hd1)”:Error 17:Cannot mount selected partition
继续测试,发现“root (hd1,0)”修改为“root (hd1,1)”、“root (hd1,2)”、“root (hd1,3)”都能正常引导。这说明在grub中,root命令必须跟分区参数,而不能跟磁盘参数。

7、总结:
(1)本次工作对easyBSD和Bootice软件进一步熟悉,这两个软件结合可对windows的BSD进行灵活的修改调整。
(2)新学习了grub2win软件,对grub和grub2的功能区别有了一个初步的认识。
(3)试用了grub2win做引导菜单,解决了grub引导linux centos磁盘的问题。

win10和centos7双系统双磁盘引导的实现的更多相关文章

  1. centos7 windows7 双系统重新构建引导和启动顺序

    安装centos后无法引导启动windows7的解决方法 在电脑Windows7系统上安装Centos7,安装后找不到Windows7引导菜单. 原因:因为CentOS 7已采用新式的grub2系统, ...

  2. win10与ubantu双系统产生的引导错误问题-----unknown filesystem

    在win10和ubantu双系统中开机启动时出现unknown filesystem的解决办法   出现上述问题是引导区出错了. 方法如下: grub rescue>ls grub rescue ...

  3. Ubuntu和win10双系统Grup无法引导解决方案

    通常我们经常安装双系统, 但是有时候安装完系统无法正常引导, 以下就说明Ubuntu和win10双系统, win10在grub界面不断循环的解决方案 直接在win10启动项目上按e进入编辑模式 在文档 ...

  4. 双系统使用Linux引导

    今天在装linux的window双系统时,出现在无法使用linux引导的问题,开机总是自动进windows,照理来说我先装的window,后装的linux,应该是开机进grub引导才对.在主板的boo ...

  5. Windows 10、Ubuntu 18.04 双系统 双硬盘 安装经验总结

    首先说明,我假设读者懂得分区.安装系统,所以不再深入讨论具体操作. 如果需要手把手教程,建议先参考其它Windows中加装Linux的相关文章. 网上其它文章.教程的常见问题是,各家机器配置不一样,安 ...

  6. Ubuntu 16.04与Win10双系统双硬盘安装图解

    一.先做准备工作.建议:在当前系统所在的硬盘上,留一片空的主分区安装Ubuntu系统. 2.划分多大的空间够?安装的过程中需要涉及到分区,为了以免日后重装,我的建议是如下分区:1).5G,主分区,空间 ...

  7. 双系统 fedora 恢复引导

    因为硬盘坏了,所以买了个固态的用用. 先装windows,再装fedora及常用必备的驱动软件装上. 快要完成了心情都挺好,可是在一次关机时window7关机很慢一直在删索引,我嫌时间太长,直接按电源 ...

  8. win10+Ubuntu16.04双系统下深度学习环境的搭建

    环境零零碎碎地搭了三四天,虽然碰到各种问题,但还是搭建好了,自己整理记录下,同时也算给有需要的人一些指导吧 一.双系统的安装 Win10硬盘管理助手 压缩或者直接利用未使用的空间,空间大小自定,将腾出 ...

  9. 怎样在Win10下安装ubuntu双系统

    Win10系统下安装ubuntu系统 安装前准备: 概念 在动手之前,一定要先了解双系统.系统引导.分区这3个概念,这样才能理解安装步骤,应对安装过程中的意外情况. 双系统 双系统就是开机之后,会有一 ...

随机推荐

  1. Java——Java自动装箱和拆箱

    一.什么是自动装箱和拆箱: 我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i=new I ...

  2. S - Making the Grade POJ - 3666 结论 将严格递减转化成非严格的

    S - Making the Grade POJ - 3666 这个题目要求把一个给定的序列变成递增或者递减序列的最小代价. 这个是一个dp,对于这个dp的定义我觉得不是很好想,如果第一次碰到的话. ...

  3. 选择结构(if、switch)

    3.2  用if语句实现选择结构 什么是选择结构 单分支if语句 双分支if语句 多分支if语句 1.什么是选择结构? 选择结构又称为分支结构,是根据给定的条件是否成立来决定程序的执行流程. 用if语 ...

  4. LeetCode--LinkedList--160. Intersection of Two Linked Lists(Easy)

    160. Intersection of Two Linked Lists(Easy) 题目地址https://leetcode.com/problems/intersection-of-two-li ...

  5. FOC中电流环调试的宝贵经验总结(有理有据+全盘拖出)

    你是否经历过一个人独自摸索前进磕磕碰碰最终体无完肤,然后将胜利的旗帜插到山顶的时刻,如果有,本文也许能帮你在调试FOC电流环的时候给你带来一些帮助和思路. 如果本文帮到了您,请帮忙点个赞

  6. HMM-前向后向算法与实现

    目录 基本要素 HMM三大问题 概率计算问题 前向算法 后向算法 前向-后向算法 基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,.. ...

  7. 自动扫雷 python

    自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式. // 2018.8.10更新 代码已上传至GitHub https://gith ...

  8. 【5min+】美化API,包装AspNetCore的返回结果

    系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...

  9. mybatis部分sql技巧

    1.mybatis中没有<=号,必须用<![CDATA[<=]]>表示.<update id="reduceNumber"> UPDATE se ...

  10. SpringMVC中参数的传递(一)

    前言 1.首先,我们在web.xml里面配置前端控制器DispatcherServlet以及字符编码过滤器(防止中文乱码),配置如下: <?xml version="1.0" ...