esxi 无盘服务器,用ipxe网络启动打造无盘ESXi系统

一、源码与链接

几个相关链接

相关源码

二、编译一个带 iSCSI 和 COMBOOT 功能的 iPXE 固件

这个参考 ipxe 官网或 iPXE 编译增加功能与自定义脚本 进行编译,在我的源码 netboot-tftp 中有编译好可用的 kpxe 文件

三、群晖 NAS 里配置 DCHP、TFTP 和 WEB 服务器

先按同胞网友写的教程 Part 1 配置好群晖的 iSCSI、DCHP、TFTP 和 WEB 服务器

开启 TFTP 服务

f44027d42543fd4fc8d5c6b00d9e708a.png

将 netboot-tftp 源码里全部文件上传到 /PXE/Grub 文件夹下

ee0b8dbc788cbcb9f29ac4116df41557.png

开启 DHCP 服务

bb5882c37b5144e101202730f4787399.png

7a4aea5afc049e5ac2ab9f174f68b297.png

开启 PXE 并设置启动文件

28dbaa8a10b8e35c040a9d772e375959.png

网络启动测试

在 BIOS 的 BOOT 选项里将从网络启动调整到第一位,各主板 BIOS 操作不一样,请自行查阅主板 BIOS 说明

651dd726e0f31f4523f3b9bd1e6ab574.png

eba202db11e107a6dc83886dff4207fd.png

b27e2658e0a75e8343db1a0ea87690bf.png

开启 WEB 服务

开启群晖 web station 并设置虚拟主机用来加载一些系统的引导文件

b6b317c131d9ea8631259de91eba59c6.png

68a599b3bd23859af59a4116b6887298.png

四、在群晖配置 iSCSI target 和 iSCSI LUN

a09cbe1d50218ebe3148190d3c00fcf2.png

99da09a602a73d64d7e82f8e6af40d83.png

40edb9a6d91a2841d4d1a72d5bfadaa4.png

五、修改 tftp 根目录中的文件

98cebb3e4d4fa9cf593d739e3d02e183.png

cf8c2b29b0aca423b0aa71792753c9ed.png

六、通过网卡 DHCP 启动机器安装系统

eba202db11e107a6dc83886dff4207fd.png

eb04ca9eb057b1c153683e640a51e748.png

2d6770d22b24caafbc2e4beb4009d129.png

在 menu.ipxe 的一些网络地址没问题的话,就能进入 ESXi 的安装界面了

aa782ff2a640edb7dba452e41caacf57.png

这里安装的时候硬盘选择界面会出现 iSCSI 的硬盘,如果有其他硬盘的话别选错了

如果没有出现 iSCSI 硬盘,那肯定是加载出错了。

e28af8df5cb1f8e86fbb40bdd5f31b1e.png

ea0e496c3533bb478b47540c98e61789.png

七、安装完成启动系统

46d3e4f3104e8cecc686699e7b5434a9.png

f56cdb73d9509c6899226db69d559a2b.png

八、关于 DHCP 与 TFTP 服务器

按照上面的教程是在内网开启了两个 DHCP 服务器,一个是主路由的,我这里是 ROS,一个是群晖的。

这样会导致有些时候网络启动后 iPXE DHCP 获取到的结果不是想要的结果,比如 next-server 地址错误

会导致加载不到启动脚本而进不了菜单,这里建议内网只有一个 DHCP 服务器,这样就不会有 DHCP 服务干扰了

下面介绍使用 ROS、LEDE 的 DHCP 和 TFTP 服务器

ROS 的 DHCP 与 TFTP 设置

将 netboot-tftp 源码上传到 ROS 的 files,然后 ip -> TFTP 开启 ROS 的 TFTP 服务

dda94fec6f077ffcf90d2a0ca8a86933.png

86e9b1ef348eaa9c614e859e461abd65.png

DHCP server 里配置 next server 和 boot file name

bdd261fb6c2089c9b94245f89af01434.png

