齐物

Linux 人脸识别登录折腾记:Howdy + Arch Linux 实战

·4 分钟 ·1607 字 ·更新于 2026-07-27

我的笔记本是联想小新,在用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:

1
yay -S howdy

安装过程比较顺利,但依赖比较多,需要编译 python-dlib 等包,耗时较长。第一次安装被中断了,重新跑了一次才装好。

装完第一件事是录入人脸:

1
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 确认一下:

1
2
3
4
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 摄像头的路径:

1
sudo sed -i 's|device_path = none|device_path = /dev/video2|' /usr/lib/security/howdy/config.ini

改完重新 sudo howdy add,这次摄像头能打开了,但识别失败——IR 摄像头在 Linux 下似乎没有正常工作,拍出来的都是黑帧。

踩坑三:IR 摄像头的坑

试了各种方法激活 IR 摄像头:

1
2
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 摄像头:

1
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 为例:

1
sudo nano /etc/pam.d/sudo

auth include system-auth 这行之前加一行:

1
auth sufficient /usr/lib/security/pam_howdy.so

加完保存。关键点:sufficient 表示如果 Howdy 识别成功就直接放行,不再要求密码;如果识别失败,继续走后面的密码认证。这样既方便又安全。

同样,如果想让锁屏(GDM)也支持人脸识别,编辑 /etc/pam.d/gdm-password,同样加一行。

验证

配置完成后测试一下:

1
2
3
4
sudo howdy test
# 看看能不能识别
sudo ls
# 应该会先扫脸,识别成功直接放行

实测效果:RGB 摄像头识别速度还行,大概 1-2 秒内完成,和在Windows下几乎没有什么区别,唯一不太爽的是红外摄像头不能用。识别成功后 sudo 直接放行,认不出再输密码。

总结

折腾了一晚上,主要收获:

  1. Howdy 确实好用,Arch 系装完配置一下就能人脸识别认证
  2. IR 摄像头在 Linux 下是大坑,Lenovo 的 IR 灯在 Linux 下无法激活,只能用 RGB 摄像头凑合
  3. 配置文件路径要注意,Arch 系的 Howdy 配置在 /usr/lib/security/howdy/config.ini,不是 /etc/howdy/
  4. PAM 配置要手动改,Arch 系没有 pam-auth-update,需要编辑 /etc/pam.d/sudo

整体体验:虽然 IR 摄像头没能用上有点遗憾,但 RGB 摄像头的人脸识别已经够日常使用了。下次输入 sudo 密码时,对着摄像头看一眼就行——这种科技感确实让人上瘾。

评论