经过研究,终于可以将ESXI的系统通过IPXE网络启动安装到无盘的软路由或者PC上了,当然也可以通过这种方法安装window、linux等等其他的系统。一、编译IPXE增加功能与自定义脚本一、iPXE 概要按iPXE 官网的介绍是这样的:iPXE 是领先的开源网络启动固件。它提供了一个完整的 PXE 实现,增强了其他功能,例如通过 HTTP 从 Web 服务器启动、从 iSCSI SAN 启动 等等. 二、下载 iPXE 源码并编译(编译环境ubuntu)官方编译文档: git 下载 iPXE 源码git clone git://git./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:///appnote/buildtargets#special_targets cd ipxe/src make bin-x86_64-pcbios/undionly.kpxe 编译前先安装这些依赖环境 开启其他功能编译好以后默认开启的功能有 如果要加载 HTTPS web 的内容,那就要开启 HTTPS vi config/general.h 找到 DOWNLOAD_PROTO_HTTPS,将 DOWNLOAD_PROTO_HTTPS 前面有#undef 改成 #define #define DOWNLOAD_PROTO_HTTPS #define IMAGE_COMBOO 或者将上面的代码添加到源码目录 src/config/local/general.h 文件里 修改完用前面的 make bin/undionly.kpxe 重新编译即可 现在用新生成的 undionly.kpxe 固件网络启动后就多了 HTTPS 和 COMBOOT 添加自定义脚本官方文档:http:///embed 默认编译启动后按 Ctrl+B 进入命令模式 dhcp chain --autofree https://boot. 进入后如图 如果想网络启动后直接进入 menu 界面,而不通过命令行输入命令,那就需要编译的时候加入自定义脚本 在源码 src 目录下新建脚本文件 script.ipxe,将上面的命令 copy 到文件 vi script.ipxe #!ipxe dhcp chain --autofree https://boot. 重新编译增加参数 EMBED=script.ipxe make bin/undionly.kpxe EMBED=script.ipxe 使用新的 undionly.kpxe 网络引导,直接会进入 的 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 |
|