利用windows BCD引导文件引导Deepin,实现双系统
Tofloor
poster avatar
qiqunet
deepin
2019-06-26 17:30
Author
本帖最后由 qiqunet 于 2019-7-1 10:17 编辑

  先安装window,后安装deepin,deepin安装器默认情况下会添加引导window的菜单项,从而实现双系统。
但也有意外情况:

  1、deepin安装器有时就是不添加win启动项!!
  2、重装win而导致deepin启动菜单失效;
  3、因启用了联想保护和同传系统,从而导致deepin启动菜单失效;
  4、从deepin启动菜单引导win时花屏!(听说可以改善,参考:《从deepin启动Windows花屏解决方法》作者:ms100 https://bbs.deepin.org/post/179870#)

上述的这些问题,若改由windows系统所在分区作主引导,则一切问题都将不是问题。

  为了解决这一问题,我在网上淘了半个月,参考过许多网文,来来去去,一个离不开的名字是:easyBCD。
  然而,我真的是水平有限啊!也不知道是它折腾我,还是我折腾它,总之半个月下来,按着网上的教程捣鼓,自己思考着折腾,总之未见任何转机!!白忙了半个月……当然,过程中也偶而换了换工具Bootice。

  后来,偶尔读到CSDN上的一篇十年前的文章《使用grub4dos引导Linux》,受作者启发,茅塞顿开。就是利用grub4dos作引导工具,竟被我折腾成了!具体做法分为如下四步:
1、核实系统的主引导方式为winMBR,方法如下图:

2、到网上搜索并下载grub4dos提取里面的grldr和grub.exe两个文件(实际好像只需要grldr即可),它俩(主要是grldr放在windows系统盘(往往是C盘)的根目录下;
  
3、编辑grldr引导菜单
利用deepin-live、explore2fs、DiskGenius(新版本)等工具,查看linux系统盘的/boot/grub/(可能有所差别)下的grub.cfg或menu.lst文件,找到类似下面字样的关键两句:

linux /boot/vmlinuz-4.15.0-30deepin-generic root=UUID=6043827b-fcd8-42bd-abe8-5e74be3269b0 ro  splash quiet  DEEPIN_GFXMODE=$DEEPIN_GFXMODE
initrd /boot/initrd.img-4.15.0-30deepin-generic


上述两句中,实际版本号、UUID及后面的参数等可能与文中不同,总之将它们用记事本先复制记录下来。
在windows中下载Bootice软件(或进入winPE系统,PE系统中一般会预置Bootice。当然也可以到网上下载其他的grldr文件编辑器),用Bootice打开grldr文件进行编辑。方法及内容如下图所示:

即下面的7条语句:

default 0
timeout 0
title Deepin Linux
root (hd0,2)
kernel /boot/vmlinuz-4.15.0-30deepin-generic root=UUID=6043827b-fcd8-42bd-abe8-5e74be3269b0 ro  splash quiet  DEEPIN_GFXMODE=$DEEPIN_GFXMODE
initrd /boot/initrd.img-4.15.0-30deepin-generic
quiet

  其中最长的那两行的关键信息就来自于linux系统的grub.cfg或menu.lst。开头的关键词可能略有不同,但后面的语句及参数是一样的。
  “root (hd0,2)”这一句是指linux系统所在的磁盘分区,单词root之后要留一个英文字符的空格,参数视实际情况可能有所不同。具体是什么参数呢?如果你清楚知道,当然可以直接填写准确的数值(DiskGenius软件好像可以正确显示Linux分区的编号)。如果你并不是很清楚,我们也可以先不用计较,先填着(hd0,2)即第一块磁盘第2个分区的样子。
  在系统的引导的过程中,如果失败了,可以按“e”键对该参数进行临时编辑修改,修改完成后按“b”键即可使用新修改的参数来重新引导系统了,多试几个序号,总能蒙对的。蒙对进入系统后再正式修改grldr文件即可。

4、修改BCD引导文件
在windows中下载Bootice软件(或进入winPE系统,PE系统中一般会预置Bootice),用Bootice打开windows的BCD文件(一般为C:\boot\bcd)进行编辑。
在BCD文件中添加一个实模式启动项,盘符指向引导盘(C盘),引导文件指向“\grldr”即可。


---------------------

参考文献:
《使用grub4dos引导Linux》作者:flag_and_leg  https://blog.csdn.net/flag_and_leg/article/details/2884043
《GRUB4DOS入门》作者: hanford https://blog.csdn.net/hanford/article/details/53606539
Reply Favorite View the author
All Replies
1 / 2
To page
avatar
lyhdzxf
deepin
2019-06-26 18:54
#1
研究型学习者
Reply View the author
avatar
funtoo
deepin
2019-06-26 19:31
#2
现在还有人用MBR?我2011年买的笔记本都已经搭载UEFI了。
Reply View the author
avatar
Feng Yu
deepin
2019-06-26 19:47
#3
何必要BCD引导,Windows又不自带BCD编辑器,还得靠第三方。还不如反过来用grub引导windows。

deepin的安装器本来就能自动双系统,用grub脚本可以自动发现windows并添加开机启动项,何必搞这种吃力不讨好的事情
Reply View the author
avatar
qiqunet
deepin
2019-06-26 20:30
#4
https://bbs.deepin.org/post/179830
何必要BCD引导,Windows又不自带BCD编辑器,还得靠第三方。还不如反过来用grub引导windows。

deepin的安装 ...

文章的开头已经回答了你的回复了,回复前可先看一下文章?

================================
先安装window,后安装deepin,deepin安装器默认情况下会添加引导window的菜单项,从而实现双系统。
但也有意外情况:

  deepin安装器有时就是不添加win启动项!!
  当然,也有因windows系统损坏而须重装win,而导致deepin启动失效的可能;
  还有就是,如果你想启用联想系统保护系统,当保护系统安装完成之后,你会发现deepin再也启动不了了;
  即使以上都没问题,但从deepin菜单启动window还是有一个花屏的问题!
Reply View the author
avatar
y***z@tom.com
deepin
2019-06-26 20:39
#5
https://bbs.deepin.org/post/179830
现在还有人用MBR?我2011年买的笔记本都已经搭载UEFI了。

UEFI模式也有BCD。
Reply View the author
avatar
y***z@tom.com
deepin
2019-06-26 20:40
#6
这个跟我的做法一样啊。https://bbs.deepin.org/post/167851
Reply View the author
avatar
qiqunet
deepin
2019-06-26 20:40
#7
https://bbs.deepin.org/post/179830
现在还有人用MBR?我2011年买的笔记本都已经搭载UEFI了。

是的,我的电脑也有UEFI。
之所有这么折腾,
一来是因为我的学识尚不够——这个不可否认。
二来是因为windows系统损坏而重装了win,从而导致deepin启动失效;
三来,我的电脑是公用电脑,需要启用联想系统的磁盘保护系统和同传系统,但当启用保护系统后,deepin就启动不了了——两套系统的启动管理有冲突;

这些原因我在文章的开头已进行了描述。

  还有最后一个问题就是:从deepin菜单启动window会花屏!
Reply View the author
avatar
y***z@tom.com
deepin
2019-06-26 20:42
#8
本帖最后由 yjgsz 于 2019-6-26 12:43 编辑
https://bbs.deepin.org/post/179830
是的,我的电脑也有UEFI。
之所有这么折腾,
一来是因为我的学识尚不够——这个不可否认。

我也是怕折腾。https://bbs.deepin.org/post/167851
从deepin菜单启动window会花屏,我也碰到过。
Reply View the author
avatar
qiqunet
deepin
2019-06-26 20:42
#9
https://bbs.deepin.org/post/179830
新机器都是uefi了

是的,新机器都是uefi了,我的也有uefi的,之所以还使用这么传统的启动方式,一来是我学识不够,二来可能是我脑子进水了。

既然进来了,看看文章再回复可好?
Reply View the author
avatar
qiqunet
deepin
2019-06-26 21:00
#10
https://bbs.deepin.org/post/179830
我也是怕折腾。https://bbs.deepin.org/post/167851
从deepin菜单启动window会花 ...

你给的这个链接的文章,在我折腾的时候,其实是参考过的,可能因为自己的脑力不够,当时没折腾成.
毕竟文章里有的地方说的也不是那么明确,我本身也就是个小白,不是资深玩家.
Reply View the author
avatar
qiqunet
deepin
2019-06-26 21:08
#11

是的,被逼着研究!
因为本来win和deepin都安装好的了,而且也有双系统接口的了。
但后来启用了联想电脑的磁盘保护和同传系统之后,deepin的启动菜单就挂了。
因此而被逼着去研究如何让deepin也能像win那样与联想同传系统兼容。
Reply View the author
avatar
qiqunet
deepin
2019-06-26 21:24
#12
https://bbs.deepin.org/post/179830
这个跟我的做法一样啊。https://bbs.deepin.org/post/167851

8、BIOS模式下,如平时用的是WIN,难得用LINUX,或又习惯WIN启动菜单的(BCD)。
   也可以用BOOTICE在BCD中添加 grub菜单项,再引导DEEPIN。先添加实模式启动项,再在menu.lst 中配置LINUX启动菜单项。
==================
当时我是参考你文章里的这一点来折腾的,因为这一些看着正适合我的需要,但真的没折腾成。
Reply View the author
avatar
y***z@tom.com
deepin
2019-06-26 22:01
#13
本帖最后由 yjgsz 于 2019-6-26 14:08 编辑
https://bbs.deepin.org/post/179830
8、BIOS模式下,如平时用的是WIN,难得用LINUX,或又习惯WIN启动菜单的(BCD)。
   也可以用BOOTICE在BC ...

用BOOTICE在BCD中添加 grub菜单项:将grldr.mbr文件复制到引导分区根目录下,然后启动BOOTICE在BCD中进行设置(如下图),其对应的菜单文件menu.lst,可与grldr.mbr放在同地方,也可放在其他任何分区的根目录下。
Reply View the author
avatar
qiqunet
deepin
2019-06-26 23:58
#14
https://bbs.deepin.org/post/179830
用BOOTICE在BCD中添加 grub菜单项:将grldr.mbr文件复制到引导分区根目录下,然后启动BOOTICE在BCD中进行 ...

好的,有空我也试一试你的这个,这样看好像明了一些了,谢谢!
Reply View the author
avatar
qiqunet
deepin
2019-06-26 23:58
#15
https://bbs.deepin.org/post/179830
用BOOTICE在BCD中添加 grub菜单项:将grldr.mbr文件复制到引导分区根目录下,然后启动BOOTICE在BCD中进行 ...

好的,有空我也试一试你的这个,这样看好像明了一些了,谢谢!
Reply View the author
avatar
ran
deepin
2019-07-25 20:38
#16
感谢大佬,利用你的方法,让我终于在我的笔记本上把Deepin启动了。
Reply View the author
avatar
qiqunet
deepin
2019-07-27 01:43
#17
https://bbs.deepin.org/post/179830
感谢大佬,利用你的方法,让我终于在我的笔记本上把Deepin启动了。

好开心,真的好开心!
我的经验总结居然真的帮助了他人,而且这个人还很诚心的回来跟我说了谢谢!

大佬就不敢当了,我是一个刚刚接触Linux不足3个月的小白,电脑水平其实最多也只算中等吧。
我只不过爱将自己经历过的辛苦写出来,希望它对别人有点用处而已。
所以别称大佬,希望大家互勉共进吧。

本来上来找个以前收藏的东西的,却看到了你的回复,特开心。
Reply View the author
avatar
DeepinOS
deepin
2019-07-27 06:41
#18
感谢您的探索,我希望deepin社区的人都有您这样的探索精神。
但是正如有人提及到的一样,当win8系统出产以后,电脑启动方式主要为GPT/UEFI这样的模式启动,您也可以继续探索这种启动方式。

您可以修改一下标题,改为传统BIOS模式下,利用Windows启动管理器引导deepin,实现双系统
Reply View the author
avatar
qiqunet
deepin
2019-07-29 11:04
#19
本帖最后由 qiqunet 于 2019-7-29 03:47 编辑
https://bbs.deepin.org/post/179830
感谢您的探索,我希望deepin社区的人都有您这样的探索精神。
但是正如有人提及到的一样,当win8系统出产以 ...

通过这一次的启动修复的折腾,真的让我长了一些知识,至少大概分清了UEFI/Legacy与及GPT/Mbr的概念。
GPT/Mbr是磁盘管理的概念,与引导有关,但不是引导方式。GPT磁盘分区表,突破了MBR模式只能分四个主分区的限制,突破了分区数量和磁盘容量的限制。
MBR只能分四个主分区,旧磁盘都是这种分区表。

UEFI/Legacy是新旧两种基本输入输出系统(BIOS),UEFI可以引导上述两种管理方式的磁盘,可以嵌入用户扩展的程序(例如BIOS里可以用鼠标了);
而Legacy(大家所说的BIOS)是基本固封的,也只能引导MBR模式的磁盘。

我的电脑一直都是UEFI模式引导启动的,但磁盘一直都是MBR管理的,无论是用deepin(实为GRUB引导程序)实现的双系统,还是用windows(实为windows NT引导程序)实现的双系统,磁盘的管理模式都没有改变。如果改变了这个管理模式,恐怕全部的操作系统都要重装了,不用谈修复引导了。当然,我也没有特意去更改引导方式,新电脑默认都是UEFI启动的,虽然也兼容Legacy,但没必要去动它。

其实,本文只是探讨如何用windows NT引导程序(即BCD或boot.ini)来引导deepin系统,基本未探讨到磁盘管理与及UEFI或Legacy引导方式的问题,况且本人在这方面的知识能力也有限,不然就不会折腾半个月这么久了,因此也不敢去深入探讨这些方面的问题。
之所以要探讨这个,是因为我安装Deepin的电脑是公用电脑,必须启用联想保护与同传系统。保护系统启动后抢夺了主引导权,并添加了次级引导来引导windows系统,而不主动添加对linux分区系统的引导。因此我就需要折腾如何从windows分区来进行第三级的deepin系统引导。

我只是将我本人如何利用BCD来引导deepin系统的做法说一说而已,而不管它是UEFI启动或是用Legacy(Bios)启动。

基于以上原因,你建议的标题修改,我不能接受。



Reply View the author
avatar
chesterlyd
deepin
2020-03-07 17:11
#20
本帖最后由 chesterlyd 于 2020-3-7 09:12 编辑

大佬,按照你的贴子设置了引导。先安装的win10,然后deepin我是用U盘安装的已经安装好了。但是用引导启动的是出现了这个错误。

C盘根目录下的grldr文件



Reply View the author
1 / 2
To page