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

评论

此博客中的热门博文

nvidia-smi命令在windows上打不开

在 PVE 上安装 OpenWRT

Ubuntu关闭防火墙