BusyBox登录小程序返回“login: /etc/passwd: bad record”问题求助
解决BusyBox login报错“/etc/passwd: bad record”的方案
核心原因
BusyBox的login程序对/etc/passwd格式要求严格,必须完全遵循POSIX标准的冒号分隔结构,字段缺失、格式错误都会触发该报错。
修复步骤
1. 重新挂载根文件系统并编辑配置文件
用rdinit=/bin/sh参数启动内核,进入shell后确保根文件系统可写(只读挂载时执行mount -o remount,rw /),然后编辑以下文件:
修复/etc/passwd
每个用户条目必须是7个冒号分隔的字段,格式为:用户名:密码占位符:UID:GID:用户描述:主目录:登录shell
root用户的标准条目示例:
root:x:0:0:root:/root:/bin/sh
- 密码占位符用
x(表示密码存储在/etc/shadow),不能留空 - UID/GID必须是数字(root的UID/GID固定为0)
- 主目录即使未创建也要填写(比如
/root) - 登录shell必须指向BusyBox的
sh路径(通常是/bin/sh)
修复/etc/shadow
格式为9个冒号分隔的字段,示例root条目(空密码,方便测试):
root::0:0:99999:7:::
如果需要设置密码,在BusyBox shell中执行passwd root,程序会自动生成加密密码并更新/etc/shadow。
修复/etc/group
格式为4个冒号分隔的字段,root组的标准条目:
root:x:0:root
2. 设置正确的文件权限
执行以下命令修正权限:
chmod 644 /etc/passwd chmod 600 /etc/shadow chmod 644 /etc/group
权限错误会导致login程序无法读取或验证配置。
3. 测试登录
重启内核,使用console=ttyO0,115200 rdinit=/sbin/init参数启动,输入root用户名,按回车(空密码情况下)即可正常登录。
内容的提问来源于stack exchange,提问作者ali tavakoli
相关产品推荐
相关产品推荐

