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

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

一、核心原理速覽

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

1.生成RSA密鑰對(私鑰用于簽名,公鑰用于驗簽);

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

3.設備啟動時,uboot通過內置的公鑰驗證boot.img簽名合法性,只有驗證通過才會加載kernel。

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

二、前期準備

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ā)行版同理)。

三、分步實操指南

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

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

1.進入uboot源碼根目錄,編輯配置文件:

vim u-boot/configs/rk3588_defconfig

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

CONFIG_FIT_SIGNATURE=yCONFIG_SPL_FIT_SIGNATURE=y

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

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

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

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

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

mkdir-pkeys

2.生成RSA2048密鑰對

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

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

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

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

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

官方文檔的鏈接指令會導致文件找不到,正確做法是進入keys目錄建立軟鏈接,確保簽名工具能識別密鑰:

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

?為什么要做軟鏈接?因為簽名工具默認讀取keys目錄下名為dev.key(私鑰)和dev.pubkey(公鑰)的文件,直接鏈接避免修改工具配置。

4.生成自簽名證書

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

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

?參數(shù)說明:

?-batch:自動填充信息,無需手動輸入;

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

?-key:指定私鑰路徑;

?-out:輸出證書路徑。

5.驗證密鑰文件

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

lskeys/

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

第三步:固件簽名與打包

1.準備boot.img

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

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

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

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

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

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

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

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

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

適合量產階段,公鑰哈希寫入OTP后,設備僅認可該密鑰簽名的固件:

3.驗證簽名結果

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

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會覆蓋原文件,無需手動替換;

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

4.重新打包固件

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

./build.sh updateimg

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

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

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

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

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

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

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

?原因:軟鏈接路徑錯誤,導致OpenSSL找不到私鑰;

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

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

?原因:uboot未加載公鑰,或簽名時使用的私鑰與驗簽公鑰不匹配;

?解決:

a.確認uboot配置中已開啟CONFIG_FIT_SIGNATURE=y;

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

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

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

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

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

五、驗證簽名有效性

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

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

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

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

wKgZPGlnYO6AICR3AANINWPrIlU790.png

六、總結

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

1.正確配置uboot的簽名開關;

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

3.確保簽名后的boot.img被正確打包進固件。

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

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

    關注

    88

    文章

    11756

    瀏覽量

    218997
  • RK3588
    +關注

    關注

    8

    文章

    555

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀 瑞芯微旗艦芯RK3588系列開發(fā)板受到廣大開發(fā)者伙伴的關注和問詢。針對相關的開發(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)方案實現(xiàn)

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

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

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

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

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

    TB-RK3588開發(fā)板debian11固件遠程登錄調試

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

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

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

    RK3588 SDK編譯與固件燒寫步驟

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

    RK3588 Android 12.0 SDK編譯步驟分享

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

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

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

    迅為RK3588核心板平臺新增工業(yè)方案

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

    rk3588rk3588s的區(qū)別

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

    RK35883588s的區(qū)別

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

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

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

    【技術分享】RK3588如何搭建xenomai3+ethercat

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

    實戰(zhàn)復盤:RK3588 SPI+PCIe3x4方案啟動修復,從節(jié)點配置到驅動適配全解析

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