LEDE 的 DHCP 与 TFTP 设置

如果是使用 LEDE 的 DHCP 和 TFTP 服务器,则将 netboot-tftp 源码上传到 lede 路由上

然后在 网络 -> DHCP/DNS 下进行配置 TFTP 服务

c7dedf417f1b309116fb7b383cafe643.png

九、对特殊电脑做特别设置

脚本是支持多个电脑启动不同的系统到电脑对应系统的 iSCSI LUN

这就是上面创建 iSCSI target 的时候 target 名称为什么要用 主机名.系统名

a09cbe1d50218ebe3148190d3c00fcf2.png

* 设置电脑网卡 mac 地址脚本

比如要让电脑 A(网卡 MAC 地址为 00:12:34:56:78:90) 启动到 mini.系统名 的 iSCSI

那就是设置电脑 A 的主机名为 mini

如果使用群晖的 DHCP,则可以在群群晖 DHCP 客户端列表里给 MAC 地址设置主机名

7a4aea5afc049e5ac2ab9f174f68b297.png

如果一些不能设置主机名的 DHCP 服务器,如 ROS,如果不用做特殊设置,则 hostname 为空

这样脚本会找 mac 地址.系统名 的 iSCSI, 这样就会取不到 iSCSI, 除非你 iSCSI target 用 mac 地址.系统名 命名

在 netboot-tftp 源码目录下有一个 boot 文件夹,这个文件夹就是放置对应主机或 MAC 地址特殊脚本的目录

在 boot 目录下创建文件, 文件的命名格式为 mac-mac 地址去掉冒号字母小写.ipxe

例如 mac-001234567890.ipxe

在文件里添加脚本如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14#!ipxe

echo

# 设置这个mac地址的主机名

set hostname mini

set initiator-iqn ${base-iqn}:${hostname}

echo Booting ${hostname}

# 这里还可以设置默认进入的菜单和在菜单上的等待时间

# 比如装好系统后设置 default 为 esxi ,timeout 为1秒或更短

# 这样就可以直接进入esxi系统,省去选择菜单步骤。在装好系统不要用菜单的时候很有用

set menu-default esxi

set menu-timeout 10000

chain --replace --autofree ${menu-url}

十、折腾过程中遇到的坑

关于 iscsi 的坑

仔细看 netboot-tftp 里菜单命令会发现有一条命令 sanhook \${root-path}

是扫描加载 iSCSI 的

全路径是这样的

sanhook iscsi:192.168.1.252::::iqn.iqn.2000-01.com.synology:mini.ESXi

iPXE 官方文档有对这个进行说明:

255c1d8ae58bc3ff7e64127cf5566c4b.png

1iscsi:::::

我们把其中的 protocol、prot、LUN 都省略了,所以成了::::

其中 LUN 是一个坑,官方文档中有对 LUN 的介绍是这个样的

1 is the SCSI LUN of the boot disk, in hexadecimal. It can be left empty, in which case the default LUN (0) will be used.

LUN 是指要加载 iSCSI target 中哪个 LUN,值是 LUN 的编号 ,关键信息是 默认值 为 0。

使用我的脚本加载 DS3617xs 中的 iSCSI 一切正常

但是用这个脚本加载 DS918+ 的中 iSCSI 就会加载不到

研究了几个小才发现

在我在 DS3617xs 中 iSCSI target 第一个 LUN 的编号为 0

3451cca8db534a267339e2ebdeba6f34.png

而 DS918+ 中 iSCSI target 第一个 LUN 的编号为 1

53b92a31234950d0c12f8859e8e724e0.png

所以如果发现自己 iSCSI target 第一个 LUN 的编号为 1 的,请修改 netboot-tftp 源码中的 boot.ipxe.cfg 文件

d77eccab9b9caf39ff74bb3204a90825.png

1set base-iscsi iscsi:${iscsi-server}::::${base-iqn}

改成

1set base-iscsi iscsi:${iscsi-server}:::1:${base-iqn}

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值