我的笔记本是联想小新,在用Windows的时候,是可以通过摄像头的认证登录,省事了不少,前几天把亮度随着环境的亮度而适应这方面弄好了。这又想着能不能像 Windows Hello 那样刷脸登录。搜了一圈,发现 Howdy 这个开源项目正是干这个的——号称"Linux 版 Windows Hello"。折腾了一晚上,踩了不少坑,把过程记录下来。
选型:Howdy 是什么
Howdy 是一个 Linux 下的人脸识别认证工具,通过摄像头(最好是 IR 红外摄像头)捕捉面部特征,然后集成到 PAM 认证框架里。换句话说,它能让 sudo、锁屏、登录界面都支持"刷脸"。
AUR 上有三个版本可选:howdy(稳定版 2.6.1)、howdy-next(C++ 重写版 3.3.1,更新更快)、howdy-git(最新开发版)。我先装了稳定版,后来因为摄像头兼容性问题换成了 howdy-next。
安装过程
Arch 系安装直接走 yay:
| |
安装过程比较顺利,但依赖比较多,需要编译 python-dlib 等包,耗时较长。第一次安装被中断了,重新跑了一次才装好。
装完第一件事是录入人脸:
| |
结果直接报错:Camera path is not configured correctly, please edit the 'device_path' config value.
踩坑一:配置文件在哪
Howdy 的配置文件不在 /etc/howdy/config.ini,而是在 /usr/lib/security/howdy/config.ini。这个路径需要 root 权限才能查看和编辑,普通用户连 cat 都看不了。
打开配置文件,找到 [video] 段,发现 device_path = none——默认没有设置摄像头路径。
踩坑二:确认哪个是 IR 摄像头
我的 Lenovo 82NC 笔记本有两个摄像头:一个是 RGB 摄像头(MJPG 格式,1280×720),一个是 IR 红外摄像头(GREY 格式,640×360)。用 v4l2-ctl 确认一下:
| |
输出结果显示:/dev/video0 是 RGB 摄像头,/dev/video2 是 IR 红外摄像头。把配置改成 IR 摄像头的路径:
| |
改完重新 sudo howdy add,这次摄像头能打开了,但识别失败——IR 摄像头在 Linux 下似乎没有正常工作,拍出来的都是黑帧。
踩坑三:IR 摄像头的坑
试了各种方法激活 IR 摄像头:
| |
都没有效果。Linux 下的 IR 摄像头驱动支持确实不如 Windows,很多笔记本的红外灯需要通过厂商专有驱动才能激活,而这些驱动通常只在 Windows 下有。
最后的解决方案:改用 RGB 摄像头:
| |
用 RGB 摄像头也能识别,只是不如 IR 摄像头精准(没有结构光辅助),但日常使用够了。
配置 PAM:让 sudo 支持人脸识别
Howdy 安装好、人脸录入好之后,还需要配置 PAM(Pluggable Authentication Modules)让系统在认证时调用 Howdy。
Arch 系不像 Debian/Ubuntu 那样有 pam-auth-update 命令,需要手动编辑 PAM 配置文件。以 sudo 为例:
| |
在 auth include system-auth 这行之前加一行:
| |
加完保存。关键点:sufficient 表示如果 Howdy 识别成功就直接放行,不再要求密码;如果识别失败,继续走后面的密码认证。这样既方便又安全。
同样,如果想让锁屏(GDM)也支持人脸识别,编辑 /etc/pam.d/gdm-password,同样加一行。
验证
配置完成后测试一下:
| |
实测效果:RGB 摄像头识别速度还行,大概 1-2 秒内完成,和在Windows下几乎没有什么区别,唯一不太爽的是红外摄像头不能用。识别成功后 sudo 直接放行,认不出再输密码。
总结
折腾了一晚上,主要收获:
- Howdy 确实好用,Arch 系装完配置一下就能人脸识别认证
- IR 摄像头在 Linux 下是大坑,Lenovo 的 IR 灯在 Linux 下无法激活,只能用 RGB 摄像头凑合
- 配置文件路径要注意,Arch 系的 Howdy 配置在
/usr/lib/security/howdy/config.ini,不是/etc/howdy/ - PAM 配置要手动改,Arch 系没有
pam-auth-update,需要编辑/etc/pam.d/sudo
整体体验:虽然 IR 摄像头没能用上有点遗憾,但 RGB 摄像头的人脸识别已经够日常使用了。下次输入 sudo 密码时,对着摄像头看一眼就行——这种科技感确实让人上瘾。
评论