不管是先装Win10还是先装Deepin,启动问题轻松搞定
Tofloor
poster avatar
y***[email protected]
deepin
2018-08-26 02:22
Author
本帖最后由 yjgsz 于 2018-10-20 11:01 编辑

一直有人发贴,问关于Win和Deepin双系统启动的问题,电脑硬件和配置复杂多样,深度官方安装程序不能解决所有问题,有人安装deepin后进不了WIN10,有人安装WIN10后,找不到deepin启动项,进不了deepin了,等等。
虽然论坛已有不少这方面的帖子,但不完整。今天有空,简单梳理归纳下,给有用的人。
如有人继续问:什么是UEFI和BIOS,什么是GPT和MBR,主板要怎么设置,grub、grub2是怎么引导的,怎么知道自己电脑和硬盘的模式等,这些不是本文要讲的内容,请自行百度学习。

不管是先装Win10,还是先装Deepin,启动引导基本上分为两种类型:BIOS和UEFI模式

1、BIOS+MBR,安装WIN后,启动硬盘的主引导记录为windows 6X,启动分区引导记录为bootmgr,WIN7以上引导文件为bootmgr,菜单文件为BCD(\boot)。
    安装deepin后,引导记录变为grub,菜单配置文件为menu.lst(\menu.lst)。后安装的系统会更改之前安装的引导方式。U盘启动WINPE,用BOOTICE可以轻松更改引导方式。
2、UEFI+GPT,不需要引导记录,只需要一个FAT32分区(不要求一定是第一个分区),里面有引导文件就行,如有多个FAT32分区,则从找到的第一个FAT32分区开始引导。
   UEFI模式下,所有系统的引导都是bootx64.efi,但linux和win引导文件同名,但内容不同,分别引导各自系统。
  WIN引导方式菜单配置文件为BCD(\EFI\microsoft\boot),grub2(linux)的菜单文件为grub.cfg(\boot\grub)。
  可通过系统由grub2引导,再添加WIN启动项来启动WIN10(将WIN的引导文件bootx64.efi改名,添加到grub2的配置文件grub.cfg 中)。

详细内容如下:

1、BIOS模式下用GRUB引导比较方便,先设置主引导记录和分区引导记录为GRUB,并将grldr.mbr复制到硬盘(U盘)引导分区根目录下。既可以引导WIN,也可以引导LINUX,还可以直接引导ISO文件。

2、UEFI模式(GPT硬盘)不需要主要引导记录,用GRUB2引导较方便。只要求引导分区是FAT32格式,将引导文件放在引导分区就行了。启动时会自动找第一个FAT32分区进行引导。

3、GRUB只要修改根目录下的menu.lst 就行了。
title Win8_Win10 PE
root (hd0,0)
#find --set-root /bootmgr
chainloader /bootmgr


GRUB2引导只要修改\boot\grub 下的grub.cfg 即可。
(为方便使用,可直接在我的模板上修改,将grub_uefi_deepin_usb.rar压缩包解压缩到引导分区,根据需要修改)

BCD菜单可用BOOTICE 编辑,很方便,注意位置,BIOS和UEFI模式下BCD位置不同。

4、UEFI模式下,GRUB2 引导文件为\efi\boot\bootx64.efi ,不管是WIN 还是LINUX,都是bootx64.efi。但文件内容不同,LINUX的bootx64.efi 只会启动LINUX(grub2)。
         GRUB2 配置文件为\boot\grub\grub.cfg,可先将原WIN的引导文件bootx64.efi 改名为bootx64w.efi (随意),可在WIN 系统ISO盘的\efi\boot下找到。
      再修改grub.cfg,添加 WIN系统的bootx64w.efi 引导项,就能引导WIN系统。menuentry "WIN8_WIN10 PE UEFI USB" {
        #set root=(hd0,1)
    chainloader /EFI/boot/bootx64w.efi
                }        

5、在WINT系统或PE下,如看不到引导分区(ESP分区自动隐藏),可运行partid.exe,会自动加载并显示。

