N5105 G47 I226 5 网口双串 ESXi8.0 虚拟机安装 iStoreOS实操记录

一、硬件环境说明

主机:N5105 G47 工控机箱

  • 设备:倍控 N5105 G47 机箱,5 口 I226 网卡、双串口、4 口 POE 供电
  • 存储:512G mSATA 固态硬盘,SATA 位无硬盘
  • 虚拟化平台:VMware ESXi 8.0,已完成 4 张 I226 网卡直通
  • 镜像工具:StarWind V2V Converter(云端直传 ESXi,不本地中转)
  • 终端工具:XTerminal-5.6.6-win-x64-portable
  • 系统版本:iStoreOS 24.10.8-2026073111 x86_64 squashfs combined-efi

二、软件准备与全部下载地址

2.1 iStoreOS 系统镜像(本次专用版本)

文件名:istoreos-24.10.8-2026073111-x86-64-squashfs-combined-efi.img.gz

  • SourceForge 镜像源https://sourceforge.net/projects/istoreos/files/iStoreOS/
  • KoolCenter 官方源https://fw.koolcenter.com/iStoreOS/
  • 备用分流https://fw0.koolcenter.com/iStoreOS/

选择适用于 x86_64 架构的 combined-efi 格式镜像:
istoreos-24.10.8-2026073111-x86-64-squashfs-combined-efi.img.gz

2.2 镜像转换工具(Windows)

StarWind V2V Converter(免费,用于 img 转 ESXi 识别 vmdk)

官网下载https://www.starwindsoftware.com/starwind-v2v-converter-download

备用地址https://www.starwindsoftware.com/starwind-v2v-converter

2.3 辅助工具

  1. 7-Zip:解压 img.gz 镜像
  2. XTerminal-5.6.6-win-x64-portable:SSH 连接 ESXi、iStoreOS 后台执行命令
  • 官网下载https://www.xterminal.cn/

三、ESXi 前置配置:BIOS 开启直通、网卡 PCI 直通设置(ESXi 已装好,仅配置直通)

3.1 BIOS 硬件开启虚拟化

N5105 开机按 Del 进入 BIOS:

  1. CPU Configuration → Intel Virtualization Technology:Enabled

  2. VT-d(IOMMU):Enabled

  3. SR-IOV:Enabled(I226 网卡支持)

    保存重启进入 ESXi 系统。

四、iStoreOS 镜像格式转换(Windows 端操作)

4.1 解压镜像

使用 7-Zip 解压下载的 istoreos-24.10.8-2026073111-x86-64-squashfs-combined-efi.img.gz,得到裸磁盘文件 .img

4.2 StarWind 转换并直传 ESXi 完整步骤

  1. 右键 StarWind V2V Converter,选择以管理员身份运行,避免 ESXi 存储写入权限 403 报错
  2. 转换源选择 Local file,点击 Next
  3. 选中解压后的istoreos-24.10.8-2026073111-x86-64-squashfs-combined-efi.img img 镜像,软件自动识别 Raw 磁盘格式,确认下一步
  4. 目标类型选择 Remote VMware ESXi Server(适配 ESXi8.0),Next
  5. 填写 ESXi 远程连接信息
    • IP address:ESXi 管理 IP(192.168.50.235)
    • User name:root
    • Password:ESXi 登录密码
  6. 磁盘格式选择 ESXi Server image,预分配 vmdk,Next
  7. 存储路径配置
    • File name:自定义 istoreos-efi.vmdk
    • 浏览 ESXi 数据存储,在 mSATA 硬盘存储根目录新建 istoreos 文件夹作为存放路径
    • 取消勾选「Attach image to virtual machine」,后续手动新建虚拟机挂载磁盘
  8. 核对全部参数,点击 Start 开始转换上传
    • 软件本地完成 img 转 vmdk
    • 转换结束自动通过 HTTPS 直传至 ESXi mSATA 存储,同步生成 istoreos-efi.vmdkistoreos-efi-flat.vmdk
  9. 提示 Complete 代表上传完成,进入 ESXi「存储 - 数据存储浏览器」确认文件存在。

