|
|
bios+grub2引导win+vhd+wim+iso的多个写法学习小结
在学习grub2的过程中,得到了多个网友的热心指导,特别是几位大大的悉心指导,让我获益非浅。
为此,我也想作了小小的贡献,把我学习中的小结贴出。
若下述有误的,敬请指出。
对bios+grub2引导win+vhd+wim+iso的方法,我未能列出的,敬请各位列出,供大家学习借鉴为谢!
所需引导工具是从本论坛下载的
==========================
一、引导win分区系统
#试图列出我所知道的 bios+grub2 方式下引导winnt6主要是win10+win11 分区系统的多个写法
#因在bios+grub2方式下,run能引导cfg+wim+vhd/vhdx,但不知如何引导windows分区系统,所以未列出。
menuentry "0.[bios] win11-bcd" --hotkey=0 --class=windows{
insmod ntldr
ntldr (${root})/boot/win/win11/bootmgr
}
#/boot/win/win11/bcd是通用的,即可引导安装在不同电脑、不同磁盘不同分区中的win11分区系统
menuentry "1.[bios] win10-bcd" --hotkey=1 --class=windows{
insmod ntldr
ntldr (${root})/boot/win/win10/bootmgr
}
#/boot/win/win10/bcd是通用的,即可引导安装在不同电脑、不同磁盘不同分区中的win10分区系统
menuentry "2.[bios] Win10-ima" --hotkey=2 --class=windows {
linux16 /boot/grub2/memdisk
initrd16 /boot/win/bwin10.ima
#memdisk为syslinux的6.03等版本的文件
#该方式可与esp分区的引导文件合盘
}
menuentry "3.[bios] Win10-ntboot" --hotkey=3 --class=windows{
insmod ntboot
search --file --no-floppy --set=wroot /Windows/system32/AzureSettingSyncProvider.dll
#该文件为win10的特征文件
ntboot --efi=(${root})/boot/grub2/run/ms/Bootmgr.exe --win ($wroot)
#win系统安装在mbr分区硬盘或gpt分区硬盘均可
#其引导机理是ntboot修改其内部\boot\bcd的值为系统引导分区是($wroot),再用bootmgr.exe引导该bcd。
#即ntboot是用虚拟盘上的bcd,按实际文件名修改虚拟盘的bcd,启动硬盘上的win+wim+winvhd。
}
menuentry "4.[bios] Win10-wimboot" --hotkey=4 --class=windows{
insmod wimboot
search --file --no-floppy --set=wroot /Windows/system32/AzureSettingSyncProvider.dll
#该文件为win10的特征文件
wimboot @:bootmgfw.efi:(${root})/boot/grub2/run/ms/Bootmgr.exe @:bcd:(${wroot})/boot/bcd
#winboot不能用bootmgr而只能用Bootmgr.exe,且不支持bcd是通用的,该bcd只能设定win10所在分区
#上句要在windows分区上添加\boot\bcd
}
menuentry "5.[bios] win10-ntloader" --hotkey=5 --class=windows{
search --file --no-floppy --set=root /ntloader/ntloader
search --file --no-floppy --set=dev /Windows/system32/AzureSettingSyncProvider.dll
#该文件为win10的特征文件
probe -s dev_uuid -u $dev
linux16 /ntloader/ntloader uuid=${dev_uuid}
initrd16 /ntloader/initrd.cpio
boot
}
==============================
二、引导vhd/vhdx
#试图列出我所知道的 bios+grub2 方式下引导win7/8/10/11_x64的原生vhd/vhdx系统引导的多个写法
#bios+grub2方式下,map只能交换磁盘,因此未列出
#用win7_x64.vhd及win8.1_x64.vhdx系统作的测试。因电脑中未安装win10vhdx及win11vhdx系统,未用后两者作测试。
menuentry "0.[bios] Win8vhd-bcd" --hotkey=0 --class=windows{
insmod ntldr
ntldr (${root})/boot/win/win8vhd/bootmgr
}
menuentry "1.[bios] Win7vhd-bcd" --hotkey=1 --class=windows{
insmod ntldr
ntldr (${root})/boot/win/win7vhd/bootmgr
}
menuentry "2.[bios] Win7vhd-ima" --hotkey=2 --class=windows {
linux16 /boot/grub2/memdisk
initrd16 /boot/win/bwin7vhd.ima
#memdisk为syslinux的6.03等版本的文件
#该方式可与esp分区的引导文件合盘
}
menuentry "3.[bios] Win7vhd-ntboot" --hotkey=3 --class=windows {
insmod ntboot
search --file --no-floppy --set=vroot /vhds/win7_x64.vhd
ntboot --efi=(${root})/boot/win/bootmgr_ntboot/Bootmgr.exe --vhd ($vroot)/vhds/win7_x64.vhd
}
menuentry "4.[bios] Win7vhd-wimboot" --hotkey=4 --class=windows{
insmod wimboot
search --file --no-floppy --set=vroot /boot/win/win7vhd/bcd
wimboot @:bootmgfw.efi:(${root})/boot/win/bootmgr_ntboot/Bootmgr.exe @:bcd:(${vroot})/boot/win/win7vhd/bcd
}
menuentry "5.[bios] Win7vhd-run" --hotkey=5 --class=windows{
insmod ntboot
source $prefix/run/run.cfg
run /vhds/win7_x64.vhd
}
menuentry "6.[bios] Win7vhd-ntloader" --hotkey=6 --class=windows{
search -s -f /ntloader/ntloader
search -s dev -f /vhds/win7_x64.vhd
probe -s dev_uuid -u $dev
linux16 /ntloader/ntloader uuid=${dev_uuid} vhd=/vhds/win7_x64.vhd
initrd16 /ntloader/initrd.cpio
}
=========================================
三、引导wim+iso
#试图列出我所知道的 bios+grub2 方式下引导winnt6之win10pe+win11pe-wim+iso系统的多个写法
#并测试winpe.wim+winpe.iso显示全屏而不花屏和显示半屏的情况。
#在uefi+grub2方式下引导winpe.wim+winpe.iso,基本不会出现花屏和显示半屏问题,显示是的全屏。
#但在bios+grub2方式下引导winpe.wim+winpe.iso,时常出现花屏和显示半屏情况。
#因在bios+grub2方式下,因map模块仅能交换磁盘,run要调用该模块,由此不能引导iso,使得引导iso仅memdisk这一法。
menuentry "0.[bios] Win10pe-wim-ntboot" --hotkey=0 --class=windows{
insmod ntboot
search --file --no-floppy --set=broot /boot/grub2/run/ms/Bootmgr.exe
#此bootmgr.exe是bios_grub2-run提供的,专用于bios+grub2+ntboot+wimboot引导win+wim+vhd用的,不是用BMplus生成的bootmgr.exe
search --file --no-floppy --set=wroot /winpe/win10pe_x64_bios_uefi.wim
terminal_output console
set gfxpayload=keep
echo "CONSOLE"
ntboot --highest=yes --efi=($broot)/boot/grub2/run/ms/Bootmgr.exe --sdi=($wroot)/winpe/boot.sdi --wim ($wroot)/winpe/win10pe_x64_bios_uefi.wim
#ntboot会修改内部的\boot\bcd,再用bootmgr.exe引导bcd
#用--sdi=file指定与之匹配的boot.sdi更可靠,若省去--sdi=file参数则使用ntboot内部的boot.sdi
#--highest=yes 参数,强制使用最高分辨率,且加上set gfxpayload=keep等3行
}
#本方式测试了4次,winpe.wim显示全屏,不半屏、不花屏,优先推荐。
menuentry "1.[bios] Win10pe-wim-wimboot" --hotkey=1 --class=windows{
insmod wimboot
set currroot=(${root})
search --file --no-floppy --set=root /winpe/win10pe_x64_bios_uefi.wim
terminal_output console
set gfxpayload=keep
#echo "CONSOLE"
#在wimboot中,上行显示的内容太多不爽,注释掉
wimboot --rawwim @:bootmgfw.efi:${currroot}/boot/grub2/run/ms/Bootmgr.exe @:bcd:${currroot}/boot/win/bootmgr_bios_grub2/bcd @:boot.wim:(${root})/winpe/win10pe_x64_bios_uefi.wim
#Bootmgr.exe是用BMplus工具生成的,生成时指定的目录必须是\boot\,即引导该目录下的bcd,其专由wimboot使用。
#射入内存盘的bcd要添加GraphicsForceHighestMode参数,其值设为true(强制显示最高分辩率),且加上set gfxpayload=keep等行
}
#此方式,winpe.wim显示全屏(测试了4次),不半屏、不花屏 ,因要射入内存,引导较慢,可以使用。
menuentry "2.[bios] Win10pe-wim-bcd-有时花屏显半屏" --hotkey=2 --class=windows {
terminal_output console
set gfxpayload=keep
echo "CONSOLE"
ntldr /boot/win/win10wimpe/bootmgr
#在bcd中添加GraphicsForceHighestMode参数,其值设为true(强制显示最高分辩率),且在执行的行前加上set gfxpayload=keep等行,winpe.wim仍时有花屏和显示半屏情况。
}
menuentry "3.[bios] Win10pe-wim-ima-有时花屏显半屏" --hotkey=3 --class=windows {
terminal_output console
set gfxpayload=keep
echo "CONSOLE"
linux16 /boot/grub2/memdisk
initrd16 /boot/win/bwin10wimpe.ima
#memdisk为syslinux的6.03等版本的文件
#bwin10wimpe.ima中的bcd中添加了GraphicsForceHighestMode参数,其值设为true(强制显示最高分辩率),且加上set gfxpayload=keep等3行,winpe.wim仍时有花屏和显示半屏情况。
#该方式可与esp分区的引导文件合盘
}
menuentry "4.[bios] Win10pe-wim-run-有时花屏显半屏" --hotkey=4 --class=windows{
insmod ntboot
source $prefix/run/run.cfg
run /winpe/win10pe_x64_bios_uefi.wim
}
menuentry "5.[bios] Win10pe-wim-ntloader-有时花屏显半屏" --hotkey=5 --class=windows {
search -s -f /ntloader/ntloader
search -s dev -f /winpe/win10pe_x64_bios_uefi.wim
probe -s dev_uuid -u $dev
linux16 /ntloader/ntloader uuid=${dev_uuid} wim=/winpe/win10pe_x64_bios_uefi.wim
initrd16 /ntloader/initrd.cpio
}
menuentry "6.[bios] Win11pe-iso-memdisk-有时花屏显半屏" --hotkey=6 --class=windows {
search --file --no-floppy --set=root /winpe/win11PE_x64.iso
terminal_output console
set gfxpayload=keep
echo "CONSOLE"
linux16 $prefix/memdisk iso raw
#或linux16 $prefix/memdisk iso
initrd16 /winpe/win11PE_x64.iso
#用UltraISO工具打开iso,将其\boot\bcd(legacy引导)添加GraphicsForceHighestMode参数,其值设为true,且加上set gfxpayload=keep等行,winpe.iso仍时有花屏和显示半屏情况。
}
|
|