6、扩展:deepin-15.7-amd64.iso 在UEFI模式下是GRUB2引导,配置文件为\boot\grub\grub.cfg,在BIOS模式下是ISOLINUX 引导,配置文件是\ISOLINUX\LIVE.CFG
在制作好DEEPIN安装U盘后,可进一步修改配置文件,添加WINPE的引导项,这样,一个U盘,既能引导PE,又能引导DEEPIN进行安装,方便多了。label winpe_usb
kernel /syslinux/chain.c32
append hd0 0 ntldr=/bootmgr

7、系统启动先引导grub 或grub2,再引导WIN或PE。
   BIOS 模式下,grub(\menu.lst)--grub菜单--bootmgr--BCD启动菜单(\boot\BCD)--启动WIN,
   UEFI模式下,GRUB2(\boot\grub\grub.cfg)--bootx64.efi---grub2菜单--bootx64w.efi( WIN的bootx64.efi 改名)--BCD启动菜单(\efi\microsoft\boot\BCD)--启动WIN   XP 系统引导文件是NTLDR,WIN7 以上引导文件是bootmgr

8、BIOS模式下,如平时用的是WIN,难得用LINUX,或又习惯WIN启动菜单的(BCD)。
   也可以用BOOTICE在BCD中添加 grub菜单项,再引导DEEPIN。先添加实模式启动项,再在menu.lst 中配置LINUX启动菜单项。

9、 目前,我台式机有3个机械硬盘和一个SSD,DEEPIN 安装在机械硬盘上,我不喜欢用 update-grub,  也是自己配置grub 的 menu.lst,直接启动Deepin。
title Deepin Linux 15.7_amd64 (hd1,3)  install k: /dev/sdb4
   root (hd1,3)
    kernel  /boot/vmlinuz-4.15.0-29deepin-generic root=/dev/sdb4 ro  splash quiet
     initrd  /boot/initrd.img-4.15.0-29deepin-generic

我也不用kernel  /boot/vmlinuz-4.9.0-deepin2-amd64 root=UUID=f0d30953-xxxx-xxxx-xxxx-xxxxxxxxxx ro recovery,因格式化重装后UUID会变。
用root=/dev/sdb4 这种方式,重装后不用修改多系统引导文件的配置,最多修复一下引导方式。
不足之处是,内核更新后,要修改一下配置文件的引导文件名,现在15.7版的是vmlinuz-4.15.0-29deepin-generic 和initrd.img-4.15.0-29deepin-generic,
如以后升级为vmlinuz-4.16.0-deepin-generic 和initrd.img-4.16.0-deepin-generic,那对应改一下就行了,文件在deepin系统盘的\boot文件夹。

配置文件的(hd0,0)或(hdx,x),及 /dev/sdbx 要看引导分区的具体位置。有疑问百度一下。

10、其他:UEFI+MBR硬盘,实际上可以启动WIN,但 WIN系统只能是GHOST 恢复的或用imagex工具安装,不能用ISO进行install安装。     正常安装必须是UEFI+PGT硬盘,64位系统。
    综合以上方法,可以实现双模式(uefi、bios)多硬盘多系统、U盘多分区多系统引导,从WIN、PE、LINUX到 黑苹果、白苹果(苹果MacBook是EFI引导),都可以。   
  不管是先装WIN10,还是先装DEEPIN,统统搞定。
  为方便引导管理,最好增加ESP(FAT32分区)引导分区的容量,我的硬盘和U盘的引导分区是3GB,将PE、linux ISO(方便启动 LIVE模式)文件都放在引导区。

https://bbs.deepin.org/post/166961
https://bbs.deepin.org/post/141247








Reply Favorite View the author
All Replies
2 / 2
To page
盘灶车站
deepin
2020-03-12 17:41
#21
果断收藏.
Reply View the author
zhoushu9797
deepin
2020-03-19 03:58
#22
谢谢分享!已经按照说明改好了引导。
Reply View the author
waittingsummer
deepin
2020-03-19 05:01
#23
太麻烦了,我就无脑先装win10再装deepin就好了
Reply View the author
天下无双有我
deepin
2020-04-03 04:01
#24
这是多系统启动的原理性论述,写的很专业,正是我需要的。只是看了一遍没太搞懂,现在头有点晕,改天再研究一下!
Reply View the author
y***[email protected]
deepin
2020-04-14 21:11
#25
本帖最后由 yjgsz 于 2020-4-14 14:54 编辑

