|
本帖最后由 mygamexxx 于 2025-9-17 13:27 编辑
将VMware虚拟机网络设置改为仅主机模式,顺利进入IPXE菜单。
目前仅剩下BIOS下IPXE使用WIMBOOT的问题了。
Bad CPIO magic
FATAL: could not extract initrd files
BIOS与UEFI同一脚本,UEFI下没问题,autoexec.ipxe脚本如下:
#!ipxe
ifopen net0
ifstat
#set quiet 1 #
set protocol http #初始化协议变量,走http
isset ${proxydhcp/next-server} && set booturl ${proxydhcp/next-server} || set booturl ${next-server} #有代理dhcp信息就直接取值,智能获取启动ip
prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... ||
#console --picture http://${booturl}/boot/background.png --x 1024 --y 768 ||
console --picture /boot/background.png
:bootmenu #启动菜单查看基本情况
menu iPXE Boot Menu BootServer--${protocol}://${booturl}
item --gap -- IP: ${ip}/${netmask} Mac Address:${mac}
item --gap -- DHCP:${dhcp-server} Gateway:${gateway} DNS:${dns}
item --gap -- next-server(proxy):${next-server}/${proxydhcp/next-server} SMBIOS UUID:${uuid}
item --gap -- Chip:${chip} Platform:${platform} Build Arch:${buildarch} Version:${version}
item --gap -- ====================================================================================
item --gap -- Choose BootFile
item --key 1 boot.wim 1. Boot boot.wim #启动boot.wim
item --key 2 ipxefm 2. Boot ipxefm #启动ipxefm
item --key 3 grub4efi 3. Boot grub4efi #启动grub4efi
item --gap -- Advanced options
item --key l local L. Boot from local drive
item --key c config C. Configure settings
item --key s shell S. Drop to iPXE shell
item --key r reboot R. Reboot computer
item --key e exit E. Exit iPXE and continue BIOS boot
item --key p poweroff P. Poweroff computer
choose --timeout 10000 --default boot.wim selected || #默认选boot.wim来启动
iseq ${selected} ipxefm && goto ipxefm ||
iseq ${selected} grub4efi && chain ${protocol}://${booturl}/bootg4e.efi ||
iseq ${selected} local && sanboot --no-describe --drive 0x80 ||
iseq ${selected} config && config ||
iseq ${selected} shell && shell ||
iseq ${selected} reboot && reboot ||
iseq ${selected} exit && exit ||
iseq ${selected} poweroff && poweroff ||
set bootfile ${selected} && echo bootfile:${selected} && goto wimboot #启动菜单上选中的wim文件,也就是pe ||
sleep 1 && goto wimboot
:switch_protocol #http不能启动?就改协议成tftp,然后继续启动
console
echo error! swich_protocol!
set protocol tftp
echo now boofile is ${protocol}://${booturl}/boot/${bootfile}
sleep 1 && goto wimboot
:ipxefm
iseq ${platform} pcbios && chain ${protocol}://${booturl}/pxe/ipxefm/ipxeboot.txt ||
iseq ${platform} efi && chain ${protocol}://${booturl}/pxe/ipxefm/ipxeboot.txt ||
goto end
:wimboot #启动菜单上选中的PE
echo ${bootfile}
kernel ${protocol}://${booturl}/boot/wimboot.ipxe ${wimbootcmd} gui || goto switch_protocol #第一个文件都取不成功,肯定http走不起了,换tftp协议
#bootmgr.exe被压缩之后再接上一段16位程序就是bootmgr,两者不一样。
iseq ${platform} pcbios && initrd ${protocol}://${booturl}/bootmgr.pxe bootmgr.exe ||
#前后文件名称不相同时,要加 -n 参数,同时两个文件先后顺序不一样。
iseq ${platform} efi && initrd -n bootx64.efi ${protocol}://${booturl}/bootmgfw.efi || ##不加 -n 参数没有影响,名称首先用bootx64.efi(安全启动必须用bootx64.efi名称),bootmgfw.efi好像也可。
initrd -n bcd ${protocol}://${booturl}/boot/bcdpxe || ##两个文件名称不一样,不加 -n 参数,在BCD加载出错。
initrd -n boot.sdi ${protocol}://${booturl}/boot/boot.sdi || ##两个文件名称一样,不加 -n 参数没有影响。
# initrd ${protocol}://${booturl}/boot/fonts/segoen_slboot.ttf segoen_slboot.ttf ||
# initrd ${protocol}://${booturl}/boot/fonts/segoe_slboot.ttf segoe_slboot.ttf ||
# initrd ${protocol}://${booturl}/boot/fonts/segmono_boot.ttf segmono_boot.ttf ||
# initrd ${protocol}://${booturl}/boot/fonts/wgl4_boot.ttf wgl4_boot.ttf ||
# initrd ${protocol}://${booturl}/boot/resources/bootres.dll bootres.dll ||
iseq ${platform} pcbios && initrd ${protocol}://${booturl}/boot/${bootfile} boot.wim || ##两个文件名称一样,不加 -n 参数没有影响。
iseq ${platform} efi && initrd -n boot.wim ${protocol}://${booturl}/boot/${bootfile} ||
imgstat && sleep 1
# boot ${protocol}://${booturl}/boot/wimboot.ipxe
boot || goto bootmenu #启到这里不成功,说明没这个wim文件,回菜单重新选另一个文件启动
:end
|
|