五、ESXi 新建 iStoreOS 虚拟机完整步骤

  1. ESXi 后台【虚拟机】-【创建 / 注册虚拟机】→【创建新虚拟机】

    • 名称:iStoreOS-24.10.6
    • 兼容性:ESXi 8.0 U2虚拟机
    • 客户机操作系统:Linux → 其他 Linux (x86_64)
  2. 磁盘设置:删除默认新建硬盘,选择【使用现有虚拟磁盘】,选中上传的 istoreos.vmdk

  3. CPU 内存配置:

    • CPU:2 核 4 线程(N5105 推荐分配 2 核,预留 2 核给 ESXi)
    • 内存:4GB,勾选「预留所有客户机内存」(直通网卡必须开启,否则开机失败)
  4. 网络适配器:删除所有默认虚拟网卡,后续使用 PCI 直通网卡,此处不添加任何虚拟网卡

  5. 添加 PCI 直通硬件:【添加其他设备】-【PCI 设备】,依次勾选 4 块 I226 直通网卡,确认添加

  6. 虚拟机选项设置:

    • 引导选项:固件选择EFI
    • 禁用安全启动,保存虚拟机配置
  7. 开启虚拟机电源,进入 iStoreOS 控制台。

  8. 由于 ESXi 中创建的虚拟磁盘初始大小等于原始镜像大小(约 2GB),需要将其扩容到 32GB。

    • 关闭 iStoreOS 虚拟机

    • 右键虚拟机 → 编辑设置(Edit Settings)

    • 找到硬盘 → 将 磁盘大小(Disk Size)修改为 32 GB

    • 点击 保存

六、iStoreOS 初始化与基础网络配置

  1. 虚拟机控制台启动完成,回车激活终端,输入quickstart进入系统安装向导

  2. 磁盘扩容:转换后上传的istoreos.vmdk只有2G多,所有要把这个istoreos.vmdk扩容到32G,也可以更多。(忘了,不知道能不能扩容)。

  3. 如果不能扩容:磁盘选择页面选中挂载的 vmdk 磁盘,确认写入系统分区表

  4. 网页后台登录:http://192.168.1.1,进入【网络】-【网络接口】

  5. 查看所有网卡 MAC 地址,找到 MAC 00:d0:b4:01:0b:b3 对应设备名为 eth1

  6. 修改接口配置:

  • 新建 WAN 接口:设备 eth1,协议按需选择(PPPoE / 静态 IP/DHCP)
  • LAN 接口绑定剩余网卡,LAN 静态地址修改为 192.168.50.1,子网掩码 255.255.255.0
  • DHCP 地址池:192.168.50.10 ~ 192.168.50.200
  1. 保存应用,等待网络重启,之后管理后台地址变更为 http://192.168.50.1

七、核心实操 :iStoreOS /overlay 分区扩容(文档全套命令)

虚拟机新增磁盘后,磁盘尾部存在大量空闲空间,使用 parted 扩容 sda3 根分区,两种操作方式:

方式 1:直接指定容量扩容

# 进入分区工具
parted
# 查看磁盘分区表
print
# 执行分区扩容,分区号3(/overlay挂载分区)
resizepart
Partition number? 3
Warning提示磁盘正在使用,输入yes确认
# 扩容终点设置31G(根据磁盘总容量自定义)
End? [2550MB]? 31G
quit
# 在线扩容ext4文件系统
resize2fs -p /dev/sda3

操作代码如下:

root@iStoreOS:~# parted    # 输入 parted
GNU Parted 3.6
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print # 输入 print
Model: ATA VMware Virtual S (scsi)
Disk /dev/sda: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
128 17.4kB 262kB 245kB bios_grub
1 262kB 134MB 134MB fat16 legacy_boot
2 134MB 403MB 268MB msftdata
3 403MB 2550MB 2147MB ext4 msftdata

(parted) resizepart # 输入 resizepart
Partition number? 3 # 输入 3
Warning: Partition /dev/sda3 is being used. Are you sure you want to continue?
Yes/No? yes # 输入 yes
End? [2550MB]? 31G # 输入 剩余磁盘的大小
(parted) quit # 输入 quit
Information: You may need to update /etc/fstab.
root@iStoreOS:~# resize2fs -p /dev/sda3 # 修改文件系统
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/sda3 is mounted on /overlay; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/sda3 is now 7469991 (4k) blocks long.
root@iStoreOS:~#

