视频介绍
经过研究,终于可以将ESXI的系统通过IPXE网络启动安装到无盘的软路由或者PC上了,当然也可以通过这种方法安装window、linux等等其他的系统。
一、编译IPXE增加功能与自定义脚本
一、iPXE 概要
按iPXE 官网的介绍是这样的:iPXE 是领先的开源网络启动固件。它提供了一个完整的 PXE 实现,增强了其他功能,例如通过 HTTP 从 Web 服务器启动、从 iSCSI SAN 启动 等等.
二、下载 iPXE 源码并编译(编译环境ubuntu)
官方编译文档:
http://ipxe.org/download
http://ipxe.org/appnote/buildtargets#special_targets
git 下载 iPXE 源码
git clone git://git.ipxe.org/ipxe.git
或
git clone https://github.com/ipxe/ipxe.git
make 编译
cd ipxe/src make bin/undionly.kpxe
编译后会在 bin 目录下生成 undionly.kpxe 文件,这个就是 iPXE 网络启动固件
make 编译64位
官网说明文档:http://ipxe.org/appnote/buildtargets#special_targets
cd ipxe/src make bin-x86_64-pcbios/undionly.kpxe
编译前先安装这些依赖环境
gcc (version 3 or later)
binutils (version 2.18 or later)
make
perl
liblzma or xz header files
mtools
mkisofs (needed only for building .iso images)
syslinux (for isolinux, needed only for building .iso images)
开启其他功能
编译好以后默认开启的功能有
DNS、HTTP、iSCSI、TFTP、AoE、ELF、MBOOT、PXE、bzImage、Menu、PXEXT
在上图的启动界面可以看到。
如果要加载 HTTPS web 的内容,那就要开启 HTTPS
还有一些系统启动需要开启 COMBOOT 功能
下面以开启 HTTPS 和 COMBOOT 功能为例进行编译
修改源码下 src/config/general.h 文件
vi config/general.h
找到 DOWNLOAD_PROTO_HTTPS,将 DOWNLOAD_PROTO_HTTPS 前面有#undef 改成 #define
找到 IMAGE_COMBOOT 将前面的注释去掉
#define DOWNLOAD_PROTO_HTTPS #define IMAGE_COMBOO
或者将上面的代码添加到源码目录 src/config/local/general.h 文件里
修改完用前面的 make bin/undionly.kpxe 重新编译即可
现在用新生成的 undionly.kpxe 固件网络启动后就多了 HTTPS 和 COMBOOT
添加自定义脚本
默认编译启动后按 Ctrl+B 进入命令模式
可以输入下面的命令进入到外国友人做的 menu 界面
注:首先你网络启动的 DHCP 服务器设置的 DNS 能访问网络
dhcp chain --autofree https://boot.netboot.xyz
进入后如图
如果想网络启动后直接进入 menu 界面,而不通过命令行输入命令,那就需要编译的时候加入自定义脚本
我们把上面的进入 menu 的代码编译进固件
在源码 src 目录下新建脚本文件 script.ipxe,将上面的命令 copy 到文件
vi script.ipxe #!ipxe dhcp chain --autofree https://boot.netboot.xyz
重新编译增加参数 EMBED=script.ipxe
make bin/undionly.kpxe EMBED=script.ipxe
使用新的 undionly.kpxe 网络引导,直接会进入 netboot.xyz 的 menu 界面
也可以使用自己的菜单界面
加入下面的自定义脚本
vi script.ipxe #!ipxe dhcp chain --autofree tftp://${next-server}/boot.ipxe
网络启动后就能进入自己的菜单了
开启debug模式
有时候会遇到一些奇葩问题不知道如何解决,这时候可以开启debug模式,这里以开启iSCSI的debug为例
在编译的时候增加 DEBUG=iscsi 参数
ake bin/undionly.kpxe EMBED=script.ipxe DEBUG=iscsi
编译后用新固件引导启动,在sanhook iscsi命令的时候就会出现debug日志信息
已经编译好的包,直接可用
https://github.com/veelove/netboot-tftp
二、在群晖NAS里面开启ISCIS功能
三、群晖里面设置DHCP、TFTP和WEB服务器
开启 TFTP 服务
开启 PXE 并设置启动文件
网络启动测试
开启 WEB 服务
开启群晖 web station 并设置虚拟主机用来加载一些系统的引导文件
四、修改 tftp 根目录中的文件
五、通过网卡 DHCP 启动机器安装系统
六、安装完成启动系统
七、ROS 的 DHCP
八、一些排查问题的命令
测试是否可以加载到iso文件安装包
命令:initrd例子: initrd http://10.10.10.250:88/Install/ESXI/123.iso # ip地址及端口号及路径改为你自己的
测试是否可以去读取上面加载到的安装包
chain memdisk iso raw
测试是否连接到群晖的ISCSI
由于群晖机型不同,ISCSI的LUN的序号默认也不同,这里举例 918+和3617+ ,3617默认的就是0 而918+默认的则是1
ISCSI LUN默认是0的代码:
sanhook iscsi:10.10.10.250::::ESXi:iqn.2000-01.com.synology:ipxe.ESXI
ISCSI LUN默认是0的代码:
sanhook iscsi:10.10.10.250:::1:iqn.2000-01.com.synology:ipxe.ESXI
大佬,我用你做好的编译文件,后边设置一模一样,但是到了 tftp:///boot.ipxe…….Connection time out 就过不去了,跳不出来那个蓝色的选择界面,是哪里出问题了,群晖里设置是一样的,918+系统
首先感谢无私分享知识。
https://github.com/veelove/netboot-tftp
链接报错,404了,有没有其它下载渠道
${next-server} 这个参数能直接配置么
你好,我试了很多次,不论是物理机还是虚拟机一直进不了安装界面,连接是可以连接,但是进不了菜单页面。
就像这张图
我群晖的地址是192.168.3.222,DHCP分配到无盘机的是192.168.3.234,其他步骤完全按你的教程做的。
同问,我的也是这样然后提示没有引导
请问大神有时间出一期centos7搭建ipxe+iscsi的无盘视频吗?网上的资料太小了,测试了很久还是不成功
大神能分享一下安装后的esxi的lun备份吗?我按照教程没有成功。谢谢大神
这个后续会出相关视频教程的
请问大侠:这个编译好的包支持 EFI windows10 安装吗? 我参照大侠的教材进行设置安装,其它的都可以正常使用,唯独不能安装 windows10 (原版 windows.iso) ,表现是不认 windows10.iso ……
应该是加载 undionly64.kpxe 启动 不认 windows10.iso (原版)文件。 加载 undionly.kpxe 启动可以确认并解压 windows10.iso 文件,但解压释放 windows10.iso 后,便出错,不能正常加载 windows10.iso …………
ipxe boot, 通过sanhook 连接dsm target能成功,设置(set keep-san 1), 在DSM的控制台iscsi管理界面,target状态列表中,能看到客户端的已连机状态,但过不了一分钟便会自动断开。造成安装时发现不了网络iscsi硬盘,问题出在哪儿呢?
应该是你设备的网线或网卡不稳定
a
博主出些PVE配合ISCSI的教程贝,PVE更多小白在用。
PVE功能不完善
太强大了,这个。