PVE 虚拟机安装 OpenWrt PassWall2 全记录:汉化界面、安装 Xray,直到发现磁盘空间不足
PVE 虚拟机安装 OpenWrt PassWall2 全记录:汉化界面、安装 Xray,直到发现磁盘空间不足
一、为什么要折腾这套环境?
这次搭建的目标,是在 PVE 虚拟化环境中运行 OpenWrt,并通过 PassWall2 管理代理节点,为后续家庭网络配置做准备。
我的环境并不是一台独立的软路由,而是在 Intel N100 小主机上的 PVE 中运行 OpenWrt 虚拟机。
主要环境如下:
| 项目 | 配置 |
|---|---|
| 宿主机 | Intel N100 小主机 |
| 虚拟化平台 | PVE |
| OpenWrt 版本 | 25.12.5 |
| 系统架构 | x86,i386_pentium4 |
| 初始虚拟磁盘 | 1 GiB |
| 后续扩容 | 4 GiB |
| 代理管理插件 | PassWall2 |
| 代理核心 | Xray、Sing-Box |
这次安装过程有一个很值得记录的地方:插件安装成功,不代表整个代理环境已经准备好;系统磁盘空间、软件源、依赖和代理核心都可能成为下一步的障碍。
二、先让 OpenWrt 界面更容易使用
OpenWrt 安装完成后,首先进入 LuCI 管理界面。
如果系统默认显示英文,可以考虑安装对应版本的中文语言包。OpenWrt 的 LuCI 汉化通常采用独立的语言包,而不是修改网页文件。
安装前,建议先检查当前软件源和可用语言包:
apk update
apk search luci-i18n然后根据搜索结果,选择与当前 LuCI 插件版本相匹配的中文语言包。
例如,某些版本的软件包名称会采用类似以下形式:
luci-i18n-passwall2-zh-cn但具体名称和版本后缀可能因软件源而异,因此应以 apk search 的实际输出为准,不要直接照搬其他 OpenWrt 版本的包名。
安装后刷新 LuCI 页面。如果界面仍然没有变化,可以检查语言包是否已安装,并确认系统语言设置是否选择了中文。
**这里有一个原则:**不要因为系统是 OpenWrt,就直接套用旧版本常见的 opkg 命令。OpenWrt 25.12 使用的是 APK 包管理体系,操作前要先确认当前系统版本。
三、安装 PassWall2 管理插件
接下来安装 PassWall2。
PassWall2 的作用是提供代理节点管理、代理规则和相关服务配置界面。它本身不是代理协议核心,因此安装完成后,还需要配置并安装与节点协议匹配的核心程序。
本次使用的 PassWall2 安装脚本支持只安装 LuCI 管理插件的方式,执行的命令为:
sh /tmp/passwall2.sh --only-luci这里的前提是已经把对应安装脚本下载到了 /tmp/passwall2.sh。
安装输出显示,LuCI 插件已经安装成功,版本信息为:
Release Source GitHub Version 26.10.1-2
LuCI package: luci-app-passwall2-26.10.1-r2.apk
LuCI package: installed同时,安装程序给出了一个重要提醒:
WARN No proxy core is installed.
Passwall2 will not start without xray-core or sing-box.这并不代表 PassWall2 插件安装失败,而是说明代理管理界面已经装好,但系统中还没有可供它调用的代理核心。
可以把整个过程理解为:
PassWall2:负责管理和配置。
Xray 或 Sing-Box:负责按照相应协议实际处理代理流量。
节点配置:提供服务器地址、端口、认证信息和协议参数。
三者缺一不可。
四、先安装 Xray,解决第一个核心依赖
看到提示后,我先选择安装 Xray。
安装前,可以通过 APK 搜索可用版本:
apk search xray-core本次实际安装的版本是:
apk add xray-core=26.3.27-r1安装完成后,终端显示安装成功。随后运行:
xray version得到的版本信息为:
Xray 26.3.27 (Xray, Penetrates Everything.)
OpenWrt (go1.26.9 linux/386)
A unified platform for anti-censorship.这说明 Xray 程序已经可以正常启动并输出版本信息。
不过,需要区分两个概念:
第一,核心程序已安装。 版本命令能够正常执行,说明至少可以确认程序已安装并能运行。
第二,代理服务已正常工作。 这还需要进一步配置节点、选择正确的代理核心、设置路由规则,并测试实际连接。
所以,到这一步,只能确认 Xray 已安装,不能据此认定代理已经连通。
五、为什么还要考虑 Sing-Box?
PassWall2 可以根据所使用的节点协议和配置选择适用的代理核心。
如果手头的节点配置需要 Sing-Box 支持,那么只安装 Xray 就不够。因此,在安装 Xray 后,我又准备安装 Sing-Box。
先执行:
apk add sing-box但这时问题出现了。
安装过程提示:
ERROR: No space left on device最初容易想到的是软件源出问题,或者 Sing-Box 软件包太大。但检查系统空间后,才发现根本原因是 OpenWrt 虚拟机原来的磁盘太小。
六、检查磁盘:虚拟磁盘只有 1 GiB
运行:
df -h原先的可写 Overlay 空间只有约 87 MB,已经使用了大部分,剩余空间不足以完成安装。
OpenWrt 的文件系统结构与常见的 Ubuntu 系统不同。其只读基础系统通常挂载在 /rom,而新安装的软件包、配置修改等可写内容主要放在 Overlay 中。
因此,判断还能安装多少软件时,不能只看虚拟磁盘的总容量,还要看实际可写的 Overlay 空间。
当时的情况可以概括为:
虚拟磁盘总容量:约 1 GiB。
可写 Overlay:约 87 MB。
Overlay 已使用:约 67.6 MB。
剩余空间:约 12.6 MB。
这也解释了为什么 Xray 能装进去,而后续安装 Sing-Box 时却失败:随着已安装软件和依赖增加,剩余可写空间不再充足。
七、先扩容,再继续安装
既然问题在磁盘空间,就应该先解决存储容量,而不是反复重试安装命令。
我先在 PVE 管理界面中把 OpenWrt 虚拟机的磁盘容量从 1 GiB 扩大到 4 GiB。
但要注意:PVE 中扩大虚拟磁盘,只是扩大虚拟设备的容量,不一定会自动扩大 OpenWrt 内部的分区和文件系统。
因此,还需要按照 OpenWrt 官方的根分区扩容文档,检查并完成系统内部的分区及文件系统调整:
https://openwrt.org/docs/guide-user/advanced/expand_root
执行前应确认镜像的分区布局,并做好配置备份。不同镜像的分区结构可能不同,不建议直接复制不适用于当前镜像的命令。
扩容后,再运行:
df -h确认 Overlay 是否已经真正扩大,而不是只看 PVE 界面中的虚拟磁盘容量。
八、扩容完成后,重新安装 Sing-Box
扩容完成后,Overlay 空间明显增加,情况变成了:
/dev/loop0 3.7G 122.1M 3.5G 3% /overlay
overlayfs:/overlay 3.7G 122.1M 3.5G 3% /此时可写空间已经足够。
第一次重新安装 Sing-Box 时,遇到了 Connection aborted,这次提示与此前的磁盘空间不足不同,更像是下载连接中断。
再次执行安装:
apk add sing-box最终成功安装,终端显示:
(1/1) Installing sing-box (1.14.3-r1)
OK: 135.4 MiB in 229 packages随后验证:
sing-box version得到:
sing-box version 1.14.3
Environment: go1.27.2 linux/386再执行:
apk info -e sing-box终端返回:
sing-box至此,可以确认 Sing-Box 已安装,版本命令也能够正常执行。
九、这次安装过程有哪些经验?
1. 插件安装成功,不代表代理核心已经安装
PassWall2 是管理插件,Xray 和 Sing-Box 是代理核心。安装后要根据节点使用的协议与配置选择对应核心。
2. 先看剩余空间,再反复尝试安装
遇到 No space left on device,应优先检查:
df -h而不是反复执行同一条安装命令。
3. PVE 扩容和 OpenWrt 内部扩容是两回事
PVE 中的磁盘容量变大,不代表 OpenWrt 的 Overlay 会自动变大。必须分别确认虚拟磁盘、分区、文件系统和挂载结果。
4. 只读根文件系统显示 100% 不一定是故障
扩容完成后,df -h 中仍可能看到:
/dev/root 5.3M 5.3M 0 100% /r
评论