【2017.12.25】deepin安装U盘制作,支持 BIOS+UEFI,deepin_Recovery+Win PE
Tofloor
poster avatar
comzhong
deepin
2017-12-07 03:02
Author
本帖最后由 comzhong 于 2018-2-26 13:29 编辑

启动 U 盘制作,支持 BIOS+UEFI ,支持启动deepin_recovery + deepin_iso + win_pe

一、制作启动 U 盘

U盘启动文件分区要求为 FAT32,MBR分区表。要保存 4 GB 以上大文件,可以 U 盘多分区,第二分区用 NTFS格式,见10 楼:https://bbs.deepin.org/post/149708
网盘下载:https://pan.baidu.com/s/1c2GXPo0


1.下载     U盘grub2+bootmgr引导.7z     解压到    U盘根目录

2.写入 MBR 引导UEFI启动不需要这一步


——— 如果在 window下,运行 安装Legacy引导_编辑菜单.bat, 选择 “1 安装 grub2    引导”

——— 如果在 Linux 下,运行 install_Legacy_bash_shell.sh,按提示选择分区,再安装引导
          (在 U盘 目录,右键打开终端,输入:./i,然后按 TAB 自动补全, Enter 运行。)


二、加入镜像文件
1.启动 deepin_recovery     ——下载 deepin_15.5_recovery.7z 解压到 U盘根目录
2.启动 deepin_iso             ——下载 deepin_15.5 ISO 系统镜像,改名放置到 U盘根目录  /PE/deepin/deepin.iso
3.启动 win_pe                  ——下载  /PE/  文件夹放置到 U盘根目录,其中  \PE\UEFI\ 文件下包含 4个 wim 格式 Win PE 镜像,可按需选择下载

有效启动 wim 文件位置如下,可用另外的启动 wim 格式镜像放到相应位置替换即可启动:
     \PE\UEFI\Win8_PE_x86.wim
     \PE\UEFI\Win8_PE_x64.wim
     \PE\UEFI\Win10_PE_x86.wim
     \PE\UEFI\Win10_PE_x64.wim
=======================
U盘启动分区主要目录结构:
  1.        H:.
  2.        ├──boot\
  3.        │    └──*
  4.        ├──EFI\
  5.        │    └──*
  6.        ├──PE\
  7.        │    ├──deepin\
  8.        │    │      └──deepin.iso
  9.        │    ├──imgs\
  10.        │    │      ├──DG_x64.img
  11.        │    │      ├──dtstool.IMA
  12.        │    │      └──MAXDOS9.IMG
  13.        │    └──UEFI\
  14.        │            ├──Win8_PE_x86.wim
  15.        │            ├──Win8_PE_x64.wim
  16.        │            ├──Win10_PE_x86.wim
  17.        │            └──Win10_PE_x64.wim
  18.        ├──recovery\
  19.        │    └──*
  20.        ├──Readme\
  21.        │    └──*
  22.        ├──grldr
  23.        ├──grldr4
  24.        ├──install_Legacy_bash_shell.sh
  25.        └──安装Legacy引导_编辑菜单.bat
Copy the Code

=======================
更新:
2017.12.25——更新 grub2 菜单结构,更新 安装Legacy引导_编辑菜单_v1.5.7.bat
2017.12.16——更新 grub2 菜单结构,加入无忧论坛大神的 grub2 文件管理器(两个版本,一个简易版,一个增强版),感谢 grub2 文件管理器的作者
=======================




Reply Favorite View the author
Comments
poster avatar
deepinfrankqiu
2021-06-15 18:12
希望作者能更新一个2021版本
All Replies
4 / 7
To page
smallsfz
deepin
2018-02-27 03:55
#61
这个问题怎么解决 ?
Reply View the author
just7az
deepin
2018-03-11 18:18
#62
下载deepin.iso之后,直接用UltraISO制作启动U盘,这样可以吗?
Reply View the author
A·S·M·X·T 😏😜
deepin
2018-03-11 22:03
#63
U盘分区卷标label如果有空格bash会执行失败,建议提醒一下!

或者在dd命令中路径使用引号
Reply View the author
tlze
deepin
2018-03-28 19:35
#64
https://bbs.deepin.org/post/149708
按照楼主的方法做的,到第二步就傻眼了。用chmod给了权限也是不行。sudo后找不到命令。。。是有什么地方 ...

前面加上bash
  1. bash ./install_legacy_bash_shell_v1.1.3.sh
Copy the Code
Reply View the author
tlze
deepin
2018-03-28 19:37
#65
https://bbs.deepin.org/post/149708
这个问题怎么解决 ?

