梳理一下因主板启动模式导致Deepin不能安装的情形
Tofloor
poster avatar
y***[email protected]
deepin
2017-06-19 03:43
Author
本帖最后由 yjgsz 于 2017-6-18 20:02 编辑

      论坛中有关Deepin不能安装或安装时提示需格式等问题的帖子较多(如“安装失败”https://bbs.deepin.org/post/141167),也有人因误格式化造成数据损失。
   这里面不少是因为不了解UEFI和传统BIOS启动方式的区别所致(详细了解建议百度一下),涉及主板启动模式和硬盘格式。简单来说,UEFI与GPT硬盘格式搭配,传统BIOS与MBR硬盘格式搭配。
    这里只简单归纳梳理,供参考,也欢迎坛友交流完善。
    分常见的3种情况简单归纳下:
    1、新买的已安装WIN系统的品牌机。目前新买品牌机大都已预装WIN10系统,且是UEFI模式启动。因此内置硬盘也肯定是GPT格式,先腾出适当硬盘空间,再用制作好的Deepin安装U盘启动安装,一般不会有什么问题。但安装Deepin前,进入主板BIOS设置,关闭Secure Boot(安全启动)。
    2、旧机器。
    一是只有传统BIOS模式启动的老电脑,安装时一般也不会有问题。
    二是已支持UEFI模式的旧电脑,并有传统BIOS模式启动的WIN系统,硬盘格式为MBR格式,安装时可能会有问题。如主板BIOS设置中启动模式为自动,则说明既可以UEFI启动,也可以Legacy启动,支持两种方式启动。用Deepin安装U盘启动时,会出现两个U盘启动选项(Deepin安装U盘支持两种格式启动),其中之一有UEFI字样。如果是用UEFI启动,但硬盘是MBR格式,就自然安装不上,出现硬盘格式化警告提示。
    解决方法: 选择以非UEFI方式启动U盘,或主板设置成仅Legacy boot(如可能)
   3、新组装机器。
   一是新机器新硬盘,这种全新电脑,安装Deepin也不会有问题。
   二是新机器旧硬盘,旧硬盘上有数据,且是硬盘是MBR格式。目前的新主板都支持UEFI模式启动,且有的主板上是默认启动方式(UEFI  ONLY)。在这种情况下,要进入主板设置,开启Legacy  boot(或CSM Support)。
    这里面不同的主板设置也有所不同,有的可以设置为仅Legacy  boot,也有的只是开启(支持),就是两种方式都支持。
   如果是设置为仅Legacy  boot,安装时就类似旧电脑的第一种情形。
   如果是支持双启动模式,类似旧电脑的第二种情形。

    此外,关于安装后不能启动的问题,因原因较复杂,不在本文讨论范围。
    多系统、多硬盘情形的启动配置可参考下面链接内容(grub详细用法可百度一下):
    https://bbs.deepin.org/post/139552



Reply Favorite View the author
All Replies
jingle
deepin
2017-06-19 18:25
#1
厉害的 word哥
Reply View the author
山西姚一
deepin
2017-06-19 18:33
#2
赞同……
Reply View the author
deepinwang
deepin
2017-08-09 05:31
#3
现在双硬盘安装失败的情况比较多,看来还需要扩充扩充。
不过情况确实比较复杂,没有BIOS Boot分区(或者EFI分区)、多个BIOS Boot分区(或者EFI分区)、Windows自动改写EFI都有可能,感觉论坛不一定能解决所有问题,最好还是发动群众力量,多培养点志愿者。
Reply View the author
y***[email protected]
deepin
2018-08-26 01:41
#4
本帖最后由 yjgsz 于 2018-8-27 19:01 编辑

不管是先装WIN10,还是先装DEEPIN,启动引导基本上分为两种类型:BIOS和UEFI模式
https://bbs.deepin.org/post/166961
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压缩包解压缩到引导分区,根据需要修改)

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模式)文件都放在引导区。
比如,我把 deepin live2.0 的ISO (deepin-live-system-2.0-amd64.iso)文件放在硬盘的linux文件夹下,打开ISO文件(可用ultraiso,win8以上双击ISO会自动加载),
把live文件夹中的vmlinuz、initrd.img 复制到硬盘的linux文件夹中,然后编辑启动菜单配置文件menu.lst(BIOS模式grub引导),
开机后直接引导硬盘上的deepin-live-system-2.0-amd64.iso,启动 Deepin Live 2.0 进行系统维护。具体内容如下:
title Deepin Live 2.0 ISO
root (hd3,3)
kernel        /linux/vmlinuz boot=live findiso=/linux/deepin-live-system-2.0-amd64.iso components quiet splash locales=zh_CN.UTF-8
initrd        /linux/initrd.img
  #我电脑中有多个硬盘,deepin-live-system-2.0-amd64.iso 所在分区为 (hd3,3),各人根据自己实际情况进行修改。  # 现15.7版安装盘 deepin-15.7-amd64.iso 不支持Live 模式,如以后版本支持的话则更方便,安装与维护都从ISO直接引导就行了。  当然放在U盘上也可以,比较方便。U盘单分区或多个分区的第一个分区则为 (hd0,0)








Reply View the author
要讲武德
deepin
2018-08-26 02:05
#5
写的好啊
Reply View the author