这次记录的是在 fnOS 的虚拟机里安装 ImmortalWrt,不是给实体路由器刷机。两者选镜像、启动方式和网卡配置都不一样,不能拿虚拟机流程直接套到家里的路由器上。
固件怎么选
到 ImmortalWrt 下载站 或 固件选择器 核对设备与目标平台。本文场景是 x86-64 虚拟机,使用 UEFI 启动时应选择与之匹配的 combined-efi 磁盘镜像;EXT4 与 SquashFS 也要按实际需要选择。
实体路由器的 factory、sysupgrade 镜像有自己的设备适用范围。文件名里带 OpenWrt 并不意味着它能刷进任何设备。

说明图:x86 虚拟机镜像,不等于实体路由器固件
创建虚拟机
准备匹配的虚拟机架构与固件启动方式,将解压后的磁盘镜像导入或作为系统盘使用。先不要连接生产 LAN,或者把网卡接到隔离的测试网络,避免默认 DHCP、IPv6 RA 或重复网关影响现有网络。

fnOS 界面:创建 ImmortalWrt 虚拟机
这是 fnOS 虚拟机创建界面。它展示操作入口,不代表新版界面的每个选项都相同;CPU、内存、磁盘与网卡要按当前主机资源配置。
先启动到控制台,检查系统实际识别到的网卡与网络配置:
ip link
uci show network
uci show dhcp
不要整份覆盖 /etc/config/network,也不要假定系统一定有 eth0 到 eth3 四张网卡。这种写法很容易把管理网络改断。
改 LAN 地址时只改需要的部分
先确认当前配置确实存在 network.lan,再用 UCI 修改它的地址。下面的地址只是示例,必须换成你实际网络中未被占用的地址,并保持网关规划一致:
cp /etc/config/network /etc/config/network.before-lan-change
uci set network.lan.ipaddr='192.168.10.2'
uci set network.lan.netmask='255.255.255.0'
uci commit network
/etc/init.d/network restart
重启网络会断开原来的管理连接,因此控制台要一直留着。管理电脑也需要能到达新的网段。不要为了让页面打开,顺手改掉 WAN、桥接成员或 VLAN。
如果要作为旁路由接入已经有主路由的网络,先在隔离环境确认 LAN 上的 DHCP 和 IPv6 通告策略。不能让两个设备未经规划就同时给同一个 LAN 发地址。若作为主路由,则先区分 WAN、LAN 的虚拟网卡与宿主机网桥,再接线测试。
安装 iStore
iStore 官方项目 当前说明了架构与依赖范围。先检查系统使用的是 apk 还是 opkg,不要把不同版本的软件源混在一起。
按官方安装流程更新对应包索引后,下载安装器,检查内容再执行:
cd /tmp
wget https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run
less istore-reinstall.run
chmod 755 istore-reinstall.run
./istore-reinstall.run
如果系统没有 less,用可用的文本查看工具检查。安装报错时先看架构、软件源与依赖,不要直接覆盖安装来自其他固件的包。
我曾在安装 PassWall、负载均衡插件时曾碰到“貌似不生效”的情况,后来尝试过手动覆盖安装。这是当时那套固件的经历,不是当前所有版本都有同一个故障,也不应把覆盖安装当成通用修复办法。
参考:ImmortalWrt、固件下载、iStore。新版步骤做了文档核对,未在你的 fnOS 上重建虚拟机。