找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 249|回复: 16

[分享] mboot 网络启动

[复制链接]
发表于 昨天 21:59 | 显示全部楼层 |阅读模式
https://github.com/haozheyu/mboot



mboot


面向物理机与虚拟机的 PXE/iPXE 网络启动和带外控制平台。
mboot 将 DHCP、ProxyDHCP、TFTP、HTTP Boot、iPXE 动态菜单、设备发现和 IPMI/BMC 控制整合为一个 Go 服务,并提供 Vue 3 管理界面。
它既可以管理裸金属服务器批量装机,也可以发现虚拟机 PXE 客户端。设备身份和控制能力相互独立:物理机可以关联 IPMI/BMC,虚拟机后续可以关联 VMware、Proxmox、libvirt 或 Hyper-V 控制器。
核心模型


                         mboot                           │              ┌────────────┴────────────┐              │                         │         网络启动平面                 管理平面              │                         │   DHCP / ProxyDHCP / TFTP       Web UI / API / Events       HTTP Boot / iPXE                 │              │               ┌─────────┴─────────┐              │               │                   │            设备层          控制器层              用户与审计              │               │      物理机 / 虚拟机      IPMI / BMC(已支持)      MAC / IP / 状态      VMware / Proxmox(规划)

设备


设备是物理机和虚拟机共用的资源模型,负责记录:
  • PXE 网卡 MAC
  • DHCP 当前地址
  • BIOS/UEFI 固件类型
  • 在线状态和最后启动记录
  • 磁盘、网络等客户端上报信息
设备通过稳定的设备 ID 和 PXE MAC 跟踪动态 IP,不使用易变化的 DHCP 地址作为关联键。
控制器


控制器通过 device_id 关联设备,并提供设备类型对应的控制能力:
[td]
控制器使用对象状态能力
IPMI / BMC物理服务器已支持BMC、Power、Boot、标准启动参数
VMwareVMware 虚拟机规划中电源、虚拟启动设备
ProxmoxQEMU/LXC规划中电源、启动顺序
libvirtKVM/QEMU规划中电源、启动设备
Hyper-VHyper-V 虚拟机规划中电源、固件启动设置
BMC 管理地址与设备业务网地址是两套独立地址。mboot 不通过 IP 猜测两者关系,而是在控制器中显式选择设备,后续由 DHCP/iPXE 自动更新设备地址。
已实现能力


网络启动


  • DHCP Server 和 ProxyDHCP
  • BIOS、UEFI x64、UEFI ARM64 客户端识别
  • TFTP 和 HTTP Boot
  • HTTP Range 请求
  • 动态 iPXE 菜单
  • 本地启动、外部脚本和 netboot.xyz
  • 完整 DHCP 与已有 DHCP 网络两种部署模式
设备管理


  • 自动发现物理机和虚拟机
  • 按 PXE MAC 更新动态 DHCP 地址
  • ProxyDHCP 环境通过 iPXE 回调记录实际客户端地址
  • 静态设备、批量设备和待认领设备
  • Wake-on-LAN
  • 设备状态和健康信息
IPMI / BMC


  • BMC 连通性及控制器信息探测
  • 查询电源状态
  • 开机、软关机、强制重启、电源循环和强制断电
  • 设置下一次 PXE、本地硬盘、虚拟光驱或 BIOS Setup 启动
  • 明确选择 Legacy BIOS 或 UEFI 启动模式
  • 读取 IPMI System Boot Options 参数 5
  • 操作事件记录
管理平台


  • Vue 3 Web 控制台
  • 用户登录和会话认证
  • SQLite 配置及状态存储
  • 文件管理和启动菜单管理
  • SSE 实时事件
  • 日志和系统诊断
  • Go 单二进制部署
IPMI 安全边界


IPMI 操作会直接影响物理服务器,mboot 对此采用以下限制:
  • 查询操作不需要确认,所有状态变更都需要明确确认。
  • 前端展示目标服务器、BMC 地址、动作含义及风险。
  • 后端再次验证确认标志,不能只靠绕过页面直接误操作。
  • Boot Override 仅允许下一次启动,不允许通过该接口修改永久启动顺序。
  • 设置启动设备不会自动重启,电源操作必须单独确认。
  • 启动模式必须明确选择 Legacy BIOS 或 UEFI。
  • 密码通过 IPMI_PASSWORD 环境变量传递给 ipmitool,不会出现在进程参数、API 响应或事件日志中。
当前控制器密码保存在 SQLite 数据库中。生产环境必须限制数据目录权限;后续可替换为集中密钥系统或加密凭据存储。
完整 BIOS 属性并不属于 IPMI 标准。当前通用适配器只读取标准启动参数,BIOS 属性修改需要 Dell、HPE、Lenovo、浪潮、Supermicro 等厂商 OEM 适配器。
启动覆盖说明


页面中的 PXE 和硬盘启动均表示“仅下一次启动”:
选择下一次启动设备        │        ├── PXE 网络启动        ├── 默认本地硬盘        ├── 虚拟光驱        └── BIOS Setup        │        ├── Legacy BIOS        └── UEFI        │        └── 写入 BMC,不自动重启

等价的常用命令如下:
# 下一次从 PXE 启动,Legacy BIOSipmitool -I lanplus -H BMC_IP -U USER chassis bootdev pxe# 下一次从 PXE 启动,UEFIipmitool -I lanplus -H BMC_IP -U USER chassis bootdev pxe options=efiboot# 下一次从默认硬盘启动,Legacy BIOSipmitool -I lanplus -H BMC_IP -U USER chassis bootdev disk# 下一次从默认硬盘启动,UEFIipmitool -I lanplus -H BMC_IP -U USER chassis bootdev disk options=efiboot

chassis bootparam get 5 读取的是 BMC 保存的启动覆盖,不是当前操作系统的实际启动状态。

 楼主| 发表于 昨天 22:01 | 显示全部楼层
今天刚看到的,介绍直接复制github上的内容了。就不排版了。
回复

使用道具 举报

发表于 昨天 22:18 | 显示全部楼层
支持分享mboot 网络启动工具
回复

使用道具 举报

发表于 昨天 22:23 | 显示全部楼层
多谢楼主的无私分享啊
回复

使用道具 举报

发表于 昨天 22:38 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 22:41 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 23:22 来自手机 | 显示全部楼层
优点是啥?
回复

使用道具 举报

发表于 7 小时前 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层
看看 谢谢
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
了解一下,谢谢!
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
感谢楼主的无私分享。
回复

使用道具 举报

发表于 3 小时前 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
这个真的很实用
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
谢谢楼主辛苦分享!
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
感谢分享好东东
回复

使用道具 举报

发表于 17 分钟前 | 显示全部楼层
技术学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-8-25 11:51

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表