ImmortalWRT 23.05在PVE8下的安装
前言
OpenWrt相关的设置说实话网上现成的轮子已经很多了,写这么篇文章属实是没啥必要。但我想了想,用了三四年OpenWrt及其衍生系统,不写两句对不起自己这几年的使用经历,顺便也做一个笔记,防止以后升级系统后忘了要做什么操作。
不过不得不说,玩了几年的路由器系统,无论是RouterOS、Ikuai、还是OpenWrt及其衍生品,还是ImmortalWrt更符合个人的需求,相比RouterOS来说更开箱即用,相比Ikuai而言定制化程度更高,相比OpenWRT原版来说对大陆用户更友好但在各类衍生中又最纯净。
此处有点拉踩的嫌疑了,其实想表达的就一句话,如果想折腾软路由希望大家能多用用不同类型的路由系统,适合我的并不一定适合你。
ImmortalWRT固件下载
ImmortalWRT开源地址:https://github.com/immortalwrt/immortalwrt
官方下载站:https://downloads.immortalwrt.org/
如果你有兴趣自己编译可以通过git方式在第一个开源地址拉取源码自己编译,一般用户推荐去第二个地址下载官方编译完成的镜像,该镜像和你自己编译出来的没有任何区别,唯一的问题就是磁盘空间太小有爆炸的风险但可以后期扩容。
截至2025/4/1,官方最新版本的镜像为ImmortalWrt 24.10.0,个人家用环境还在使用23.05.4所以本文以该版本为主,对于读者而言还是推荐使用最新版,会有更多特性而且更容易得到官方支持,过时的发行版只会得到有限的安全和bug修复。不是很推荐使用Snapshot版本,这个版本你可以理解为开发版或者每夜版,路由器设备建议还是稳定为主。

本文使用虚拟化安装,因此下载x86_64版的镜像进行安装,其实这个固件支持非常多类型的其他架构,烧录安装可以参考其他人的成功案例,本文不着重讲解。个人比较偏好squashfs分区的镜像,不过其实用ext4也可以,因为squashfs分区镜像的优势是可以使用一键重置功能,但是不能直接扩展用户分区;ext4分区则相反,无法一键重置系统,但可以直接扩展用户分区。前者对于存储空间不大的设备不太友好,虽然可以使用挂载外部overlay的方式扩展空间,但是会浪费镜像自身包含的squashfs分区大小,不过对于虚拟机而言这是个不太大的问题就是了,不会真有人装了虚拟化平台还死扣这200多MiB的硬盘大小吧。现代化设备基本都支持uefi,选择uefi启动方式的镜像即可。
由于本文使用PVE安装,需要下载generic-squashfs-combined-efi.img.gz,下载完毕后获得安装包,将其中的img文件解压出来,通过PVE的WebUI上传至平台内部,如图所示。

基于PVE的虚拟化安装
创建虚拟机
点击右上角的创建虚拟机。

在创建虚拟机页面填入虚拟机名称,勾选高级,选择开机自启动选项,随后下一步

勾选不适用任何介质安装,点击下一步,因为我们下载的img镜像其实内部已经安装有系统了,并不需要CD等介质来安装,只需要把img镜像转换为磁盘挂载给虚拟机就行。

系统界面将机型改为q35,勾选Qemu代理,控制器保持VirtIO SCSI single不变,如果你之前下载的是efi后缀的镜像务必将BIOS改为UEFI启动方式,不带就使用SeaBIOS传统启动,EFI磁盘默认是没有的,EFI存储中要手动选择local-lvm分区。

磁盘中直接删除磁盘,理由之前也讲过了,我们下载的镜像中已经包含有操作系统,镜像即是数据盘也是引导盘,因此不需要额外的数据盘,当然你有做nas的需求除外,不过你都玩虚拟机了为啥要用路由器做NAS。

CPU中核心数量根据你的CPU线程数量选择,例如使用N5305,这是个四核四线程处理器,则可以分配4核心给ImmortalWrt虚拟机,如果是4核心8线程的处理器,则可以分配8核心给虚拟机,但是一般没必要,分四个核心就行了。类别选择host,CPU权重酌情增加,数字越大能越优先使用CPU资源。理论上路由器的CPU资源是不会一直吃满的,所以设置看上把CPU资源全分给了ImmortalWrt,但是其实在运行过程中是有相当一部分资源空闲的,除非你小马拉大车用J1900这种过时的CPU跑各种加解密计算把CPU全时段占满,不然性能高一些的CPU完全可以1线程当2-3个核心来用,如果你能理解恭喜你掌握了VPS CPU超售的原理。