方式 2:扇区精确扩容(推荐,自动占满全部空闲空间)

# 以扇区为单位查看分区与空闲空间
parted /dev/sda unit s print free
# 进入parted切换扇区单位
parted
unit s
print free
# 扩容3号分区,100%代表延伸至磁盘最后扇区
resizepart 3
yes
End? [60546875s]? 100%
quit
# 更新文件系统容量
resize2fs -p /dev/sda3

执行完成后,df -h查看 /overlay 分区容量已扩展至磁盘最大空间。

操作代码如下:

root@iStoreOS:~# parted /dev/sda unit s print free
Model: ATA VMware Virtual S (scsi)
Disk /dev/sda: 67108864s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
128 34s 511s 478s bios_grub
1 512s 262655s 262144s fat16 legacy_boot
2 262656s 786943s 524288s msftdata
3 786944s 60546875s 59759932s ext4 msftdata
60546876s 67108830s 6561955s Free Space

root@iStoreOS:~# parted
GNU Parted 3.6
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s # 使用扇区为单位,更精确
(parted) print free # 再次确认空闲空间
Model: ATA VMware Virtual S (scsi)
Disk /dev/sda: 67108864s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
128 34s 511s 478s bios_grub
1 512s 262655s 262144s fat16 legacy_boot
2 262656s 786943s 524288s msftdata
3 786944s 60546875s 59759932s ext4 msftdata
60546876s 67108830s 6561955s Free Space

(parted) resizepart 3 # 选择分区号 3
Warning: Partition /dev/sda3 is being used. Are you sure you want to continue?
Yes/No? yes
# 输入 -1s 表示使用磁盘最后一个扇区(全部空闲空间);
# 100% 将分区 3 扩展到磁盘尾部
End? [60546875s]? 100%
(parted) quit
Information: You may need to update /etc/fstab.
# resize2fs /dev/sda3 这个也可以
root@iStoreOS:~# resize2fs -p /dev/sda3
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/sda3 is mounted on /overlay; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 4
The filesystem on /dev/sda3 is now 8290235 (4k) blocks long.

八、核心实操 :Sing-box 1.13.11 一键安装

官方 GitHub Releases:这是最权威的下载渠道。可以访问 SagerNet/sing-box 的 Releases 页面,在 v1.13.11 版本的 Assets 下查找 x86_64 架构的 .ipk 文件

SSH 登录 iStoreOS root 用户,执行 opkg 更新仓库并安装对应 x86_64 安装包:

opkg update && opkg install sing-box_1.13.11_openwrt_x86_64.ipk

执行流程说明:

  1. 自动同步 istore、openwrt core/base/luci/routing 多源软件包列表
  2. 校验软件签名通过,自动下载依赖内核模块kmod-nfnetlink-queuekmod-nft-queue
  3. 自动配置内核模块与 sing-box 服务,安装完成后 iStore 软件中心出现 Sing-box 控制面板。

九、核心实操:时区统一 Asia/Shanghai(zoneinfo 安装)

iStoreOS 默认时区异常时执行以下命令修复:

# 安装时区数据包(apk为iStoreOS内置包管理器)
opkg update
opkg install zoneinfo-core zoneinfo-asia
# 创建本地时区软链接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 重启系统时间同步服务
/etc/init.d/sysntpd restart

十、核心实操 :Docker 镜像加速源配置

修改 dockerd 配置文件/etc/config/dockerd,写入多国内镜像仓库,提升拉取速度:

config globals 'globals'
option data_root '/overlay/upper/opt/docker'
option log_level 'warn'
option iptables '0'
option remote_endpoint '0'
list registry_mirrors 'https://docker.1panel.live'
list registry_mirrors 'https://docker.1panel.dev'
list registry_mirrors 'https://docker.1ms.run'
list registry_mirrors 'https://docker.m.daocloud.io'
list registry_mirrors 'https://docker.xuanyuan.me'
list registry_mirrors 'https://atomhub.openatom.cn'

