前言 Link to heading
最近想要买一个实体物理密钥,关注到了Yubikey,发现已经贵的离谱了(参考它之前促销的价格),而且中国大陆地区还无法直接收到(即使海外,也要10美金),转运+运费+售价,已经是天价了,国内淘宝平台卖的更贵。
所以就在Google上搜索有没有平替。就搜索到了这篇文章 但由于过了一年多,项目发生了一些变化。原项目因为作者想要商业化圈钱,故发售了许可证,30欧元/设备,这个价格和去购买成品Yubikey几乎没有什么区别了。甚至这只是一个许可证。
如果想要实现fido2+openpgp的,原作者支持此功能的的pico-fido2不提供代码并且需要付费licence,但是开源社区有一个亲测可用的Fork,因此本教程都是基于此Fork所进行。
硬件选择 Link to heading
在2026年的今天,目前有且仅有推荐RP2350
准备工作 Link to heading
- 硬件:RP2350 树莓派开发版
- 系统:最好使用Windows 11/Linux
- 网络:能够正常访问 GitHub。
第一阶段:安装与配置 WSL (Windows 本地 Linux 子系统) 若使用Linux跳转至此 Link to heading
由于嵌入式编译在 Linux 环境下最为稳定和友好,我们将使用微软官方的 WSL 工具,在 Windows 中直接无缝运行一个 Ubuntu Linux 系统。
- 右键点击 Windows 的“开始”按钮,选择 Windows PowerShell (管理员) 或 终端 (管理员)。
- 在弹出的蓝色或黑色窗口中,输入以下命令并回车:
1wsl --install - 系统会自动下载并安装 WSL 核心组件以及默认的 Ubuntu 发行版。
- 安装完成后,重启你的电脑。
- 重启后,系统通常会自动弹出一个名为 “Ubuntu” 的命令行窗口。如果没有自动弹出,请在 Windows 开始菜单中搜索 “Ubuntu” 并打开它。
- 首次启动需要等待一两分钟解压文件。
- 随后,系统会提示你创建一个 Linux 用户名 (Enter new UNIX username) 和密码 (New password)。
- 看到绿色的命令提示符(例如
username@hostname:~$),说明你的 Linux 环境已经搭建完毕
第二阶段:搭建底层编译环境 Link to heading
接下来的所有命令,都请在刚刚打开的 Ubuntu 终端 中执行。我们将安装交叉编译工具链和官方开发包。
1. 安装基础编译工具 Link to heading
先更新系统缓存,然后安装必需的编译器和构建工具:
|
|
2. 获取树莓派官方 Pico SDK Link to heading
Pico SDK 包含了操作底层硬件的必须代码。
|
|
3. 配置永久环境变量 Link to heading
CMake 需要知道你的 SDK 放在了哪里。我们将路径永久写入配置文件:
|
|
第三阶段:获取源码与编译固件 Link to heading
环境搭建完毕后,就可以开始获取 FIDO2 的核心代码并进行编译了。
1. 克隆 FIDO2 项目源码 Link to heading
这里我们使用Fork了付费以前仓库的 librekeys 分支。
|
|
2. 执行 CMake 配置 (针对 Pico 2 优化) Link to heading
为了保持代码目录整洁,我们需要创建一个独立的 build 文件夹,并显式声明 Pico 2 的硬件架构。
|
|
3. 开始多线程编译 Link to heading
调用电脑的所有 CPU 核心火力全开,加速编译过程:
|
|
耐心等待终端进度条跑到 [100%] Built target。编译成功后,当前的 build 目录下会生成一个名为 pico_fido2.uf2 的固件文件。
第四阶段:提取与烧录 Link to heading
固件现在躺在 Linux 虚拟机里,我们需要用一键命令把它调出来,并刷入 Pico 2。
1. 从 WSL 提取固件 Link to heading
在刚才完成编译的 build 目录路径下,输入以下命令:
|
|
(注意:explorer.exe 和 . 之间有一个空格)
此时 Windows 系统会自动弹出一个文件资源管理器窗口,里面正是 WSL 的 build 文件夹。找到 pico_fido2.uf2 文件并将其拖到你的 Windows 桌面上备用。
刷入教程,尽请期待