U盘分区程式比较老,MBR没有保留64个扇区。
删除再分区。
Reply View the author
jasonluo925
deepin
2018-04-21 01:14
#66
楼主, 想请教一下:
1. 如果是BIOS+MBR启动怎么弄, 我选择bat 安装 Grub 引导后, 弹出软件不知道怎么操作, 即使激活U盘分区, 在主机上也没有办法启动, UEFI启动正常.
2. 为什么我按你的下载, 在PE里也添加了imgs那些文件, 但是最后出来的Grub菜单里并没有 你图片中"  4, 5, 6, 8, 9, d"这些菜单.
Reply View the author
iseric
deepin
2018-04-22 20:35
#67
本帖最后由 iseric 于 2018-4-25 17:29 编辑

能不能从U盘的grub引导系统第一磁盘里面的引导器呢,就“如果有grub就引导grub,否则就引导Windows”这样,或者换句话说,我想加一条菜单,把控制权交还给第一磁盘里面的引导器,然后让电脑正常启动。
Reply View the author
zennu
deepin
2018-04-23 06:13
#68
安装的时候failure reading sector 0xfa94 from 'hd0'   要怎么处理大概意思就是安装失败吧  要怎么弄嘞
Reply View the author
zennu
deepin
2018-04-23 06:56
#69
如图   选择的那个deepin failsafe  然后自带的分区工具是可以看到我的分区的   但安装的时候是看不见的   重试了好几次重新分区不知道该怎么解决
Reply View the author
wenjie198881
deepin
2018-04-24 07:12
#70
标记一下。
Reply View the author
jasonluo925
deepin
2018-04-24 20:56
#71
想请教一下:
1. 如果是BIOS+MBR启动怎么弄, 我选择bat 安装 Grub 引导后, 弹出软件不知道怎么操作, 即使激活U盘分区, 在主机上也没有办法启动, UEFI启动正常.
2. 为什么我按你的下载, 在PE里也添加了imgs那些文件, 但是最后出来的Grub菜单里并没有 你图片中"  4, 5, 6, 8, 9, d"这些菜单.
Reply View the author
arlly
deepin
2018-04-24 21:07
#72
USB镜像写入工具  所有常见linux都可以正常写入使用。
Reply View the author
iseric
deepin
2018-04-26 01:26
#73
https://bbs.deepin.org/post/149708
楼主, 想请教一下:
1. 如果是BIOS+MBR启动怎么弄, 我选择bat 安装 Grub 引导后, 弹出软件不知道怎么操作,  ...

似乎是grub2没被正确安装到U盘mbr的原因,重装试试?看看有没有报错
Reply View the author
jasonluo925
deepin
2018-04-26 23:01
#74
https://bbs.deepin.org/post/149708
似乎是grub2没被正确安装到U盘mbr的原因,重装试试?看看有没有报错

多谢啦, 确认了一下, 估计也是Grub2没有被正确安装到U盘中, 可以请教一下详细的安装步骤, 双击那个BAT文件后应该进行什么样的操作呢?拜托啦.
Reply View the author
iseric
deepin
2018-04-27 08:27
#75
本帖最后由 iseric 于 2018-4-28 01:18 编辑
https://bbs.deepin.org/post/149708
能不能从U盘的grub引导系统第一磁盘里面的引导器呢,就“如果有grub就引导grub,否则就引导Windows”这样, ...

2018.4.28 更新
更新:使用configfile代替了chainloader,避免重新载入grub,并且大幅减少了代码量
  1. #########################
  2. # 06_pc.cfg
  3. # UEFI 模式启动
  4. if [ 'efi' == $grub_platform ] ; then
  5.     menuentry "[b] (实验性) 正常启动"                  --hotkey=b{
  6.         configfile "${prefix}/Config/NormalBootList.cfg"
  7.     }
  8. fi

  9. #############################
  10. # NormalBootList.cfg
  11. set timeout=10
  12. set default=0

  13. search --file --no-floppy --set=root /efi/deepin/grub.cfg
  14. search --file --no-floppy --set=root /efi/Microsoft/Boot/bootmgfw.efi

  15. if [ -e /efi/deepin/grub.cfg ] ; then
  16.     menuentry "[g] 启动 grub" --hotkey=g{
  17.         configfile ($root)/efi/deepin/grub.cfg
  18.     }
  19. fi
  20. if [ -e /efi/Microsoft/Boot/bootmgfw.efi ] ; then
  21.     menuentry "[w] 启动 Windows" --hotkey=w{
  22.         chainloader ($root)/efi/Microsoft/Boot/bootmgfw.efi
  23.         boot
  24.     }
  25. fi
