91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

保姆級(jí)教程!RK3588 Linux6.1?固件簽名完整實(shí)現(xiàn)方案(不含rootfs)

jf_44130326 ? 來源:Linux1024 ? 作者:Linux1024 ? 2026-01-14 17:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式Linux開發(fā)中,固件簽名是保障設(shè)備安全的關(guān)鍵環(huán)節(jié)——它能有效防止惡意固件篡改、非法刷入,從源頭筑牢設(shè)備的系統(tǒng)安全防線。最近在RK3588平臺(tái)(Linux6.1內(nèi)核)上實(shí)操固件簽名時(shí),踩了不少官方文檔的坑,經(jīng)過反復(fù)調(diào)試終于打通全流程。今天就把這份實(shí)戰(zhàn)經(jīng)驗(yàn)整理成保姆級(jí)教程,從配置到問題排查,一步步帶大家搞定RK3588的固件簽名!

一、核心原理速覽

固件簽名的核心邏輯是通過非對(duì)稱加密(RSA2048)驗(yàn)證固件完整性:

1.生成RSA密鑰對(duì)(私鑰用于簽名,公鑰用于驗(yàn)簽);

2.uboot、kernel打包生成的boot.img添加數(shù)字簽名;

3.設(shè)備啟動(dòng)時(shí),uboot通過內(nèi)置的公鑰驗(yàn)證boot.img簽名合法性,只有驗(yàn)證通過才會(huì)加載kernel

本次實(shí)操基于RK3588開發(fā)板+Linux6.1內(nèi)核+uboot官方源碼,全程圍繞「配置-密鑰-簽名-驗(yàn)證」四大環(huán)節(jié)展開。

二、前期準(zhǔn)備

1.已編譯完成的uboot源碼(rk3588_defconfig配置);

2.已編譯生成的kernel鏡像(boot.img);

3.RK官方工具鏈(含rk_sign_tool);

4.OpenSSL工具(用于生成自簽名證書);

5.開發(fā)環(huán)境:Ubuntu 20.04 LTS(其他Linux發(fā)行版同理)。

三、分步實(shí)操指南

第一步:uboot配置開啟簽名功能

首先需要在uboot中啟用FIT鏡像簽名支持,修改配置文件:

1.進(jìn)入uboot源碼根目錄,編輯配置文件:

vim u-boot/configs/rk3588_defconfig

2.在文件末尾添加以下兩行配置,開啟ubootSPL的簽名功能:

CONFIG_FIT_SIGNATURE=yCONFIG_SPL_FIT_SIGNATURE=y

3.保存退出后,重新編譯uboot確保配置生效(若已編譯過,可直接執(zhí)行后續(xù)步驟,簽名時(shí)會(huì)自動(dòng)應(yīng)用配置)。

第二步:生成RSA密鑰對(duì)與自簽名證書

這一步是坑最多的地方!官方文檔的指令存在路徑和文件名錯(cuò)誤,以下是驗(yàn)證通過的正確流程:

1.創(chuàng)建密鑰存儲(chǔ)目錄

uboot源碼根目錄下創(chuàng)建keys文件夾,用于存放密鑰和證書:

mkdir-pkeys

2.生成RSA2048密鑰對(duì)

使用RK官方工具rk_sign_tool生成私鑰(private_key.pem)和公鑰(public_key.pem),執(zhí)行命令:

../rkbin/tools/rk_sign_tool kk--bits2048--out.

?注意:rk_sign_tool的路徑需根據(jù)你的實(shí)際目錄調(diào)整(通常在rkbin/tools下);

?執(zhí)行成功后,會(huì)在uboot根目錄生成private_key.pem(私鑰)和public_key.pem(公鑰)。

3.建立密鑰軟鏈接(關(guān)鍵步驟)

官方文檔的鏈接指令會(huì)導(dǎo)致文件找不到,正確做法是進(jìn)入keys目錄建立軟鏈接,確保簽名工具能識(shí)別密鑰:

cdkeysln-s ../public_key.pem dev.pubkey # 公鑰鏈接ln-s ../private_key.pem dev.key  # 私鑰鏈接cd..

?為什么要做軟鏈接?因?yàn)楹灻ぞ吣J(rèn)讀取keys目錄下名為dev.key(私鑰)和dev.pubkey(公鑰)的文件,直接鏈接避免修改工具配置。

