[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板

本帖最后由 liuzhaoyzz 于 2019-12-28 18:01 编辑


[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板


https://www.lanzous.com/b00n6291c

密码:6hih

主机运行\boot\pxe目录下的任何一个批处理即可作为pxe服务器,在同一个局域网内的客户机BIOS开启PXE,启动到logo时按F12、F9、F8、F11或ESC这样的快捷键选择从pxe启动即可。

可选用tftpd32或者TinyPXEServer方案,随便扔个PE.ISO到\boot\imgs目录下,运行免配置批处理,就可以自动把该PE加入到ipxe/grub/grub2启动菜单。VM虚拟机测试,需要把虚拟机网络设置模式设置为自定义(U):特定虚拟网络VMnet0(自动桥接)。

由于tftp传输速度太慢,随着ipxe项目的发起,可以选用速度更快的http协议来进行网络启动,\boot\pxe目录提供了以下几种方案:

(1)03[BIOS][UEFI]TinyPXEServer免配置网启http服务器ipxe.pxe和ipxe.efi

BIOS下采用ipxe.pxe,UEFI下采用ipxe.efi,TinyPXEServer免配置,运行批处理可自动把pe.iso/wim加入到ipxe启动菜单\boot\ipxemenu.ipxe中,客户机BIOS/UEFI-pxe自动适配。UEFI-PXE用的是sanboot方案。

(2)04[BIOS][UEFI]TinyPXEServer免配置网启http服务器undionly.kpxe和ipxe.efi

BIOS下采用undionly.kpxe,UEFI下采用ipxe.efi,TinyPXEServer免配置,运行批处理可自动把pe.iso/wim加入到ipxe启动菜单\boot\ipxemenu.ipxe中,客户机BIOS/UEFI-pxe自动适配。UEFI-PXE用的是sanboot方案。

(3)05[BIOS]TinyPXEServer免配置网启http服务器启动ipxegrldr

采用chenall的ipxegrldr模块,从ipxe转到grldr启动,运行批处理可自动把pe.iso/wim加入到pxe启动菜单\boot\menu.lst中,只支持BIOS-pxe启动。

(4)【06[BIOS]tftpd32免配置网启tftp服务器启动grldr】

批处理会自动设置好tftpd32起始IP,地址池大小,子网掩码,并可自动把pe.iso/wim加入到grub4dos启动菜单\menu.lst中,只支持BIOS-pxe启动。

(5)【07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64pxe.efi】

UEFI下采用grub2x64pxe.efi,批处理会自动配置好TinyPXEServer,并可自动把pe.iso/wim加入到grub2启动菜单\boot\grub2\grub2pxe.cfg中,只支持UEFI-pxe启动。感觉grub2的http传输速度不快,不能跑满网速,而且pxe启动似乎和zh_CN.mo这样子的语言文件有冲突,等待grub2的更新解决问题。UEFI-grub2-http启动PE.ISO,用的是grub2 map --mem方案;启动pe.wim用的是wimboot方案。

(6)【08[UEFI]TinyPXEServer免配置网启http服务器ipxe.efi-grub2x64.efi】

UEFI下采用ipxe.efi作为第一引导,进而引导grub2x64.efi,这样做的目的是可以让grub2的http传输达到满速,批处理会自动配置好TinyPXEServer,并可自动把pe.iso/wim加入到grub2启动菜单\boot\grub2\grub2pxe.cfg中,只支持UEFI-pxe启动。

温馨提示:

★tftpd32/haneWinDHCP+grub4dos方案只支持tftp协议,不支持http协议,不能跑满网速,不建议采用;建议采用TinyPXEServer+ipxe/grub2+webserver方案,支持tftp/http/ftp等传输协议,可以跑满网速,千兆网下速度较为理想。webserver可以采用王宝剑大神用VC++SDK编写的的绿色软件EasyWebSvr,只有惊人的67KB,配置简单。

★UEFI-ipxe-wimboot启动模式下BCD中默认文件名为boot.wim,boot.wim可以放在boot/imgs/下的任何一个子目录,批处理会遍历wim文件并加入到相应的启动菜单中;BIOS-ipxe-wimboot对于wim文件名字可以任意修改,但不建议使用特殊字符和中文。wimboot启动pe.wim需要涉及的文件太多,细节不注意很容易导致启动失败,我更喜欢用pe.iso启动方案。

★BIOS-pxe启动,如果想换个PE,除了用批处理自动写菜单的办法之外,还有个办法时用sratlf的run模块只需要把PE的ISO镜像文件拷贝到\boot\imgs目录下,运行【05生成ISO文件列表.bat】更新dir.txt(PXE启动需要),grub4dos菜单选择“run mem automenu by sratlf”就能从这个PE启动,run模块版本是20141206,实测与grldr20161224或者更早的版本匹配较好,可以遍历文件并启动,由于run模块已几年不更新,已经不能匹配最新版grub4dos,所以不推荐使用,推荐用批处理自动写菜单的办法。







[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_grub4dos

​vm设置VMnet0自动桥接.jpg​​ (53.27 KB, 下载次数: 0)


[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_PE_02

​Windows 10-2019-12-26-08-28-36.png​​ (5.09 KB, 下载次数: 0)


[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_玩转批处理_03



下载的模板文件boot_muban文件夹名字要改成boot,放在根目录下,当然也可用01-PE安装器by双心20191225一路回车一键建立。


随便扔个pe.iso到\boot\imgs\里面,不需要懂太多的pxe启动知识,一键启动http服务器即可,选2可以一键把pe.iso,pe.wim加到启动菜单,支持多种pxe启动模式。


文件目录结构:(可用01-PE安装器by双心20191225一键建立)

X:\

  │  grldr

  │  menu.lst

  ├─BOOT\(Legacy BIOS启动用)

  │   ├─BOOTICE\(存放bootice工具)

  │   ├─FbinstTool\(存放FbinstTool工具)

  │   ├─imgs\(存放PE的ISO镜像文件,各种软件img镜像文件)

  │   ├─grub\(内有grldr.*、menu.lst的备份,批处理会自动把备份拷贝到根目录,还存放font字库、sratlf的run模块和网启服务器tftpd32.*)

  │   └─grub2\(存放grubx64.efi、grub.cfg、unicode.pf2、zh_CN.mo等)  

  │   └─pxe\(存放pxe启动免配置批处理及引导器相关文件,可把pe.iso/wim加入到ipxe/grub2/grub4dos启动菜单中) 

上传个客户机BIOS-pxe相关设置截图。


1、高级→内置设备→PXE Option ROM要开启

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_玩转批处理_04 


2、高级→网络堆栈→要开启,并且开启IPV4 6  PXE支持。

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_玩转批处理_05 

3、启动→网络堆栈驱动程序支持→开启。


[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_电脑经验备忘_06 

4、从网络设备启动可以选择LEGACY ROM或者UEFI ROM优先。

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_玩转批处理_07 

5、以上设置好之后,客户机启动出现logo时按F12 F8 F9 F11,shift+F10之类的按键,选择从PXE启动即可。当然在启动选项里面把PXE设置为第一位也行。<ignore_js_op>[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_PE_08 


不同品牌电脑的启动项快捷键 - Windows To Go - 无忧启动论坛 - Powered by Discuz! ​​http://wuyou.net/forum.php?mod=v ... 0907&extra=page%3D1​

感谢​​t5481194​

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板_PE_09



本帖最后由 liuzhaoyzz 于 2019-12-26 09:59 编辑


tftpd32/hanewinDHCP+grldr/pxelinux.0的方案速度太慢,现已不推荐。

TinyPXEServer+ipxegrldr/ipxe/lpxelinux.0+http服务器的方案可能大家都会了。

我介绍下TinyPXEServer+wintoflash大神修改的grub2+http服务器的新方案,BIOS下面方案已经很成熟了,我主要把grub2用在UEFI下面。

下载wintoflash大神修改的grub2,网址http://wuyou.net/forum.php?mod=v ... 7233&extra=page%3D1,grub2x64pxe.efi启动文件的定制命令如下,模块可以根据自己的需要增加,我放在\boot\目录下,tinypxeserver用它作为启动文件,网启根目录设置为\boot\。

@echo off

grub-mkimage -d x86_64-efi -p /grub2 -c bootconfigpxe.cfg -o grub2x64pxe.efi -O x86_64-efi blocklist boot chain configfile disk echo efi_gop efi_uga efiload exfat extcmd fat halt iso9660 ls minicmd normal ntfs part_gpt part_msdos progress reboot search terminal udf map font gfxterm linux linux16 vhd loopback regexp probe wimboot multiboot multiboot2 test help ext2 net tftp http efinet efi_netfs cat cpio


内置菜单bootconfigpxe.cfg内容如下,为了保持文件夹的分类清晰,我放在\boot\grub2\目录下。

#用于pxe启动的grub2内置菜单:

if search --no-floppy -f --set=root /boot/grub2/grub.cfg; then

configfile (tftp)/grub2/grub2pxe.cfg

fi


\boot\grub2\grub2pxe.cfg是pxe启动菜单,grub2x64pxe.efi会自动搜索\boot\grub2\grub2pxe.cfg菜单文件,也就是说客户机启动流程是接收http服务器传来的grub2x64pxe.efi→加载内置菜单bootconfigpxe.cfg(已编译进入grub2x64pxe.efi)→查找外置菜单(tftp)/grub2/grub2pxe.cfg,这里http没有初始化,似乎只能用(tftp),用下面的菜单启动PE.ISO成功,用wimboot启动PE.WIM成功,需要注意的是,UEFI-ipxe-wimboot启动模式下BCD中默认文件名为boot.wim,boot.wim可以放在boot/imgs/下的任何一个子目录,批处理会遍历wim文件并加入到相应的启动菜单中;BIOS-ipxe-wimboot对于wim文件名字可以任意修改,但不建议使用特殊字符和中文。wimboot启动pe.wim需要涉及的文件太多,细节不注意很容易导致启动失败,我更喜欢用pe.iso启动方案。


set default=0

set fallback=1

set timeout=2

set pager=20


#设定菜单字体及背景颜色

set menu_color_normal=white/black

set menu_color_highlight=white/blue


#中文字体似乎和pxe启动有冲突?因此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 "Win10_16299_PE_x86_x64_10.31.iso" "Win10_16299_PE_x86_x64_10.31.iso" {

map --mem --type=CD (http)/imgs/Win10_16299_PE_x86_x64_10.31.iso

}


menuentry "SXWIN10PEX64_17763_NET20191205.iso" "SXWIN10PEX64_17763_NET20191205.iso" {

map --mem --type=CD (http)/imgs/SXWIN10PEX64_17763_NET20191205.iso

}


menuentry "WePE_64_V2.0.iso" "WePE_64_V2.0.iso" {

map --mem --type=CD (http)/imgs/WePE_64_V2.0.iso

}


menuentry "/imgs/SXWIN10PEX64_17763_NET20191205/boot.wim" "/imgs/SXWIN10PEX64_17763_NET20191205/boot.wim" {

wimboot @:bootmgfw.efi:(http)/ms/EFI/boot/bootx64.efi        @:bcd:(http)/grub2/wimboot/bcd @:boot.sdi:(http)/boot.sdi        @:boot.wim:(http)/imgs/SXWIN10PEX64_17763_NET20191205/boot.wim

}


menuentry "0.Windows" "/EFI/Microsoft/Boot/bootmgfw.efi" --hotkey=0 {

        search --no-floppy --set --file $2

        chainloader $2

}


menuentry "1.grubfm_iso_wim_img" --hotkey=1 {

        export grub_file=/boot/imgs

        configfile /boot/grub2/grubfm.cfg

}


menuentry "2.Reboot" --hotkey=2 {reboot}


menuentry "3.Halt" --hotkey=3 {halt}


TinyPXEServer+wintoflash大神修改的grub2+http服务器这个pxe启动方案,我测试#中文字体似乎和pxe启动有冲突?因此PE.ISO文件名字里面不能包含中文。

另外,grub2官方http://www.gnu.org/software/grub/manual/grub/grub.html没有任何关于grub2支持pxe-http协议的介绍,我在论坛看了jie_china转发的帖子http://wuyou.net/forum.php?mod=viewthread&tid=411143有个(http),试了下可以,但是速度不能跑满网速,原因不明,看来grub2在http协议方面还有待提升。


然后我又试了下,TinyPXEServer+ipxe.efi引导启动后,chain grub2x64pxe.efi,进入grub2菜单grub2pxe.cfg,选择启动pe.iso,http传输速度达到了满速,这跟ipxe启动后转grldr,让grub4dos支持http协议情况类似。


如果上面的内容看不懂,下载一楼的附件,直接运行

【07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64pxe.efi】

【08[UEFI]TinyPXEServer免配置网启http服务器ipxe.efi-grub2x64.efi】

任何一个就可以自动把pe.iso/wim加入到grub2启动菜单\boot\grub2\grub2pxe.cfg中(只支持UEFI-pxe启动),并一键配置好webserver。


特别鸣谢:

不点、bean、chenall、2011yaya2007777(grub4dos开发者们)、pauly(bootice、XorbootUEFI作者)、jianliulin(FbinstTool)、adef(DetectEFI)、CxDir(2012jiashanni)、sratlf(RUN模块作者)、歌理(PXE免配菜单)、ljycslg(tinypxeserver汉化分享)、芈员外(一键RAMOS框架)、tmplinshi(concmd作者)、wintoflash(UEFI-grub2_map、ntboot)、hilsonma、极限驱动、2011hiboy(Grub2定制UEFI模板)、captain_g(IPXE-UEFI网启小工具)、yigeren(TinyPXEServer自动识别BIOS/UEFI的配置文件)、江南一根葱、jie_china(grub2-pxe文章推送)...等等等等。