Copy the Code



==================================================================================================


自己琢磨出了解决方案
  1. menuentry "[d] (实验性) 正常启动"                  --hotkey=d{
  2.       echo "正在链式启动,请等待...."
  3.       insmod part_gpt
  4.       insmod fat
  5.       set root=(hd1,1)
  6.       search --label --no-floppy --set=root EFI
  7.       search --file --no-floppy --set=root /EFI/ubuntu/grubx64.efi
  8.       search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
  9.       #若存在深度安装的grub则引导
  10.       if [ -e /EFI/deepin/grubx64.efi ]; then
  11.           chainloader (${root})/EFI/deepin/grubx64.efi
  12.       #否则,若存在Ubuntu安装的grub则引导
  13.       elif [ -e /EFI/ubuntu/grubx64.efi ]; then
  14.           chainloader (${root})/EFI/ubuntu/grubx64.efi
  15.       #否则,若存在Windows则引导
  16.       elif [ -e /EFI/Microsoft/Boot/bootmgfw.efi ]; then
  17.           chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
  18.       else
  19.           echo "找不到主硬盘中的grub2,请拔下U盘,按Ctrl+Alt+Del重启电脑!"
  20.           echo "Couln't find Grub2 in HDD, please remove the flash disk and press CTRL+ALT+DEL to reboot!"
  21.       fi
  22.       boot
  23. }
Copy the Code

在 x64 uefi 的 deepin 和 Windows 上测试通过
这段可以加上判断放到06_pc.cfg里
全文如下
  1. # 06_pc.cfg
  2. # 传统模式启动
  3. if [ "pc" == $grub_platform ] ; then        
  4.         menuentry "             "{configfile}
  5.         
  6.         menuentry "[4] DiskGenuis 分区工具"                         --hotkey=4{
  7.                 echo "正在启动 DiskGenuis 分区工具,请等待...."
  8.                 search --file --set=root /PE/imgs/DG_x64.img
  9.                 linux16 /boot/grub/memdisk
  10.                 initrd16 /PE/imgs/DG_x64.img
  11.         }

  12.         menuentry "[5] Dos 时代 工具箱"                                 --hotkey=5{
  13.                 echo "正在启动 Dos 时代 工具箱,请等待...."
  14.                 search --file --set=root /PE/imgs/DTStool.img
  15.                 linux16 /boot/grub/memdisk
  16.                 initrd16 /PE/imgs/DTStool.img
  17.         }

  18.         menuentry "[6] Maxdos   工具箱"                             --hotkey=6{
  19.                 echo "正在启动 Maxdos 工具箱,请等待...."
  20.                 search --file --set=root /PE/imgs/Maxdos9.img
  21.                 linux16 /boot/grub/memdisk
  22.                 initrd16 /PE/imgs/maxdos9.img
  23.         }

  24.         menuentry "[8] syslinux 菜单"                                         --hotkey=y{
  25.                 search --file --set=root /boot/syslinux/syslinux.bin
  26.                 chainloader +1
  27.         }

  28.         menuentry "[9] grub4dos 菜单"                                         --hotkey=g{
  29.                 search --file --set=root /boot/grub4dos/grub.exe
  30.                 linux16 /boot/grub4dos/grub.exe --config-file=/boot/grub4dos/menu.lst
  31.         }
  32.         
  33.         menuentry "[d] 正常启动"                         --hotkey=d{
  34.                 echo "正在启动 chainloader +1,请等待...."
  35.                 insmod ntldr
  36.                 set root=(hd1,1)
  37.                 chainloader +1
  38.                 boot
  39.         }
  40. fi

  41. # UEFI 模式启动
  42. if [ 'efi' == $grub_platform ] ; then
  43.     if [ 'x86_64' == $grub_cpu ] ; then
  44.         menuentry "[d] (实验性) 正常启动"                  --hotkey=d{
  45.             echo "正在链式启动,请等待...."
  46.             insmod part_gpt
  47.             insmod fat
  48.             set root=(hd1,1)
  49.             search --label --no-floppy --set=root EFI
  50.             search --file --no-floppy --set=root /EFI/ubuntu/grubx64.efi
  51.             search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
  52.             #若存在深度安装的grub则引导
  53.             if [ -e /EFI/deepin/grubx64.efi ]; then
  54.                 chainloader (${root})/EFI/deepin/grubx64.efi
  55.             #否则,若存在Ubuntu安装的grub则引导
  56.             elif [ -e /EFI/ubuntu/grubx64.efi ]; then
  57.                 chainloader (${root})/EFI/ubuntu/grubx64.efi
  58.             #否则,若存在Windows则引导
  59.             elif [ -e /EFI/Microsoft/Boot/bootmgfw.efi ]; then
  60.                 chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
  61.             else
  62.                 echo "找不到主硬盘中的grub2,请拔下U盘,按Ctrl+Alt+Del重启电脑!"
  63.                 echo "Couln't find Grub2 in HDD, please remove the flash disk and press CTRL+ALT+DEL to reboot!"
  64.             fi
  65.             boot
  66.         }
  67.     else
  68.         menuentry "[d] (实验性) 正常启动"                  --hotkey=d{
  69.             echo "正在链式启动,请等待...."
  70.             insmod part_gpt
  71.             insmod fat
  72.             set root=(hd1,1)
  73.             search --label --no-floppy --set=root EFI
  74.             search --file --no-floppy --set=root /EFI/ubuntu/grub.efi
  75.             search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
  76.             #若存在深度安装的grub则引导
  77.             if [ -e /EFI/deepin/grubx64.efi ]; then
  78.                 chainloader (${root})/EFI/deepin/grub.efi
  79.             #否则,若存在Ubuntu安装的grub则引导
  80.             elif [ -e /EFI/ubuntu/grubx64.efi ]; then
  81.                 chainloader (${root})/EFI/ubuntu/grub.efi
  82.             #否则,若存在Windows则引导
  83.             elif [ -e /EFI/Microsoft/Boot/bootmgfw.efi ]; then
  84.                 chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
  85.             else
  86.                 echo "找不到主硬盘中的grub2,请拔下U盘,按Ctrl+Alt+Del重启电脑!"
  87.                 echo "Couln't find Grub2 in HDD, please remove the flash disk and press CTRL+ALT+DEL to reboot!"
  88.             fi
  89.             boot
  90.         }
  91.     fi
  92. fi
