在编译完的 OpenWRT 固件内安装挂载点都可以正常使用,但部分固件安装完就会出现挂载点内没有全局设置内容或执行 block 相关命令提示 Error loading shared library libubus.so.20220601 错误,错误提示如下,这种问题通常是 libubus 动态库版本问题。

OpenWRT 挂载报错 libubus.so.20220601

解决方法

1、查找是否安装 libubus.so 动态库,安装的动态库版本是否为 libubus.so.20220601,并尝试安装 libubus 动态库,执行命令如下:

# 查找动态库版本
opkg list-installed | grep ubus

# 强制安装动态
opkg update
opkg install libubus20220601 --force-depends

查看安装的libubus版本

2、如你的发行版软件源地址内无法查找到或无法下载 libubus.so.20220601 动态库,那么就替换掉你的发行版软件源,并禁用掉 option check_signature,替换时注意你的架构,以下提供为 aarch64_cortex-a53 架构使用,地址如下:

src/gz openwrt_core https://downloads.openwrt.org/snapshots/targets/armvirt/64/packages
src/gz openwrt_base https://archive.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/base
src/gz openwrt_luci https://archive.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/luci
src/gz openwrt_packages https://archive.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/packages
src/gz openwrt_routing https://archive.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/routing
src/gz openwrt_telephony https://archive.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/telephony

更换源并禁用掉 option check_signature

3、替换完成将 OPKG 基础配置内的 option check_signature 禁用,执行 opkg update 进行更新源,如果执行更新过程中提示以下错误,请暂时关闭你的网络代理插件后重新更新并强制安装动态库,错误提示如下:

# 禁用项
# option check_signature

# 更新发行源
opkg update

# 更新错误提示
* opkg_download: Check your network settings and connectivity .

# 安装 libubus
opkg install libubus20220601

更新源并安装libubus20220601

最后说明

此方法可以解决 Error loading shared library libubus.so.20220601 错误、挂载点全局设置内无内容、无法自动挂载硬盘等问题,libubox 主要提供基于事件驱动的机制 和 多种接口的开发支持,如链表、KV链表、平衡查找二叉树、MD5、JSON等,而 USB控制器驱动 刚好需要特定版本的 libubox 动态库。