#下载内核映像
wget -q http://boot.ipxe.org/ipxe.lkrn -O /boot/ipxe.lkrn
#运行shell脚本
cat>/boot/boot.ipxe<<EOF
shell
EOF
#或者是netboot.xyz, 也可以通过chain --autofree启动自己的脚本地址
cat>/boot/boot.ipxe<<EOF
set net0/ip <ip>
set net0/netmask <netmask>
set net0/gateway <gateway>
set dns 1.1.1.1
ifopen net0
chain --autofree https://boot.netboot.xyz
EOF
#写入grub自定义脚本,此处的${SUBVOL}定义,是如果/boot是独立分区则需要移除,/boot是直接存放在根分区的情况需要带上.
echo '
[ "$GRUB_FS" == "btrfs" ] && SUBVOL="$(mount | grep " / " | cut -d "=" -f3 | cut -d ")" -f1)" || SUBVOL="/boot"
cat <<EOF
menuentry "iPXE boot" {
linux16 ${SUBVOL}/ipxe.lkrn
initrd16 ${SUBVOL}/boot.ipxe
}
EOF' >/etc/grub.d/custom.cfg
chmod 755 /etc/grub.d/custom.cfg
# 更新grub配置
. /etc/os-release
case ${ID} in
centos|fedora)
grub2-mkconfig -o /boot/grub2/grub.cfg
;;
debian|ubuntu)
update-grub
;;
*)
echo "Distribution not supported. Please upgrade grub configuration manually"
esac