4.生成自簽名證書

使用OpenSSL生成x509格式自簽名證書(本質(zhì)等同于公鑰,用于設(shè)備端驗(yàn)簽):

openssl req -batch -new -x509 -key keys/dev.key -out keys/dev.crt

?參數(shù)說明:

?-batch:自動(dòng)填充信息,無需手動(dòng)輸入;

?-new -x509:生成自簽名證書;

?-key:指定私鑰路徑;

?-out:輸出證書路徑。

5.驗(yàn)證密鑰文件

執(zhí)行以下命令查看keys目錄下的文件,確保3個(gè)文件都存在:

lskeys/

正確輸出應(yīng)為:dev.key(私鑰鏈接)、dev.pubkey(公鑰鏈接)、dev.crt(自簽名證書)。

第三步:固件簽名與打包

1.準(zhǔn)備boot.img

kernel編譯生成的boot.img復(fù)制到uboot源碼根目錄(與keys文件夾同級(jí)):

cp/path/to/kernel/boot.img ./ # 替換為你的boot.img實(shí)際路徑

2.執(zhí)行簽名命令

uboot源碼根目錄下執(zhí)行簽名指令,支持兩種模式:

模式1:僅簽名(不燒錄公鑰到OTP

適合開發(fā)測試階段,無需修改設(shè)備OTP

./make.shrk3588--spl-new--boot_imgboot.img

模式2:簽名+燒錄公鑰哈希到OTP

./make.shrk3588--spl-new--boot_imgboot.img--burn-key-hash

適合量產(chǎn)階段,公鑰哈希寫入OTP后,設(shè)備僅認(rèn)可該密鑰簽名的固件:

3.驗(yàn)證簽名結(jié)果

簽名成功后,終端會(huì)輸出以下提示,同時(shí)生成已簽名的鏡像文件:

wKgZPGlnYO6ASk1hAADuFvjqTf8688.png

********sign_tool ver1.42********privatekeyiskeys/dev.keypublickeyiskeys/dev.pubkeyloading key ok.Image(signed,version=0):uboot.img(FITwithuboot,trust...)isreadyImage(signed,version=0):boot.img(FITwithkernel,fdt,resource...)isreadyImage(signed):rk3588_spl_Loader_v1.18.113.bin(withspl, ddr...)isready

?已簽名的boot.img會(huì)覆蓋原文件,無需手動(dòng)替換;

?若需保留原未簽名鏡像,建議先備份。

4.重新打包固件

最后執(zhí)行sdk根目錄的打包腳本,生成最終可燒錄的完整固件:

./build.sh updateimg

打包完成后,會(huì)在輸出目錄生成包含簽名信息的完整固件(如update.img)。

四、常見問題排查(避坑指南)

問題1:創(chuàng)建軟鏈接時(shí)提示「文件已存在」

?原因:之前執(zhí)行過錯(cuò)誤指令,殘留了無效鏈接;

?解決:刪除keys目錄下的殘留文件,重新創(chuàng)建鏈接:

rm-rf keys/* # 清空keys目錄cdkeysln-s ../public_key.pem dev.pubkeyln-s ../private_key.pem dev.keycd..

問題2:生成證書時(shí)提示「Can't open keys/dev.key for reading

?原因:軟鏈接路徑錯(cuò)誤,導(dǎo)致OpenSSL找不到私鑰;

?解決:必須在keys目錄下創(chuàng)建軟鏈接,且鏈接路徑為../private_key.pem(相對(duì)路徑不能錯(cuò))。

問題3:簽名后啟動(dòng)停留在loader階段,提示「Failed to verify required signature

?原因:uboot未加載公鑰,或簽名時(shí)使用的私鑰與驗(yàn)簽公鑰不匹配;

?解決:

a.確認(rèn)uboot配置中已開啟CONFIG_FIT_SIGNATURE=y;

b.重新生成密鑰對(duì)和證書,確保簽名時(shí)使用的是keys目錄下的dev.key;

c.燒錄已簽名的boot.img(而非未簽名的原文件)。

問題4:簽名工具提示「load key failed

?原因:密鑰文件名錯(cuò)誤(必須是dev.keydev.pubkey);

?解決:檢查keys目錄下的文件命名,確保軟鏈接名稱正確。

五、驗(yàn)證簽名有效性

1.將打包后的完整固件(update.img)通過RK燒錄工具燒錄到開發(fā)板;

2.開機(jī)查看串口日志,若出現(xiàn)以下信息,說明簽名驗(yàn)證通過:

conf:sha256,rsa2048:dev-ok.Verifysignature'key-dev'success

3.設(shè)備正常進(jìn)入kernel啟動(dòng)流程,最終進(jìn)入系統(tǒng),說明固件簽名生效!

wKgZPGlnYO6AICR3AANINWPrIlU790.png

六、總結(jié)

RK3588的固件簽名核心是「配置-密鑰-簽名」三步走,關(guān)鍵避坑點(diǎn)在于:

1.正確配置uboot的簽名開關(guān);

2.嚴(yán)格按照路徑和文件名生成密鑰與鏈接;

3.確保簽名后的boot.img被正確打包進(jìn)固件。

通過固件簽名,我們能有效防止惡意篡改固件導(dǎo)致的安全風(fēng)險(xiǎn),尤其適合量產(chǎn)階段的設(shè)備安全管控。如果在實(shí)操中遇到其他問題,歡迎在評(píng)論區(qū)留言交流~后續(xù)還會(huì)分享更多RK3588的實(shí)戰(zhàn)教程,記得點(diǎn)贊關(guān)注不迷路!

審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11763

    瀏覽量

    219091
  • RK3588
    +關(guān)注

    關(guān)注

    8

    文章

    556

    瀏覽量

    7347
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀 瑞芯微旗艦芯RK3588系列開發(fā)板受到廣大開發(fā)者伙伴的關(guān)注和問詢。針對(duì)相關(guān)的開發(fā)板功能、操作指南等問題,我們一
    的頭像 發(fā)表于 09-22 15:54 ?2.3w次閱讀
    瑞芯微<b class='flag-5'>RK3588</b>開發(fā)板<b class='flag-5'>RK3588</b> EVB和<b class='flag-5'>RK3588</b>S EVB解讀

    RK3588 Android+Linux雙系統(tǒng)方案實(shí)現(xiàn)

    linux和android分區(qū)表中需要用"_android"字段來區(qū)分。 硬件環(huán)境 基于RK3588 EVB1 開發(fā)板 實(shí)現(xiàn),系統(tǒng)切換按鍵是ESC 返回鍵 軟件環(huán)境 RK3588 An
    的頭像 發(fā)表于 10-10 14:25 ?1.2w次閱讀
    <b class='flag-5'>RK3588</b> Android+<b class='flag-5'>Linux</b>雙系統(tǒng)<b class='flag-5'>方案</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    求一種基于RK3588實(shí)現(xiàn)SPI-NOR大容量存儲(chǔ)方案

    1、基于RK3588S自研平板方案實(shí)現(xiàn)硬件存儲(chǔ)CPU: RK3588SDDR: LPDDR5 8GBNOR: SPI接口 32MB容量SSD: PCIE接口 256GB容量軟件版本要求
    發(fā)表于 05-23 14:20

    如何實(shí)現(xiàn)基于RK3588的Android系統(tǒng)與Linux系統(tǒng)切換呢

    linux和android分區(qū)表中需要用"_android"字段來區(qū)分。硬件環(huán)境基于RK3588 EVB1開發(fā)板實(shí)現(xiàn),系統(tǒng)切換按鍵是ESC 返回鍵軟件環(huán)境RK3588
    發(fā)表于 05-26 10:16

    TB-RK3588開發(fā)板debian11固件遠(yuǎn)程登錄調(diào)試

    開機(jī)登錄帳號(hào)Debian11默認(rèn)的登錄賬號(hào)是:toybrick,登錄密碼是:toybrick遠(yuǎn)程登錄調(diào)試TB-RK3588開發(fā)板出廠debian11固件默認(rèn)支持兩種遠(yuǎn)程登錄:adb和sshadb登錄
    發(fā)表于 06-17 15:54

    基于RK3588芯片方案開發(fā)ARM PC項(xiàng)目

    自己的ARM PC。RK3588雖然不是采用X1架構(gòu),但是其CPU性能和GPU性能已經(jīng)完全滿足PC的性能需求,并且SoC芯片有著天然的多功能、低功耗優(yōu)勢。在ARM PC市場,RK3588的產(chǎn)品解決方案有著
    發(fā)表于 07-27 16:05

    RK3588 SDK編譯與固件燒寫步驟

    ; make ARCH=arm64 rk3588sevb1-lp4x-v10.img -j24  單獨(dú)編譯uboot  $ 。/make.sh rk3588  2、固件燒寫  升級(jí)工具
    發(fā)表于 08-31 17:45

    RK3588 Android 12.0 SDK編譯步驟分享

    rk3588sevb1-lp4x-v10.img -j24單獨(dú)編譯uboot$ ./make.sh rk35882、固件燒寫升級(jí)工具版本:AndroidTool_Release_v2.84USB驅(qū)動(dòng)版本:Driver
    發(fā)表于 09-20 17:11

    【飛凌RK3588開發(fā)板試用】源碼編譯

    OK3588-linux-source.tar.bz2.a*拷貝到虛擬機(jī)~/rk3588 目錄??截愇募姆绞接泻芏?,筆者使用的是共享文件夾方式。3.解壓源碼$ cat
    發(fā)表于 03-28 22:32

    迅為RK3588核心板平臺(tái)新增工業(yè)級(jí)方案

    迅為RK3588核心板平臺(tái)新增工業(yè)級(jí)方案
    的頭像 發(fā)表于 04-18 15:34 ?3731次閱讀
    迅為<b class='flag-5'>RK3588</b>核心板平臺(tái)新增工業(yè)<b class='flag-5'>級(jí)</b><b class='flag-5'>方案</b>

    rk3588rk3588s的區(qū)別

    rk3588rk3588s的區(qū)別 Rockchip是一家專業(yè)的半導(dǎo)體公司,成立于2001年,總部位于中國深圳,主要從事集成電路的設(shè)計(jì)、開發(fā)和銷售。他們的熱門產(chǎn)品RK3588RK3588
    的頭像 發(fā)表于 08-15 16:44 ?2.1w次閱讀

    RK35883588s的區(qū)別

    RK35883588s的區(qū)別 Rockchip RK3588RK3588s是兩種功能強(qiáng)大且廣受歡迎的片上系統(tǒng)(SoC)解決方案,用于一系
    的頭像 發(fā)表于 08-15 17:03 ?2.9w次閱讀

    迅為RK3588Linux 系統(tǒng)中使用 NPU

    迅為RK3588Linux 系統(tǒng)中使用 NPU
    的頭像 發(fā)表于 09-08 14:14 ?2700次閱讀
    迅為<b class='flag-5'>RK3588</b>在 <b class='flag-5'>Linux</b> 系統(tǒng)中使用 NPU

    【技術(shù)分享】RK3588如何搭建xenomai3+ethercat

    說明使用的RK3588的分支版本是linux-6.1-stan-rkr6內(nèi)核版本是6.1.99把瑞芯微的SDK更新到linux-6.1-stan-rkr6這個(gè)版本即可。編譯xenomai3的內(nèi)核請(qǐng)參考上一篇技術(shù)分享:技術(shù)分享|
    的頭像 發(fā)表于 12-11 17:26 ?1061次閱讀
    【技術(shù)分享】<b class='flag-5'>RK3588</b>如何搭建xenomai3+ethercat

    實(shí)戰(zhàn)復(fù)盤:RK3588 SPI+PCIe3x4方案啟動(dòng)修復(fù),從節(jié)點(diǎn)配置到驅(qū)動(dòng)適配全解析

    ? ? ? 在 RK3588 嵌入式項(xiàng)目中, “ 接口配置不匹配 ” 是高頻踩坑點(diǎn) —— 近期 基于 linux6.1 內(nèi)核 調(diào)試 SPI 閃存 +PCIe3x4 外設(shè) 方案時(shí),就遇到了 “eMMC
    的頭像 發(fā)表于 01-08 10:24 ?401次閱讀
    實(shí)戰(zhàn)復(fù)盤:<b class='flag-5'>RK3588</b> SPI+PCIe3x4<b class='flag-5'>方案</b>啟動(dòng)修復(fù),從節(jié)點(diǎn)配置到驅(qū)動(dòng)適配全解析