问题现象
在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
- 升级系统时注意检查配置文件的兼容性