技术解析
注意:用fprintd
验证时,需要将右手食指划第一节慢慢滑过 sensor ( 2 秒左右) 5 次。
## Archlinux extra 源里 libfprint 的版本还不支持 Elan。
## 需要到 github 下载最新源代码支持了小米 pro 的
## 04f3:0c1a 的 Elan Microeletronics 指纹识别器。
$ git clone https://github.com/iafilatov/libfprint
$ cd libfprint
$ ./autogen.sh
$ ./autoconfigure
$ make && sudo make install
$ sudo ln -s /usr/local/lib/libfprint.so.0 /usr/lib
## 不安装 libfprint 依赖
$ sudo pacman -Sdd fprintd
## 确认 fprintd.service 正常运行,如果 failed,
## 用`systemctl status fprintd`查看问题
$ systemctl | grep fprinted.service
## 修改登录验证机制,如果顺序是 fprintd 在前,则登录时先用 finger 验证
$ sudo vim /etc/pam.d/system-local-login
auth sufficient pam_fprintd.so
auth include system-login
## 建立指纹并验证
$ fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-stage-passed
Enroll result: enroll-completed
## 验证过程,看到 veryify-match 即表示验证通过
$ fprintd-verify
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
- #0: right-index-finger
Verify result: verify-match (done)
## 重启,由于我没有用 Display manager,用 xinit startx 来启动 i3,
## 所以 console 界面输入用户名后就会提示“滑动手指验证指纹登录”
$ reboot
## i3lock 指纹解锁有一个问题在于需要输错 1 次密码后才能正常指纹解锁。
## 可能需要 xss-lock 等其他方法解决
$ sudo pacman -S i3lock
$ sudo vim /etc/pam.d/i3lock
auth include login
## 总结:
## 小米的 Elan 指纹识别器面积太小,导致 libfprint 需要滑动才能识别,
## 另外感觉指纹识别速度不是特别敏锐,扫完指纹需要 0.5s 左右才能解锁。
## 总体上来说,可用性不是太高。个人感觉不如摄像头人脸识别可用性更高...