Debian系统启动时rpcbind服务报错”无法读取xdr文件”的解决方法


阅读 8 次

问题现象

在Debian测试版系统中,系统启动时会在/var/log/boot日志中记录以下错误信息:

Starting rpcbind daemon...rpcbind:
Cannot open '/var/run/rpcbind/rpcbind.xdr' file for reading, errno 2 (No such file or directory)  
rpcbind: Cannot open '/var/run/rpcbind/portmap.xdr' file for reading, errno 2 (No such file or directory)

错误分析

这个错误表明rpcbind服务在启动时尝试读取两个XDR(外部数据表示)格式的配置文件,但系统找不到这些文件。虽然服务最终能正常启动,但这些警告信息会影响系统日志的整洁性。

根本原因

在较新版本的Debian中,rpcbind的默认配置发生了变化:

  • 新版本不再使用.xdr文件格式的配置文件
  • 但服务启动脚本仍会尝试加载这些旧格式文件
  • 系统升级时可能保留了旧的配置引用

解决方案

以下是几种可行的解决方法:

方法1:创建空文件占位

最简单的临时解决方案是创建空文件:

sudo mkdir -p /var/run/rpcbind
sudo touch /var/run/rpcbind/{rpcbind,portmap}.xdr
sudo chown rpc:rpc /var/run/rpcbind/*.xdr

方法2:修改服务配置

编辑rpcbind的systemd服务单元文件:

sudo systemctl edit rpcbind.service

添加以下内容:

[Service]
ExecStartPre=/bin/rm -f /var/run/rpcbind/*.xdr

方法3:完全禁用xdr检查

修改rpcbind的启动参数:

sudo vim /etc/default/rpcbind

添加或修改以下行:

RPCBIND_OPTIONS="-f -w"

验证修复

应用修改后,重启服务并检查日志:

sudo systemctl restart rpcbind
journalctl -u rpcbind --no-pager -n 20

注意事项

  • 如果系统不需要NFS相关功能,可以考虑完全禁用rpcbind
  • 在生产环境中建议使用方法2或方法3
  • 升级系统时注意检查配置文件的兼容性