原文标题:《比特派「零基础编译开源的钱包固件」教程》
原文来源:bitpieteam
3 月 24 日,由比特派&BitHD 推出的「零基础编译开源的钱包固件」直播课程圆满结束,让小白用户亲身体验到了编译与验证开源的硬件钱包固件的整个过程。此次在线直播教程由 BitHD 品牌负责人果子主导,以下为本次直播的图文教程。
一、准备内容
*本教程基于 mac 系统运行,windows 系统用户可下载 linux 系统完成操作流程。
*在编译过程中,请不要随意关闭终端程序。
1,了解「终端」
本教程所有代码命令需在终端下执行,可在程序槽中直接打开,或搜索「终端」、「terminal」。
2,编译环境安装
2.a. 安装 Docker 环境
https://docs.docker.com/install/
2.b. 在终端中输入以下命令点击回车,安装 homebrew
ruby -e “(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
2.c. 在终端输入以下命令,通过 homebrew 安装 python3 和 pipenv
brew install python3 pipenv
二、获取 BITHD 固件开源代码
1,在桌面新建文件夹,并命名为「BITHD」
2,打开终端,输入以下命令,进入文件夹目录
cd ./Desktop/BITHD/
3,在终端继续输入以下命令,在 GitHub 上获取开源代码
git clone https://github.com/bithd/bithd-mcu.git
4,获取成功后,BITHD 文件内会生成 BITHD-mcu 文件夹
该文件夹即是 GitHub 上开源的 BITHD 固件代码,之后的编译操作会在该文件目录下执行。
三、编译
*该步骤对电脑性能要求较高,部分步骤会耗时较久,在终端未完成操作前,请不要关闭终端,耐心等待终端完成编译。
1,在终端输入以下命令,进入固件代码根目录
cd bithd-mcu
2,在终端输入以下命令,编译对应版本号固件
*该步骤耗时较久,请耐心等待编译完成
export TAG=v2.7.4; ./build-firmware.sh TAG
编译完成后,在 BITHD/BITHD-mcu/build 文件夹内,会生成编译好的固件文件,此时已经完成了对 GitHub 开源代码的编译步骤。
四、对编译好的固件进行签名
1,在终端输入以下命令,安装指定的 python 环境
pipenv –python 3 install
2,在终端输入以下命令,生成准备签名的 bin 文件
pipenv run ./script/prepare_firmware.py -f ./build/bithd-TAG-unsigned.bin
该步骤会在 BITHD/BITHD-mcu/build 文件夹内,生成注入空签名信息的文件 bithd-v2.7.4-prepared.bin
3,在终端输入以下命令,使用 BITHD 官方提供的签名文件对该文件进行签名
*签名所需的签名文件保存在 BITHD/BITHD-mcu/signatures 文件夹内
export TAG=v2.7.4
pipenv run ./script/build_signed_firmware.py -f ./build/bithd-TAG-prepared.bin -s . signatures/TAG.csv
签名完成后,会在 BITHD/BITHD-mcu/build 文件夹内,生成 bithd-v2.7.4-signed 文件。该文件即是我们在 GitHub 上获取到的源码通过编译生成,并且使用 BITHD 官方提供的签名文件进行签名的固件文件。
至此,我们已经完成了从 GitHub 上获取源码,到编译源码生成固件包,并对固件包进行签名的步骤。接下来我们将进行固件包的验证步骤。
四、验证固件
1,链接 BITHD,在 Bitpie 中导出最新的固件更新包。该导出操作只会导出固件文件,跟资产信息没有任何关系。
2,通过对比文件,验证设备中的固件与 GitHub 开源固件代码是否一致
在终端输入以下命令,输出对比结果
export TAG=v2.7.4
diff <(xxd build/bithd-TAG-prepared.bin) <(xxd build/bithd-TAG-firmware.bin)
*注意:请将导出的固件文件放到 BITHD/BITHD-mcu/build 文件夹内,并修改导出的固件名称与命令中示例名称相同。例如:从安卓设备中导出的固件名称为 bithd-wallet-firmware,我们需要将其重命名为 bithd-v2.7.4-firmware,放入 build 文件夹内,否则命令执行将会出现错误。
从对比结果中我们可以看到,我们自己编译并且注入空签名数据的固件和我们从设备中导出的固件,只有前 256 位签名信息的不同,除了签名信息以外所有的代码都完全相同。也证明了我们在设备中使用的固件代码与 GitHub 上开源的固件代码是完全相同的。
3,通过计算哈希值,验证设备中的固件与 GitHub 开源固件代码是否一致
3.a 在终端输入以下命令,计算我们在设备中导出的固件哈希值
shasum -a 256 ./build/bithd-TAG-firmware.bin
3.b 对比 GitHub 上提供的固件代码哈希
GitHud 地址:
https://github.com/bithd/bithd-mcu/releases
可以发现我们从设备中导出的固件代码哈希与 GitHub 上提供的固件哈希是完全相同的,也就是说,他们的代码也完全一致,没有任何一个包括空格在内的差异。
* Window 虚拟机安装教程:(附下载链接):
https://zhuanlan.zhihu.com/p/38797088
来源链接:https://mp.weixin.qq.com/s/OInaCapmLqH48mA3JKg-YA
区块律动 BlockBeats 提醒,根据银保监会等五部门于 2018 年 8 月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件,请广大公众理性看待区块链,不要盲目相信天花乱坠的承诺,树立正确的货币观念和投资理念,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。
比特派 钱包 硬核 高级科普文,更专业