内存给1024MiB就行,内存如果没有那么紧张把Ballooning设备关了。如果你的内存资源非常吃紧,可以开启该选项把内存调成动态的,最小内存设置为512MiB,让其按需申请。

网络设备一般建议直通,不过现在的低功耗CPU跑VirtIO的网卡也没什么压力,看个人选择。
我个人设置是有一个口加入了vmbr0的网桥,该口平常是不连线缆的,除非ImmortalWrt故障导致PVE平台失联我才会连接线缆直连进PVE排障,因此网络规划就是一台ImmortalWrt同时拥有三张直通网卡和一个桥接在虚拟网桥vmbr0的虚拟网卡。
在这样的规划下我们应当保留网络中桥接vmbr0的配置,并点击下一步,如果你不想要桥接网卡,那请勾选无网络设备。

最终确认完成后,我们便得到了一台没有硬盘且只有一张桥接网卡的虚拟机,此时我们应当进行引导盘的设置和直通网卡配置。
往虚拟机中添加磁盘
往虚拟机中添加磁盘需要依赖PVE本身的Shell功能,点击你的PVE节点名称,再选择PVE本身的Shell。

通过以下命令导入硬盘镜像到虚拟机中,其中107请替换为自己的虚拟机编号,镜像名称需要根据你上传的来,不确定可以使用ls -l /var/lib/vz/template/iso/来确认,local-lvm是让你存虚拟机的分区,如果你没有这个分区,那就是local分区,因为PVE在默认安装下是有这个分区的,如果没有可能是你的磁盘太小了只能容纳一个local分区或者你安装的时候更改了磁盘分区方式。
qm disk import 107 /var/lib/vz/template/iso/immortalwrt-23.05.4-x86-64-generic-squashfs-combined-efi.img local-lvm
回到虚拟机配置页面,选择硬件,此时我们会发现有一个未使用的磁盘存在,我们双击该磁盘使用默认状态添加即可。


磁盘扩容
默认情况下,ImmortalWrt官方的镜像只有300MiB空间,大部分情况下是够用的,但是如果需要留存点东西就比较麻烦了,我个人是建议在磁盘空余的情况下扩容2GiB存储。
选中刚刚添加的磁盘,点击磁盘操作,选择调整大小,增量大小填入2后点击调整磁盘大小。


可以发现磁盘已经顺利扩容至2300MiB。

但此时分区并未扩容,因为这只是增加了虚拟磁盘的大小,而分区的大小未改变,因此我们在进入系统后需要进行二次更改。
添加网卡
根据上文提到的,我选择使用3个直通网卡+1个虚拟网桥的配置,因此要在硬件中添加直通设备。

选择原始设备,在其中选择需要直通的网卡,并勾选所有功能。

如何确定需要直通的网卡
需要注意的是不要把vmbr0绑定的物理网卡直通给虚拟机,因为一旦网卡被直通就无法被PVE接管,默认的管理口会挂掉也就无法从WebUI管理了。如果不确定要直通的网卡是否是vmbr0绑定的,可以通过ethtool工具查询。
先确认vmbr0绑定的物理网卡名称,通过点击pve主机名-系统-网络查看vmbr0绑定的物理接口名称,我这的环境是enp5s0。

进入PVE本身的shell,使用ethtool -i 'enp5s0'(将enp5s0换成你自己的物理网卡名称),输出结果中的bus-info就是pci设备id。
root@pve8:~# ethtool -i 'enp5s0'
driver: igc
version: 6.8.12-7-pve
firmware-version: 2017:888d
expansion-rom-version:
bus-info: 0000:05:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes在直通的过程中,注意不要将这个网卡直通给虚拟机即可。
选择启动项
默认情况下,OpenWrt虚拟机不会从我们添加的镜像启动,如果此时开启虚拟机会无法找到启动项进入PXE模式。

选择虚拟机名称-选项-引导顺序 ,

勾选scsi0,并拖动至第一顺位,并取消勾选net0网络启动和ide2 CD启动,即可成功设置启动项。切记一定要取消net0启动项,因为PVE8默认需要安全启动,而OpenWrt的镜像是无法安全启动的,不取消网络启动后续可能因为安全启动失败回落至网络启动无法进入系统。

启动虚拟机
右键虚拟机选择启动或者右上角点击启动选项开启虚拟机。

取消安全启动
如果发现启动后是以下的报错,请关闭启动选项中的net0启动。

如果是以下报错,先别慌,按任意键进入Boot Manager。

进入后选择Device Manager。

选择Secure Boot Configuration。

选择Attempt Secure Boot,取消安全启动,F10后按Y确认。

随后一路按Esc键退出到Boot Manager首页,选择Continue并回车。

即可进入OpenWrt系统跑码阶段,此时系统的基本安装完毕。
