ThinkPad X1 Carbon 2017 的指纹硬件 ID 是 138a:0097,很遗憾,Linux 下的官方指纹管理模块是不支持这玩意的,网络上有很多大神在进行逆向工程,让这个模块在 Linux 下可用,但是折腾了那么久,感觉还是比较尴尬。

曾经有一个方案,是 Patch 掉 libfprint,不过那个方案也就工作了大概半年,很快 libprint 就发布了 2.0 版本,原本的 Patch 也就嗝儿屁了。

不过最近有人使用了新的方法解决了这个问题,直接用 Python 写了个指纹管理和驱动,替代掉原本的傻逼 libprint,于是就可以工作了,感谢 uunicorn 以及 Marco 等幕后人员的工作。

photo_2020-09-03_17-12-20.jpg

$ sudo apt remove fprintd
$ sudo add-apt-repository ppa:uunicorn/open-fprintd
$ sudo apt-get update
$ sudo apt install open-fprintd fprintd-clients python3-validity
$ fprintd-enroll

删掉原本的 fprintd 然后安装新的 open-fprint,替换掉后端管理,并且自己录制指纹,就完成了。

如果你的指纹识别机器里曾经录入过指纹,那么启动可能报错,需要重置一下:

$ sudo systemctl stop python3-validity
$ sudo validity-sensors-firmware
$ sudo python3 /usr/share/python-validity/playground/factory-reset.py
$ sudo systemctl start python3-validity
$ fprintd-enroll

最后在 pam 里启用指纹登陆与解锁:

sudo pam-auth-update

用空格勾选指纹即可。

现在你已经可以使用指纹来解锁和登陆笔记本了。

当然这么做有个问题,你可能发现这个指纹甚至会被强制用在 sudo 等命令里,这显得很蠢,所以我们可以修改一下相关的策略:

修改文件:

sudo vim /etc/pam.d/sudo

增加

auth            sufficient      pam_unix.so try_first_pass likeauth nullok

然后基本上只会在解锁电脑的时候使用指纹了,之前的扫脸也是如此。


链接:

https://github.com/uunicorn/python-validity

https://gitter.im/Validity90/Lobby