Copy the Code

对了,记得把 ./EFI/microsoft 改名为 ./EFI/ms,由于 grub 的 search 不区分大小写,在搜索硬盘上的efi分区的时候会错误地将U盘设为root,最终的结果就是,chainloader引导了U盘里的bootloader……表现为“进入了U盘里的Windows Boot Manager(即启动PE的界面)”
Reply View the author
iseric
deepin
2018-04-27 08:34
#76
https://bbs.deepin.org/post/149708
多谢啦, 确认了一下, 估计也是Grub2没有被正确安装到U盘中, 可以请教一下详细的安装步骤, 双击那个BAT文 ...

https://blog.erickwok.space/%E5%88%B6%E4%BD%9C-winpe-linux-%E5%A4%9A%E5%90%AF%E5%8A%A8u%E7%9B%98/这是我的博文,里面有详细写明每一个步骤,配有截图,你可以参考一下
Reply View the author
jasonluo925
deepin
2018-04-27 21:04
#77
https://bbs.deepin.org/post/149708
https://blog.erickwok.space/%E5%88%B6%E4%BD%9C-winpe-linux-%E5%A4%9A%E5%90%AF%E5%8A%A8u%E7%9B%98/这 ...

多谢了, 你的的博客写的太好了, 很详细, 我发现我的步骤和你写的是一样的, 到最后只能通过UEFI,但是BIOS启动却启动不了.
Reply View the author
iseric
deepin
2018-04-28 08:18
#78
https://bbs.deepin.org/post/149708
多谢了, 你的的博客写的太好了, 很详细, 我发现我的步骤和你写的是一样的, 到最后只能通过UEFI,但是BIOS ...

BIOS 无法启动的话说明 grub 没有成功写入 MBR
你可以参考一下Linux的sh脚本尝试自己写入,Linux的脚本写得简单些,只用了dd工具
Reply View the author
jasonluo925
deepin
2018-05-08 20:41
#79
https://bbs.deepin.org/post/149708
BIOS 无法启动的话说明 grub 没有成功写入 MBR
你可以参考一下Linux的sh脚本尝试自己写入,Linux的脚本 ...

唉,是的呢, 也是参考你博客里写的那样命令, 还是启动不了Bios. 提示成功了, 和你写的一样, 就是不能启动.
命令: sudo bash install_Legacy_bash_shell_v1.1.3.sh". 文件就是本贴里楼主网盘里的文件.
Reply View the author
ycscg
deepin
2018-05-10 03:35
#80
It has been deleted!
4 / 7
To page