帖子内容再归纳一下:

BIOS引导模式
1、硬盘为MBR格式,引导分区须激活,为主分区,如要支持双模式启动,最好为fat32格式,为方便以后调整,也可放在最后一个分区。
2、主引导记录为Windows MBR,分区引导为GRUB4DOS模式
   grub的引导文件grldr.mbr,配置文件为目录下的menu.lst,
  配置menu.lst启动菜单,可引导至WIN、PE或Linux 等

   注意:如分区引导为BOOTMGR,以bootmgr 通过 BCD加载实模式grldr.mbr方式引导,如引导的fat32分区不是第一个分区,可能引导失败。

   修改硬盘主引导记录和分区引导记录,以及在WIN10启动配置文件BCD中添加grub引导,可用BOOTICEx64_1.3.4.exe

UEFI引导模式
1、硬盘建议为GPT格式,引导分区不需要激活,不讲究分区位置顺序,但必须为fat32格式,默认引导文件为bootx64.efi
  (在UEFI模式下install或setup安装系统,硬盘必须为GPT格式,
     但通过ghost等方式恢复或WinNTSetup等工具安装的系统,可在MBR硬盘上启动)
2、grub2的引导文件为 grubx64.efi,配置文件为grub.cfg
3、uefi模式下,从WIN的引导文件 bootx64.efi(默认)不能引导grub,
     先将WIN默认的bootx64.efi,改名为bootx64win.efi (随意),再将grub2的引导文件 grubx64.efi 改名为bootx64.efi,
    这样默认的bootx64.efi 其实就是原来的grubx64.efi ,启动时会加载grub启动菜单(grub.cfg ),引导 LINUX系统。
    并且只要在grub.cfg 文件中添加 WIN系统引导项(如引导bootx64win.efi ),就可启动WIN系统或PE
menuentry "WIN10 PE UEFI " {
            chainloader /EFI/boot/bootx64win.efi
                }        
Reply View the author
y***[email protected]
deepin
2020-04-24 04:16
#26
本帖最后由 yjgsz 于 2020-4-23 20:18 编辑

我的deepin 20 双硬盘多系统引导方式及模板
链接: https://pan.baidu.com/s/1dFpzAaVELyPhGwnLjeScBg 提取码: ts52

本模板支持BIOS(grub4dos、grub2、bootmgr)和UEFI(grub2、bootx64.efi)引导,
1、将文件解压缩至引导分区(根目录下)
2、根据自己硬盘及安装分区的实际情况,简单修改下启动菜单文件就可以了

可引导 Windows xp 、7、8、10 及各种PE、linux 及Live模式,甚至黑苹果。 适用于普通硬盘、SSD 和U盘的多系统启动。  

注意:一点小麻烦,deepin 内核升级后,需要修改下菜单中的内核引导文件名,不然引导的还是旧内核
          菜单分别为  menu.lst、grub-bios.cfg(grub-efi-64.cfg)
例如:
    kernel  /boot/vmlinuz-4.19.0-6-amd64  root=/dev/sdb3 ro  splash quiet
    initrd  /boot/initrd.img-4.19.0-6-amd64

   linux  /boot/vmlinuz-4.19.0-6-amd64root=/dev/nvme0n1p4 ro  splash quiet
   initrd  /boot/initrd.img-4.19.0-6-amd64
   
如内核从 4.19 升级到 5.3 ,要将上面的vmlinuz-4.19.0-6-amd64、initrd.img-4.19.0-6-amd64
     分别改为vmlinuz-5.3.0-3-amd64、initrd.img-5.3.0-3-amd64
    具体文件名见安装后系统分区的/boot 文件夹




Reply View the author
2 / 2
To page