修改完成后重启 Docker 生效:/etc/init.d/dockerd restart

十一、核心实操:修复 sleep 0.5 小数休眠不支持

包来自 OpenWrt 24.10 分支(coreutils=9.7‑r1)

本地下载:coreutils-sleep_9.7-r1_x86_64.ipk

官方直链(24.10.8,最新 24.10 稳定版)

https://downloads.openwrt.org/releases/24.10.8/packages/x86_64/packages/coreutils-sleep_9.7-r1_x86_64.ipk

国内中科大镜像(推荐,速度快)

https://mirrors.ustc.edu.cn/openwrt/releases/24.10.8/packages/x86_64/packages/coreutils-sleep_9.7-r1_x86_64.ipk

离线安装两种方式

  1. wget 下载后本地安装
wget https://mirrors.ustc.edu.cn/openwrt/releases/24.10.8/packages/x86_64/packages/coreutils-sleep_9.7-r1_x86_64.ipk
opkg install ./coreutils-sleep_9.7-r1_x86_64.ipk
  1. opkg 直接远程安装
opkg install https://mirrors.ustc.edu.cn/openwrt/releases/24.10.8/packages/x86_64/packages/coreutils-sleep_9.7-r1_x86_64.ipk

⚠️注意:只能在 OpenWrt‑24.10.x x86_64 使用;23.05 版本 coreutils 版本是 9.3,没有 9.7‑r1 这个包,强行安装会报依赖错误

十二、核心实操 6:释放 443 端口(避免 uhttpd 占用,给博客 HTTPS 使用)

找到/etc/config/uhttpd修改为如下:

config uhttpd 'main'
list listen_http '0.0.0.0:80'
list listen_http '[::]:8880'
list listen_https '0.0.0.0:54443'
list listen_https '[::]:44443'
option redirect_https '0'
option home '/www'

重启 web 管理服务

/etc/init.d/uhttpd restart
# 验证端口释放
netstat -tulpn | grep 443
# 无输出即代表443端口空闲

十三、核心实操:系统定时任务 crontab 配置

编辑 root 定时任务文件/etc/crontabs/root,写入业务脚本定时执行规则:

# ln -sf /b860/docker-gitee/crontabs_root /etc/crontabs/root
# 每日1353分执行订阅检测脚本
53 13 * * * /b860/docker-gitee/subcheck/config.sh
# 开机60分钟内,每10分钟检测NAS存活状态
*/10 * * * * [ $(cat /proc/uptime | awk '{print int($1)}') -le 3600 ] && /astore/check_nas_alive.sh
# 每日1910分自动备份docker-gitee目录至Gitee(按需开启)
#10 19 * * * /b860/docker-gitee/gitee_backup.sh

重载定时任务:/etc/init.d/cron reload

十四、附加:Gitee 仓库备份脚本拉取命令

如需拉取 armb860 备份仓库,执行浅克隆(减少下载体积):

git clone --depth 1 -b armb860 [email protected]:cfv2ray/armbackup.git temp_clean

部署踩坑总结与扩展

  1. I226 网卡直通必须开启虚拟机「预留所有客户机内存」,否则开机提示 PCI 设备启动失败
  2. iStoreOS Legacy 镜像虚拟机固件必须选 BIOS,UEFI 模式无法引导系统
  3. 扩容分区时提示磁盘正在使用可直接 yes,iStoreOS 支持 ext4 在线扩容无需关机
  4. ESXi 直通网卡前,务必删除虚拟交换机绑定,否则直通状态灰色无法切换
  5. Docker 加速源修改后必须重启 dockerd,否则镜像拉取仍走官方源
  6. N5105 分配虚拟机内存建议最低 2G,4G 可稳定运行 Sing-box+Docker 多容器
  7. SATA 硬盘直通给 iStoreOS 搭建轻量 NAS 文件服务
  8. Sing-box 配置订阅、自定义路由规则实现分流
  9. 定时脚本自动备份 iStoreOS 配置、Docker 容器数据
  10. 安装 Jellyfin/EMBY 媒体服务,实现家庭影音库虚拟化部署
  11. 串口 COM 直通,外接串口设备实现物联网设备管理