起因

斐讯 N1 刷了 Armbian 之后想当 NAS 用,装 OpenMediaVault(OMV)做存储管理。本来是想用 armbian-config 来自动安装 OpenMediaVault 的,但是安装的时候总是自动退出,无奈,只能手动安装了。手动装的过程中又踩了三个坑:NFS 依赖把 dpkg 卡在半安装、OMV 引擎服务被注销导致 Web 登不进、密码失灵——都在文末“遇到的问题”里拆解。

需求

  • Armbian(Debian 系,arm64)上手动安装 OMV 4(arrakis)
  • 装完能打开 Web 界面正常登录管理

技术实现原理

OMV 的安装结构:软件源 + 签名 + 环境变量

OMV 不在 Debian/Armbian 官方源里,所以第一步是把 OMV 官方源写进 /etc/apt/sources.list.d/,并用 apt-key 导入它的签名密钥——没有这步信任关系,apt update 会报 NO_PUBKEY,后面一个包都装不上。arrakis 是 OMV 4 的代号,源的代号要和系统版本对上。

三个 export 环境变量是给 apt/dpkg“清场”:OMV 会连带安装 postfix 等一大串包,配置阶段会弹交互式对话框。LANG=C 强制英文输出(避免脚本解析中文 locale 出错),DEBIAN_FRONTEND=noninteractive 让 dpkg 一律用默认答案跳过交互,APT_LISTCHANGES_FRONTEND=none 关掉变更公告。armbian-config 自动装 OMV 容易失败,常见根因正是这些交互和环境没摆平——手动装反而可控。

先装 openmediavault-keyring 再装主包,是因为后续所有 OMV 包的签名校验都靠它。

装完不等于能用:omv-initsystem 与引擎服务

apt 只是把文件放到磁盘上,OMV 的配置数据库、各个服务要靠 omv-initsystem 初始化生成。Web 界面通过本机 socket 调用 openmediavault-engined 引擎干活,引擎服务没起来,浏览器就报 “Failed to connect to socket”——这个报错不代表 Web 坏了,代表它背后的服务没在跑。systemd 里服务被 mask(注销)后是起不来的,unmask 是解除注销的正解。

dpkg 为什么会“卡住”:配置是有序依赖链

apt 安装分两阶段:解包(unpack)和配置(configure)。openmediavault 依赖 nfs-kernel-server,而 nfs-kernel-server 的安装脚本要启动 nfs-server.service;这个服务起不来 → 脚本退出码 1 → dpkg 把 nfs-kernel-server 标成 “not configured yet” → 依赖它的 openmediavault 也只能 “leaving unconfigured”。一个包卡在未配置状态,整条依赖链都停在半安装,这就是那串报错的机制。

添加 OMV 软件源

切换到root账号

1
sudo su root

root 登录armbian,执行以下命令:

1
2
3
echo "deb http://packages.openmediavault.org/public arrakis main" > /etc/apt/sources.list.d/openmediavault.list  
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 7E7A6C592EF35D13 24863F0C716B980B
apt update

设置环境变量

1
2
3
export LANG=C
export DEBIAN_FRONTEND=noninteractive 
export APT_LISTCHANGES_FRONTEND=none

安装 OMV

1
2
apt install openmediavault-keyring postfix 
apt install openmediavault

初始化:快完成时有确认提示,如下:

确认后,omv-initsystem 进行初始化

安装完成后

输入 http://192.168.1.xx

打开登陆页面,默认账号密码如下,

账号:admin

密码:openmediavault

安装扩展插件

1
2
3
wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all4.deb
dpkg -i openmediavault-omvextrasorg_latest_all4.deb
apt-get update

遇到的问题

1
2
3
4
Errors were encountered while processing:
nfs-kernel-server
openmediavault
E: Sub-process /usr/bin/dpkg returned an error code (1)
1
apt-get install nfs-kernel-server

报错

1
2
package nfs-kernel-server is not configured yet.
No apport report written because the error message indicates its a followup error from a previous failure.

把上面的机制对上号:nfs-kernel-server 的安装脚本要拉起 nfs-server.service,这个服务起不来,脚本就以错误码 1 结束,dpkg 把它标记为“未配置”,依赖它的 openmediavault 只能停在半安装。排查入口是报错里让看的 journalctl -xe,先解决 nfs-server.service 为什么起不来,再让停住的配置链走完(dpkg --configure -a)。

