Linux系统启动时systemd-sysusers.service创建用户失败问题排查与NFS根文件系统修复指南


阅读 3 次

问题现象描述

在基于NFS挂载根文件系统(Debian 10)的电路板启动过程中,串口输出以下错误:

[FAILED] Failed to start Create System Users.
See 'systemctl status systemd-sysusers.service' for details.

该错误导致系统无法正常登录,且由于是唯一报错信息,无法通过命令行进一步诊断。

systemd-sysusers服务机制

Linux系统在启动过程中,systemd会通过systemd-sysusers.service服务创建基础系统用户和组。该服务主要处理以下文件:

  • /usr/lib/sysusers.d/*.conf - 软件包安装的默认配置
  • /etc/sysusers.d/*.conf - 系统管理员自定义配置
  • /etc/sysusers.conf - 主配置文件

NFS根文件系统特殊问题

当使用NFS作为根文件系统时,常见问题包括:

# 检查NFS挂载情况的示例命令
mount | grep nfs
df -h | grep nfs

可能导致用户创建失败的具体原因:

  1. NFS服务器权限配置不当
  2. /etc/passwd和/etc/shadow文件不可写
  3. 网络延迟导致服务超时
  4. SELinux或AppArmor安全策略限制

紧急修复方案

在没有控制台访问的情况下,可以尝试以下方法:

# 在NFS服务器上手动创建用户(示例)
echo "root:x:0:0:root:/root:/bin/bash" >> /nfsroot/etc/passwd
echo "root:*:18852:0:99999:7:::" >> /nfsroot/etc/shadow
chmod 644 /nfsroot/etc/passwd /nfsroot/etc/shadow

深度排查步骤

若需彻底解决问题,建议按以下流程排查:

# 1. 检查服务日志
journalctl -u systemd-sysusers.service

# 2. 验证文件系统权限
ls -ld /etc /etc/passwd /etc/shadow

# 3. 测试NFS写入能力
touch /etc/nfs_test && rm -f /etc/nfs_test

# 4. 检查服务依赖关系
systemctl list-dependencies systemd-sysusers.service

永久解决方案

修改NFS导出配置,确保具备写权限:

# /etc/exports 配置示例
/nfsroot 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

同时调整systemd服务超时设置:

# /etc/systemd/system/systemd-sysusers.service.d/timeout.conf
[Service]
TimeoutStartSec=300