chishingchan 发表于 2020-10-25 23:34:38

GRUB2 如何启动 U 盘上的 Win10 启动文件

安装好优麒麟后,硬盘以GRUB2的形式启动,如下是启动硬盘上的 Windows 系统(相关段落):
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (在 /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-DAD3-AEBD' {
      insmod part_gpt
      insmod fat
      set root='hd0,gpt2'
      if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2DAD3-AEBD
      else
          search --no-floppy --fs-uuid --set=root DAD3-AEBD
      fi
      chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###

U 盘是优麒麟的安装 U 盘,U盘上也同时 COPY 有支持 Win10 的启动文件:

bootmgr
bootmgr.efi
<boot>
<efi>


请问:U盘 GRUB2 菜单该如何创建才可以启动U盘上的 bootmgr 或 bootmgr.efi ?
请问:U盘 GRUB2 菜单该如何创建才可以启动U盘上的 bootmgr 或 bootmgr.efi ?
请问:U盘 GRUB2 菜单该如何创建才可以启动U盘上的 bootmgr 或 bootmgr.efi ?



附上优麒麟的 U 盘启动菜单 U:\boot\grub\grub.cfg:
set timeout=30

loadfont unicode

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

menuentry "Ubuntu Kylin" {
      set gfxpayload=keep
      linux      /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed locale=zh_CN keyboard-configuration/layoutcode?=cn maybe-ubiquity quiet splash ---
      initrd      /casper/initrd
}
menuentry "Ubuntu Kylin (safe graphics)" {
      set gfxpayload=keep
      linux      /casper/vmlinuz nomodeset file=/cdrom/preseed/ubuntu.seed locale=zh_CN keyboard-configuration/layoutcode?=cn maybe-ubiquity quiet splash ---
      initrd      /casper/initrd
}
menuentry "OEM install (for manufacturers)" {
      set gfxpayload=keep
      linux      /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed locale=zh_CN keyboard-configuration/layoutcode?=cn only-ubiquity oem-config/enable=true quiet splash ---
      initrd      /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
      exit
}
menuentry 'UEFI Firmware Settings' {
      fwsetup
}
fi


chishingchan 发表于 2020-10-25 23:39:56

我的意思其实是将 优麒麟 的系统 ISO 文件写到 U 盘后,再将 Win10 系统 ISO 文件内文件复制到 U 盘下,然后修改启动菜单,让 U 盘支持安装 优麒麟 的同时也支持安装 Win10 系统。
现在给这个 修改启动菜单 给难住了!

xhan 发表于 2020-10-25 23:48:38

本帖最后由 xhan 于 2020-10-26 00:12 编辑

学习学习

chishingchan 发表于 2020-10-25 23:55:29

xhan 发表于 2020-10-25 23:48
谢谢分享

我是提问,并没有分享。菜单源码 是提供给我解答的高手参考的。

xhan 发表于 2020-10-26 00:11:37

chishingchan 发表于 2020-10-25 23:55
我是提问,并没有分享。菜单源码 是提供给我解答的高手参考的。

哦!不好意思,

my9823 发表于 2020-10-26 06:04:44

bios的话insmod加载ntldr模块和必须的文件系统支持模块后用ntldr /bootmgr;uefi用chinaloader加载efi试试。

2011cwj6958 发表于 2020-10-26 08:13:46

U盘上弄个独有定位文件,GRUB2查找这个文件分区里的bootmgr bootmgr.efi 启动

chishingchan 发表于 2020-10-26 22:36:19

我想要完整示例的,谁能帮忙解答?

hilsonma 发表于 2020-10-27 13:44:58

楼主的问题应该是如何使用grub2引导u盘上的win10原版安装镜像来进行win10安装。
这个问题wintoflash探索过,由于我没有这个需求没有过多关注,楼主可以找他分享的run / grubfm 来学习。
想要现成的解答可能需要耐心等待,而且不一定能等到。

my9823 发表于 2020-10-27 19:45:38

我想楼主是想把grub2安装到U盘上吧?在linux上用grub-install安装grub2为U盘的bootloader,在编辑菜单文件。看一楼才菜单,你的硬盘的gpt格式第一分区不会是efi分区吧,第二分区是windows?

my9823 发表于 2020-10-27 19:58:52

本帖最后由 my9823 于 2020-10-27 20:00 编辑

你的U盘有没有分区,还是只有一个分区?分区类型是什么?因为grub2是模块化的,用什么功能加载什么模块。

my9823 发表于 2020-10-27 20:05:13

首先插入必要模块,再用search -f -s /路径/文件确定文件位置(相当于grub4dos中的find --set-root),再确定是insmod ntldr;ntldr /boormgr还是chianloader/路径/efi文件名。

chishingchan 发表于 2020-10-27 22:46:13

my9823 发表于 2020-10-27 19:58
你的U盘有没有分区,还是只有一个分区?分区类型是什么?因为grub2是模块化的,用什么功能加载什么模块。

U 盘是新 U 盘,没有量产分区什么的!
2# 表述的很明白,优麒麟 ISO 写入 U 盘后是 FAT32 格式的,与 Windows 10 是相同的格式。
以这样的话,应该需要加载哪种模块?

my9823 发表于 2020-10-28 05:56:44

既然能启动,说明加载了分区和文件系统模块,menuentry里可以仿照上面判断grub_platform变量的值是pc时,用ntldr /bootmgr启动,否则就是uefi启动用chianloader /bootmgr.efi

my9823 发表于 2020-10-28 06:02:44

启动菜单界面按下c键进入命令行模式,lsmod看看core.img应该内置了很多模块吧?如果没有先插入ntldr模块,试试。这个模块主要用于启动以前xp时代的ntldr和bios启动时的bootmgr,Uefi不用这个模块。

窄口牛 发表于 2020-10-28 07:46:42

grub2直接启动不了它,只能启动win的引导文件,之后就交给win的引导了(回到了pe的引导,win10安装就是一个定制精简pe启动)。
menuentry "从优盘启动"--class udisk{
    search --file /efi/zkn/zkn.cfg --set=root
    configfile /efi/zkn/zkn.cfg
}
fi
menuentry "启动windows 7"    --class win7{
      search --file /64win7/bootmgfw.efi --set=root
       chainloader /64win7/bootmgfw.efi
}
menuentry "启动windows PE"    --class win10{
      search --file /efi64/64w10.efi --set=root
       chainloader /efi64/64w10.efi
}
menuentry "启动Windows xp" --class winxp{
              set root='(hd0,gpt4)'
   ntldr /WINXP
}
menuentry "启动oc苹果系统菜单" --class macOS{

      search --file /efi/OC/BOOTx64.efi --set=root
   chainloader /efi/OC/BOOTx64.efi
}

menuentry "进入安卓测试菜单" --class android{
    configfile /efi/zkn/zkn1.cfg
}
menuentry "启动深度 OS 菜单" --class deepin{
   
      configfile /efi/zkn/deepin.cfg
}
menuentry "启动 FYDEOS 菜单" --class deepin{
#    search --file /EFI/fydeos/bootx64.efi --set=root
      configfile /efi/zkn/fyde.cfg
}

窄口牛 发表于 2020-10-28 07:48:29

pe引导就是三个文件,设置bcd了。应该就没问题了吧。
l
页: [1]
查看完整版本: GRUB2 如何启动 U 盘上的 Win10 启动文件