|
本帖最后由 liuzhaoyzz 于 2024-1-14 17:13 编辑
F:\boot\grub2\定制grub2-BIOS+UEFI.bat
@echo off
rem echo 生成grub2-UEFI-grub2x64.efi
grub-mkimage -d x86_64-efi -p /boot/grub2 -c bootconfig.cfg -o grub2x64.efi -O x86_64-efi acpi all_video blocklist boot cat chain commandline configfile conv cpio disk echo efi_gop efi_netfs efi_uga efiload efinet exfat ext2 extcmd fat fb font getargs getkey gfxterm gzio halt help http iso9660 linux linux16 linuxefi loadenv loopback ls lzopio map minicmd net normal ntboot ntfs part_gpt part_msdos partnew probe progress reboot regexp sbpolicy search tar terminal terminfo test tftp udf version video_bochs video_cirrus vhd wimboot xzio gfxterm_background jpeg png tga
rem echo 生成grub2-BIOS-corebios.img和g2ldr,增加了terminal gfxterm vbe vga png partnew probe wimboot ntboot reboot regexp
rem echo core1.img大小36KB,超过了32KB,精简了ntfs和ntfscomp模块,没什么意思,不能写入MBR,只能作为第二引导。
rem grub-mkimage.exe -d i386-pc -p /boot/grub2 -c bootconfigbios.cfg -o core1.img -O i386-pc biosdisk part_msdos fat ntfscomp search_fs_file
rem BCD-g2ldr引导模式,不能加linux linux16、echo、terminal gfxterm vbe vga udf gzio xzio reboot halt,否则会出错。“The application or operating system couldn't be loaded because required file is missing or contains errors.”
grub-mkimage.exe -d i386-pc -p /boot/grub2 -c bootconfigbios.cfg -o core1.img -O i386-pc biosdisk part_msdos fat ntfs ntfscomp ext2 iso9660 search_fs_file search boot
grub-mkimage.exe -d i386-pc -p /boot/grub2 -c bootconfigbios.cfg -o core2.img -O i386-pc biosdisk boot cat chain configfile cpio echo exfat ext2 extcmd fat fb font gzio halt help iso9660 linux linux16 loopback ls lua lzopio memdisk minicmd newc normal ntfs ntldr part_gpt part_msdos search sleep tar test udf xzio terminal gfxterm vbe vga png partnew probe wimboot ntboot reboot regexp
copy /b i386-pc\lnxboot.img+core1.img g2ldr
我的帖子里面,有定制grub2的批处理,关于ipxe就是需要那几个核心模块,tftp http net configfile search map conv,其中,configfile search模块用于遍历pxe server上面的grub.cfg,strconv命令包含在conv模块中,用于转换文件名字到gbk编码,所以conv模块也需要的,需要配套用。
F:\boot\grub2\bootconfig.cfg
#用于pxe和本地启动的grub2内置菜单2:
#首先尝试加载tftp服务器上面的grub2pxe.cfg,如果不存在,尝试搜索本地/boot/grub2/grub.cfg配置文件并加载。
configfile (tftp)/grub2/grub2pxe.cfg
search --no-floppy -f --set=root /boot/grub2/grub.cfg
configfile /boot/grub2/grub.cfg
grub2用于ipxe启动的时候,传递文件名似乎有点问题,似乎必须用gbk格式传递,你研究下grub2-pxe启动菜单范例,当然如果需要map iso的话,需要map模块,如果需要启动pe.wim的话,需要特定的wimboot模块,我已经打包了:
F:\boot\grub2\grub2pxe.cfg
set pager=20
set grub_draw_border=1
#设定菜单字体及背景颜色
set menu_color_normal=white/black
set menu_color_highlight=white/blue
loopback -m ramdisk (tftp)/grub2/unicode.xz
loadfont (ramdisk)/grub2/fonts/unicode.pf2
set locale_dir=(ramdisk)/grub2/locale
set lang=zh_CN
gfxmode=auto,800x600,1024x768
terminal_output gfxterm
#中文语言set lang=zh_CN似乎和pxe启动有冲突?因此可以用上面loopback建立内存盘的办法规避,或者PE.ISO名字不要包含中文。
#if loadfont /grub2/fonts/unicode.pf2;then
#set locale_dir=/grub2/locale
#set lang=zh_CN
#set gfxmode=auto,800x600,1024x768
#terminal_output gfxterm
#fi
net_bootp
set net_default_server=10.7.20.78
set root='(http)'
menuentry "WePE64_V2.2.iso" "WePE64_V2.2.iso" {
strconv --gbk --set=file "(http)/imgs/WePE64_V2.2.iso";map -f --mem --type=CD ${file}
}
menuentry "/imgs/WePE_64_V2.0/WEPE64.WIM" "/imgs/WePE_64_V2.0/WEPE64.WIM" {
wimboot \
@:bootmgfw.efi:/pxe/bootmgfw.efi \
@:bcd:/grub2/bcd \
@:boot.sdi:/boot.sdi \
@:boot.wim:(http)/imgs/WePE_64_V2.0/WEPE64.WIM
}
|
|