- 楼主博主
我的笔记本是联想小新,在用 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:
yay -S howdy安装过程比较顺利,但依赖比较多,需要编译 python-dlib 等包,耗时较长。第一次安装被中断了,重新跑了一次才装好。
装完第一件事是录入人脸:
sudo howdy add结果直接报错:
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 确认一下:
for dev in /dev/video{0,1,2,3}; do echo "=== $dev ===" v4l2-ctl --device=$dev --list-formats-ext 2>/dev/null | head -5 done输出结果显示:
/dev/video0是 RGB 摄像头,/dev/video2是 IR 红外摄像头。把配置改成 IR 摄像头的路径:sudo sed -i 's|device_path = none|device_path = /dev/video2|' /usr/lib/security/howdy/config.ini改完重新
sudo howdy add,这次摄像头能打开了,但识别失败——IR 摄像头在 Linux 下似乎没有正常工作,拍出来的都是黑帧。踩坑三:IR 摄像头的坑
试了各种方法激活 IR 摄像头:
sudo v4l2-ctl --device=/dev/video2 --set-ctrl=exposure_auto=1 sudo v4l2-ctl --device=/dev/video2 --set-ctrl=focus_auto=1都没有效果。Linux 下的 IR 摄像头驱动支持确实不如 Windows,很多笔记本的红外灯需要通过厂商专有驱动才能激活,而这些驱动通常只在 Windows 下有。
最后的解决方案:改用 RGB 摄像头:
sudo sed -i 's|device_path = /dev/video2|device_path = /dev/video0|' /usr/lib/security/howdy/config.ini用 RGB 摄像头也能识别,只是不如 IR 摄像头精准(没有结构光辅助),但日常使用够了。
配置 PAM:让 sudo 支持人脸识别
Howdy 安装好、人脸录入好之后,还需要配置 PAM(Pluggable Authentication Modules)让系统在认证时调用 Howdy。
Arch 系不像 Debian/Ubuntu 那样有
pam-auth-update命令,需要手动编辑 PAM 配置文件。以 sudo 为例:sudo nano /etc/pam.d/sudo在
auth include system-auth这行之前加一行:auth sufficient /usr/lib/security/pam_howdy.so加完保存。关键点:
sufficient表示如果 Howdy 识别成功就直接放行,不再要求密码;如果识别失败,继续走后面的密码认证。这样既方便又安全。同样,如果想让锁屏(GDM)也支持人脸识别,编辑
/etc/pam.d/gdm-password,同样加一行。验证
配置完成后测试一下:
sudo howdy test # 看看能不能识别 sudo ls # 应该会先扫脸,识别成功直接放行实测效果: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 摄像头的人脸识别已经够日常使用了。
收藏 1支持反对打赏个性签名
顶一个
跟着学一下
帮忙顶一下
个性签名搏一搏,单车变摩托,赌一赌,摩托变路虎。不怕输的苦,就怕断了赌。小赌养家糊口,大赌发家致富!
看看大佬
个性签名若要人不知,唔好太低 B!
这坑够深
这方案挺酷
个性签名我是joker,你好
折腾得值