win10和centos7双系统双磁盘引导的实现
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双系统双磁盘引导的实现的更多相关文章
- centos7 windows7 双系统重新构建引导和启动顺序
安装centos后无法引导启动windows7的解决方法 在电脑Windows7系统上安装Centos7,安装后找不到Windows7引导菜单. 原因:因为CentOS 7已采用新式的grub2系统, ...
- win10与ubantu双系统产生的引导错误问题-----unknown filesystem
在win10和ubantu双系统中开机启动时出现unknown filesystem的解决办法 出现上述问题是引导区出错了. 方法如下: grub rescue>ls grub rescue ...
- Ubuntu和win10双系统Grup无法引导解决方案
通常我们经常安装双系统, 但是有时候安装完系统无法正常引导, 以下就说明Ubuntu和win10双系统, win10在grub界面不断循环的解决方案 直接在win10启动项目上按e进入编辑模式 在文档 ...
- 双系统使用Linux引导
今天在装linux的window双系统时,出现在无法使用linux引导的问题,开机总是自动进windows,照理来说我先装的window,后装的linux,应该是开机进grub引导才对.在主板的boo ...
- Windows 10、Ubuntu 18.04 双系统 双硬盘 安装经验总结
首先说明,我假设读者懂得分区.安装系统,所以不再深入讨论具体操作. 如果需要手把手教程,建议先参考其它Windows中加装Linux的相关文章. 网上其它文章.教程的常见问题是,各家机器配置不一样,安 ...
- Ubuntu 16.04与Win10双系统双硬盘安装图解
一.先做准备工作.建议:在当前系统所在的硬盘上,留一片空的主分区安装Ubuntu系统. 2.划分多大的空间够?安装的过程中需要涉及到分区,为了以免日后重装,我的建议是如下分区:1).5G,主分区,空间 ...
- 双系统 fedora 恢复引导
因为硬盘坏了,所以买了个固态的用用. 先装windows,再装fedora及常用必备的驱动软件装上. 快要完成了心情都挺好,可是在一次关机时window7关机很慢一直在删索引,我嫌时间太长,直接按电源 ...
- win10+Ubuntu16.04双系统下深度学习环境的搭建
环境零零碎碎地搭了三四天,虽然碰到各种问题,但还是搭建好了,自己整理记录下,同时也算给有需要的人一些指导吧 一.双系统的安装 Win10硬盘管理助手 压缩或者直接利用未使用的空间,空间大小自定,将腾出 ...
- 怎样在Win10下安装ubuntu双系统
Win10系统下安装ubuntu系统 安装前准备: 概念 在动手之前,一定要先了解双系统.系统引导.分区这3个概念,这样才能理解安装步骤,应对安装过程中的意外情况. 双系统 双系统就是开机之后,会有一 ...
随机推荐
- Java——抽象类与接口的前世今生
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...
- JavaScript 浅析数组对象与类数组对象
数组(Array对象) 数组的操作 创建数组方法 添加与修改数组元素 删除数组元素 使用数组元素 遍历数组元素 多维数组 数组相关的函数 concat() join() pop() push() sh ...
- 【Scala】利用akka实现Spark启动通信
文章目录 思路分析 步骤 一.创建maven工程,导包 二.master进程代码开发 三.worker进程代码开发 思路分析 1.首先启动master,然后依次启动worker 2.启动worker时 ...
- 一文教你快速修改ubuntu终端显示的主机名和用户名
为了让终端的显示更加简洁,清爽,改掉显示的用户名和主机名,改成你喜欢的名字. 创作不易,如果本文帮到了您: 如果本文帮到了您,请帮忙点个赞
- 你的团队需要一个正确的程序集(dll)管理姿势
很多团队经历时间的积淀之后,都会有很多的可重用的公共技术组件.大部分的团队都会把这些公共组件生成程序集(dll)后,放到GIT或SVN的一个公共目录里面,以供各个项目中使用.起初在项目很少又或者是公共 ...
- EI检索
第一步: 网址:http://www.elsevier.com/online-tools/engineering-village 第二步: 网址:http://www.engineeringvilla ...
- python 基础知识4 - 字典
1.字典增 #字典增 dic = {'name': '大白', 'age': 20} dic['hight'] = 180 #没有键值对,添加 dic['age'] = 18 #有键值对,覆盖 pri ...
- Linux中的vi编辑器使用
总是忘记,我就谢谢 touch XXX文件名 vi XXX文件名 敲击 i 进入编辑模式 敲击ESC 退出编辑模式 退出编辑模式后 输入:wq!保存并退出 输入:q!不保存退出 查看文件:cat XX ...
- day08文件的操作(0221)
#1.文件操作之追加数据01:f = open("yesterday01",'a+U',encoding="utf-8")#a= append,追加之意,w则为 ...
- CSS类与选择器【转】http://www.cnblogs.com/duanhuajian/archive/2012/12/17/2821524.html
1.在 HTML 中,一个 class 值中可能包含一个词列表,各个词之间用空格分隔.例如,如果希望将一个特定的元素同时标记为重要(important)和警告(warning),就可以写作(这两个词的 ...