完整报错:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  nfs-kernel-server
The following NEW packages will be installed:
  nfs-kernel-server openmediavault
0 upgraded, 2 newly installed, 0 to remove and 59 not upgraded.
Need to get 0 B/1,999 kB of archives.
After this operation, 12.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
Selecting previously unselected package nfs-kernel-server.
(Reading database ... 157667 files and directories currently installed.)
Preparing to unpack .../nfs-kernel-server_1%3a1.2.8-9ubuntu12.3_arm64.deb ...
Unpacking nfs-kernel-server (1:1.2.8-9ubuntu12.3) ...
Selecting previously unselected package openmediavault.
Preparing to unpack .../openmediavault_4.1.36-1_all.deb ...
Unpacking openmediavault (4.1.36-1) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for systemd (229-4ubuntu21.27) ...
Setting up nfs-kernel-server (1:1.2.8-9ubuntu12.3) ...
A dependency job for nfs-server.service failed. See 'journalctl -xe' for details.
nfs-server.service couldn't start.
A dependency job for nfs-server.service failed. See 'journalctl -xe' for details.
invoke-rc.d: initscript nfs-kernel-server, action "start" failed.
dpkg: error processing package nfs-kernel-server (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of openmediavault:
 openmediavault depends on nfs-kernel-server; however:
  Package nfs-kernel-server is not configured yet.

dpkg: error processing package openmediavault (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 nfs-kernel-server
 openmediavault
E: Sub-process /usr/bin/dpkg returned an error code (1)

OMV 报错

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
错误 #0:
OMV\Rpc\Exception: Failed to connect to socket: No such file or directory in /usr/share/php/openmediavault/rpc/rpc.inc:140
Stack trace:
#0 /var/www/openmediavault/rpc/session.inc(56): OMV\Rpc\Rpc::call('UserMgmt', 'authUser', Array, Array, 2, true)
#1 [internal function]: OMVRpcServiceSession->login(Array, Array)
#2 /usr/share/php/openmediavault/rpc/serviceabstract.inc(123): call_user_func_array(Array, Array)
#3 /usr/share/php/openmediavault/rpc/rpc.inc(86): OMV\Rpc\ServiceAbstract->callMethod('login', Array, Array)
#4 /usr/share/php/openmediavault/rpc/proxy/json.inc(97): OMV\Rpc\Rpc::call('Session', 'login', Array, Array, 3)
#5 /var/www/openmediavault/rpc.php(45): OMV\Rpc\Proxy\Json->handle()
#6 {main}

这个报错顺着上面的结构看就清楚了:Web 前端连不上引擎的 socket,说明 openmediavault-engined 没在跑。猜测是安装/初始化过程中服务被注销(mask)了——mask 之后 systemd 拒绝启动该服务,这不是配置写错,是服务被“锁死”。

取消注销(解除 mask):

1
2
sudo systemctl unmask openmediavault-engined.service
sudo reboot

重启之后就能进入界面了,登录也不再报 RPC 错误,但是会提示账号密码错误,用自己的密码和默认密码都进不去。原因不清楚,但是这就很简单了,直接重置账户密码就完事了。

1
omv-firstaid

选择第三项重置密码

踩坑记录与注意事项

  • armbian-config 装 OMV 自动退出:先怀疑交互式配置卡住(postfix 弹窗、locale 输出),手动装时按上文把 LANG / DEBIAN_FRONTEND 设好再装;
  • dpkg 报 “not configured yet”:这是依赖链上某个包的安装脚本失败的后遗症,不是这个包本身坏了;顺着报错找到真正失败的服务(journalctl -xe),修好后用 dpkg --configure -a 把停住的配置走完;
  • Web 报 Failed to connect to socket:引擎服务没在跑。先 systemctl status openmediavault-engined,被 mask 的用 systemctl unmask 解除,改完重启一次最干净;
  • 默认账号密码:admin / openmediavault,登不进别死磕,omv-firstaid 菜单里重置密码最快;
  • 软件源版本要配套:arrakis 源对应 OMV 4,系统换大版本后要换对应代号的 OMV 源,混着装必出依赖问题。