|
本帖最后由 wintoflash 于 2021-3-2 19:10 编辑
本项目已停止开发,不再维护。
----------------------------
wimboot
根据 ipxe wimboot 移植的模块,适用于 BIOS/UEFI,可以启动并修改 Windows NT6+ WIM。
使用方法
- wimboot [BOOT_OPTIONS] [BCD_OPTIONS] @:NAME1:FILE1 @:NAME2:FILE2 ...
- BOOT OPTIONS (启动参数)
- -g, --gui 显示图形启动界面 (不推荐开启)
- -p, --pause 显示调试信息并在启动过程中暂停
- -b, --rawbcd 禁用 BCD 自动修改 (.exe 改为 .efi)
- -w, --rawwim 禁用 WIM 自动修改
- -i, --index=n 指定要启动的WIM卷号
- -p, --pause 启动前暂停
- -j, --inject=WIN32_PATH 指定射入文件夹,默认为 \Windows\Syatem32
- @:NAME:FILE
- 指定要加载的文件 FILE,其被射入虚拟盘后文件名为 NAME。若未射入 BCD 或 boot.sdi,将使用内置 BCD 和 boot.sdi
- BCD OPTIONS (BCD 内部启动选项,仅当使用内置 BCD 时才有效。在使用 yes|no 的地方,也可以使用 on|off, true|false, 1|0):
- --testmode=yes|no 测试模式 (testsigning)。
- --highest=yes|no 强制使用最高分辨率。
- --nx=OptIn|OptOut|AlwaysOff|AlwaysOn 指定 NX 策略。
- --pae=Default|Enable|Disable 指定 PAE 策略。
- --detecthal=yes|no 检测 HAL 和 kernel。
- --winpe=yes|no 启动到 WinPE 模式 (/MININT)。
- --timeout=n 设置超时。
- --sos=yes|no 启用 SOS 模式。
- --novesa=yes|no 禁用 VESA BIOS 调用。
- --novga=yes|no 禁用 VGA 模式。
- --loadoptions=XXX 指定 NT 内核加载参数。
- --winload=\\WIN32_PATH 指定 winload 路径。
- --sysroot=\\WIN32_PATH 指定系统根目录。
复制代码
示例1: 启动 WIM
- wimboot --rawwim @:bootmgfw.efi:/boot/grub/bootmgfw.efi @:boot.wim:/wim/wepe.wim
复制代码
示例2: 启动 WIM,关闭测试模式,启用 PAE
- wimboot --testmode=no --pae=Enable --rawwim @:bootmgfw.efi:/boot/grub/bootmgfw.efi @:boot.wim:/wim/wepe.wim
复制代码
示例3: 启动 WIM 的第二卷,并射入替代 explorer
- wimboot --index=2 @:bootmgfw.efi:/boot/bootmgfw.efi @:explorer.exe:/boot/explorer.exe \
- @:WinXShell.exe:/boot/WinXShell.exe @:WinXShell.jcfg:/boot/WinXShell.jcfg \
- @:winpeshl.ini:/boot/winpeshl.ini @:boot.wim:(loop)/sources/boot.wim
复制代码
注意事项
wim 文件体积不得超过 4GB。
NTBOOT
根据 chenall 的 GRUB4DOS NTBOOT 移植的模块,适用于 BIOS/UEFI,可以启动 Windows 系统/WIM/VHD。
使用方法
- ntboot [-g] [-p] -e FILE [-s FILE] [BOOT_TYPE] [BCD_OPTIONS] FILE
- -g, --gui 显示图形启动界面 (不推荐开启)
- -p, --pause 显示调试信息并在启动过程中暂停
- -e, --efi=FILE 指定 bootmgfw.efi / bootmgr.exe 的路径。
- -s, --sdi=FILE 指定 boot.sdi 的路径。若无此参数,则使用内部生成的 boot.sdi。
- BOOT TYPE (指定启动文件类型,默认情况下根据文件扩展名自动判断):
- -w, --wim 指定启动类型为 wim。
- -n, --win 指定启动类型为 Windows 系统。
- -v, --vhd 指定启动类型为 VHD。
- -r, --ramvhd 指定启动类型为 RamOS VHD (此选项仅供测试)
- BCD OPTIONS (BCD 内部启动选项,在使用 yes|no 的地方,也可以使用 on|off, true|false, 1|0):
- --testmode=yes|no 测试模式 (testsigning)。
- --highest=yes|no 强制使用最高分辨率。
- --nx=OptIn|OptOut|AlwaysOff|AlwaysOn 指定 NX 策略。
- --pae=Default|Enable|Disable 指定 PAE 策略。
- --detecthal=yes|no 检测 HAL 和 kernel。
- --winpe=yes|no 启动到 WinPE 模式 (/MININT)。
- --imgoffset=n 指定 RamOS VHD 内存盘偏移。
- --timeout=n 设置超时。
- --sos=yes|no 启用 SOS 模式。
- --novesa=yes|no 禁用 VESA BIOS 调用。
- --novga=yes|no 禁用 VGA 模式。
- --loadoptions=XXX 指定 NT 内核加载参数。
- --winload=\\WIN32_PATH 指定 winload 路径。
- --sysroot=\\WIN32_PATH 指定系统根目录。
复制代码
示例1: 启动WIM
- ntboot --efi=/xxx/bootmgfw.efi --wim /xxx/xxx.wim
复制代码
示例2: 启动VHD
- ntboot --efi=/xxx/bootmgfw.efi --vhd /xxx/xxx.vhd
复制代码
示例3: 启动 Windows 系统
- ntboot --efi=/xxx/bootmgfw.efi --win (hd0,4)
复制代码
示例4: 启动WIM,禁用测试模式,启用 PAE
- ntboot --efi=/xxx/bootmgfw.efi --wim /xxx/xxx.wim --testmode=no --pae=Enable
复制代码
注意事项
只支持硬盘 mbr/gpt 分区表 FAT/NTFS 分区上的文件。
启动 VHD 可能会有个错误(如下图),不过不要慌,按两遍回车就可以了。
下载
https://github.com/a1ive/grub/releases/tag/latest
技术细节
wimboot 可以生成一个 bootmgfw.exe/bootmgr.exe 可识别的单分区 FAT32 虚拟盘, 将 bootmgfw.efi, bcd 等文件放入其中即可启动。BCD 文件为 bootmgfw.efi 读取的启动配置文件,其格式为 REGF (Windows 注册表)。关于 REGF,可以到这里了解更多。boot.sdi 文件为 bootmgfw.efi 启动 WIM 必须的 System Deployment Image 文件,可以到这里了解更多。wimboot 内置了一个 REGF/BCD 解析器,可以解析并自动修改 BCD 的内容;同时也内置了 boot.sdi 生成工具,可以自动生成所需的 boot.sdi。wimboot 启动方式与 NTBOOT 启动方式的主要区别是 wimboot 启动时,WIM 文件也放入FAT32虚拟盘中,而 NTBOOT 启动时,WIM 不在启动盘中。因此,wimboot 方式可以虚拟修改 WIM 内容,向其中插入文件而不用改变实际文件内容,NTBOOT 则不可以。wimboot 会将除了 bcd, boot.sdi, WIM 自身之外的所有文件都射入 WIM 的 \Windows\System32 目录下。但是由于 VHD 启动过程中需要从真实硬盘读取 VHD,所以 wimboot 方式无法启动 VHD。
- grub-mkimage -d x86_64-efi -p /boot/grub -o grubx64.efi -O x86_64-efi acpi all_video bitmap bitmap_scale blocklist boot cat chain cmp commandline configfile cpio date datehook dd disk echo efi_gop efi_uga efifwsetup exfat expr ext2 extcmd fat fb file font fshelp getenv getkey gfxmenu gfxterm gfxterm_background gfxterm_menu gzio halt hashsum help hexdump iso9660 jfs jpeg keystatus linux linuxefi loadenv loopback ls lua lzopio memdisk minicmd multiboot multiboot2 newc normal ntfs part_gpt part_msdos partnew parttool png probe progress random read reboot regexp sbpolicy search sleep squash4 tar terminal terminfo test tga time udf vhd video video_colors video_fb videoinfo xzio map wimboot ntboot
复制代码
参考
参考了以下项目的代码或文档,感谢开源
iPXE wimboot
NTBOOT by chenall
quibble
REGF Spec
BCD Elements
SDI Spec
源码
https://github.com/a1ive/grub 许可协议 GPLv3
|
评分
-
查看全部评分
|