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. CTF-Pwn-[BJDCTF 2nd]diff

    CTF-Pwn-[BJDCTF 2nd]diff 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!本文仅用于学习与交流,不得用于非 ...

  2. async与await----js的异步处理

    async与await----js的异步处理 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 之前写代码遇到一个问题,返回 ...

  3. spring学习笔记(四)我对spring中bean生命周期的理解

    我相信大部分同学对spring中bean的生命周期都不陌生,但是如果要详细的说出每一个步骤,可能能说出来的也不多,我之前也是这样,前几天调了一下spring的源码,看了一点书,突然一下明朗了,理解了s ...

  4. 【Spark】这一篇或许能让你大概了解如何通过JavaAPI实现DataFrame的相关操作

    文章目录 需求概述 步骤 一.创建Maven工程并导包 二.选用第一种方法:利用反射机制配合样例类构建DataFrame 开发代码 选用第二种方法:通过StrucType配合Row构建DataFram ...

  5. Spring方法注入的使用与实现原理

    一.前言   这几天为了更详细地了解Spring,我开始阅读Spring的官方文档.说实话,之前很少阅读官方文档,就算是读,也是读别人翻译好的.但是最近由于准备春招,需要了解很多知识点的细节,网上几乎 ...

  6. 附018.K3S-ETCD高可用部署

    一 K3S概述 1.1 K3S介绍 K3S是一个轻量级Kubernetes发行版.易于安装,内存消耗低,所有二进制文件不到40mb. 适用于: 边缘计算-Edge 物联网-IoT CI ARM 1.2 ...

  7. Python脚本:linux上将筛选的文件夹复制到另一个目录,保存目录结构以及文件和文件夹操作方法

    import os,shutil def newDir(dir_path): if not os.path.exists(dir_path): os.makedirs(dir_path) def co ...

  8. Mysql 常用函数(19)- mod 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html mod 的作用 求余数,和%一样 mod的语法格式 ...

  9. Redis数据类型简介(十分钟快速学习Redis)

    如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...

  10. vue组件中的“:”、“@”、“.”属性

    冒号属性 :是指令 v-bind 的缩写,是为了动态绑定数据,用于响应式地更新 HTML 特性. 加了冒号,后面是变量或表达式:不加冒号的是字符串. 如图:将Home组件中的 probe-type 的 ...