“医生,我还有救吗?” - 修复误删audit导致的PAM认证出错

哎你怎么死了

清空小金库拥有了一直眼馋的51nb x62,作subnote之用。在朋友的安利下安装了AOSC。
x62能够使用x6* 原配的滑动式指纹识别器,生物识别对于把密码长度设置成十个以上混合字符的我是必要的,但是前阵子太忙(忙着摸鱼),并没有折腾。
2024年11月25日,这是一个月黑风高的晚上,我装起了fprintd, 试图启用指纹认证。但也许是和aosc采用的最新kernel中的某些东西打架,只能录入指纹而不能进行认证。这是因为无法使用pam-auth-update

  • 非常邪门的,无论是用包管理工具还是手动安装,都装不上这玩意,也许还是各种依赖项可乐曼妥思了。
  • 遂尝试手动更改配置文件,依旧不行。

以上内容对于本篇blog并不重要,直接促成了这个网页中的文字垃圾的事件是:万策尽的本epic big brain开始手动编译一些工具。在这个过程中反手

1
sudo oma remove audit

当场头部以下截肢了。

尸检报告

可喜可贺,可喜可贺。现在我们只要涉及到用户认证相关操作,就会得到PAM 认证出错:模块未知.所以很显然此时:

  • 无法使用任何需要管理员权限的功能,su不了do了。
  • 当然也无法登录系统

所以这位icu中的病人自然只要关机就会断气
然后我关机了。

  • 啊啊,只能说依我看这时候就算不关机也没什么办法,不能通过任何方式安装软件包,oma undo这种防呆机制也没用,rollback也还是要安装的啊

(心肺苏生法)

亘古不变的真理就是缺啥补啥。所以让我们来重新安装 PAM 和 SUDO 相关的包。
经过一番冲浪,参考过网友的使用双系统的补救方法 后,遂采用相近思路:

挂载系统盘

  • 创建一个AOSC安装介质插上,u盘启动,然后选择急救
  • 进入 LiveKit,打开终端
  • lsblk 找到硬盘中系统的根分区(/dev/sda1 或类似,这里就以这个为例)
  • 挂载系统盘根分区/mnt
    1
    sudo mount /dev/sda1 /mnt

把我们接下来在/mnt下操作时要访问的、当前救援环境里的东西挂载入虚拟文件系统。

  • 现在livekit的 /dev/proc 和 /sys 目录被绑定到 /mnt 目录下对应的子目录
    1
    2
    3
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys

进入 chroot 环境, 把我们挂载为/mnt的分区映射为虚拟环境的根分区/

1
sudo chroot /mnt

重装

好了,现在我们可以在被隔离出来的chroot环境里重新安装 PAM 和 SUDO了

  • 先联网
  • 肌肉记忆之更新包索引, 不知为何我没能成功更新,也许是网络抽风了
    1
    apt update
    重装
    1
    apt install --reinstall libpam0g sudo

最后退出chroot,解除挂载,重启

1
2
3
4
5
6
exit
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
sudo reboot

嗯…活了。

依旧存在的问题

现在这套系统基本运行良好,但是还有两个问题亟待解决:

  1. ax210网卡睡眠唤醒后必死,只能用蓝牙而wifi不工作。该问题几天前已报告
  2. 指纹还是用不了,bruh

(完)

references

  1. https://bbs.deepin.org/en/post/223374

“医生,我还有救吗?” - 修复误删audit导致的PAM认证出错
http://example.com/2024/11/26/“医生,我还有救吗?” - 修复误删audit导致的PAM认证出错/
作者
TVEM
发布于
2024年11月26日
许可协议