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、软件安装及配置:
...
# 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
}
...
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磁盘的问题。