我今天使用 复制我的根文件系统到另一个分区cp -r --preserve=all
,因为我想有一个备份,以防我的主系统出现问题。我使用的是 Parabola,它是 Arch Linux 的一个 libre 变体。我只有一个/home
分区,两个系统将共享该分区。复制系统(使用实时 USB)后,我使用 pacman 进行了完整的系统升级(它已经过时了)。当我尝试登录新系统时,一切似乎都正常,并且启动到 DM 登录屏幕;但是,我的用户密码不起作用。因此,我切换到虚拟终端并尝试以 root 身份登录,但这也不起作用。
所以,我回到实时 USB;chroot
进入新克隆的根分区并刷新所有密码(使用passwd
),包括 root。然后我重新启动,但发生了完全相同的事情 - 我仍然无法登录到我的用户帐户或以 root 身份登录。
我在这里错过了什么吗?
编辑:
为了澄清,我没有“克隆”分区,我已将根文件系统(使用cp
)复制到我用 gparted 创建的新分区(我将更改问题标题以澄清)。因此,新分区具有与父分区不同的 UUID。grub.cfg
因此,我必须进行一些手动调整/etc/fstab
,才能启动重复的系统。密码系统是否与分区 UUID 相关联?这可能是问题的原因吗?
另外,我想补充一点,当我运行passwd
chroot 时,它给了我一条消息,说密码已成功更新(尽管之后仍然没有密码工作)。
答案1
即使在更新密码后仍无法登录,这似乎表明存在根本性错误。
我建议回到实时 USB 和 chroot,然后尝试su
(作为 root 和非 root)和/bin/login
(作为 root)。如果您获得正确的密码,他们可能会给您错误消息。
我还会检查/etc/nsswitch.conf
和的内容/etc/pam.d/
。
我还会尝试删除密码(清空 中的第二个字段/etc/shadow
),看看是否可以这样做。 (一旦解决了总体问题,您应该为该用户分配一个新密码。)
/var/log/auth.log
此外, (或该目录中的其他文件)中可能存在值得阅读的错误消息。
答案2
我想我找到了问题所在。我检查了/var/log/pacman.log
我执行的系统更新的详细信息。那里有一个警告,表明该文件/etc/pam.d/system-login
已另存为/etc/pam.d/system-login.pacnew
.我想我之前已经手动编辑过该文件来解决另一个问题,所以它可能识别出该文件已被修改,因此在更新期间没有覆盖它。 pam 可能已更改其处理登录的方式,因此它不适用于旧文件。
无论如何,登录现在又可以正常工作了。也许我的错误也是从 chroot 运行系统更新。我可能应该在复制后登录到重复的系统并从那里运行更新。