|
本帖最后由 mygamexxx 于 2025-9-18 16:59 编辑
将VMware虚拟机网络设置改为仅主机模式,顺利进入IPXE菜单。
目前仅剩下BIOS下IPXE使用WIMBOOT的问题了。
Bad CPIO magic
FATAL: could not extract initrd files
问题解决:还是脚本的问题,BIOS下没有initrd -n 参数。
正确的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 grubfm 2. Boot grubfm #启动grubfm
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} grubfm && goto grubfm ||
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
:grubfm
isset ${proxydhcp/dhcp-server} && chain http://${proxydhcp/dhcp-server}/app/netgrubfm/netgrubfm.${platform} proxydhcp=${proxydhcp/dhcp-server} setupwim=${setupwim=} setupiso=${setupiso=} httptimeout=${httptimeout=} autounattend=${autounattend=} ||
chain http://${next-server}/app/netgrubfm/netgrubfm.${platform} proxydhcp=${next-server} setupwim=${setupwim=} setupiso=${setupiso=} httptimeout=${httptimeout=} autounattend=${autounattend=}
goto end
:wimboot #启动菜单上选中的PE
echo ${bootfile}
kernel ${protocol}://${booturl}/boot/wimboot.ipxe || goto switch_protocol #第一个文件都取不成功,肯定http走不起了,换tftp协议
#bootmgr.exe被压缩之后再接上一段16位程序就是bootmgr,两者不一样。
#pxeboot.n12网启通过bootmgr.exe,bootmgr.exe有校验,修改/BOOT/BCD为/BOOT/BCP后,需要用PEChecksum.exe修正校验和。
iseq ${platform} pcbios && initrd ${protocol}://${booturl}/bootmgr.pxe bootmgr.exe ||
iseq ${platform} efi && initrd -n bootx64.efi ${protocol}://${booturl}/bootmgfw.efi || ##名称首先用bootx64.efi(安全启动必须用bootx64.efi名称),bootmgfw.efi好像也可。
iseq ${platform} pcbios && initrd ${protocol}://${booturl}/boot/bcp bcd ||
iseq ${platform} efi && initrd -n bcd ${protocol}://${booturl}/boot/bcp ||
initrd ${protocol}://${booturl}/boot/boot.sdi boot.sdi ||
# 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 ||
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
|
|