[我不是網管]分享個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,所以不推薦使用,推薦用批處理自動寫菜單的辦法。 |
-
Windows 10-2019-12-26-08-28-36.png
下載的模板文件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要開啟
2、高級→網絡堆棧→要開啟,並且開啟IPV4 6 PXE支持。
3、啟動→網絡堆棧驅動程序支持→開啟。
4、從網絡設備啟動可以選擇LEGACY ROM或者UEFI ROM優先。
5、以上設置好之后,客戶機啟動出現logo時按F12 F8 F9 F11,shift+F10之類的按鍵,選擇從PXE啟動即可。當然在啟動選項里面把PXE設置為第一位也行。<ignore_js_op>
不同品牌電腦的啟動項快捷鍵 - Windows To Go - 無憂啟動論壇 - Powered by Discuz! http://wuyou.net/forum.php?mod=v ... 0907&extra=page%3D1
感謝t5481194本帖最后由 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文章推送)...等等等等。