直接修改zynq petalinux編譯出來的rootfs.cpio.gz文件內容

? ? xilinx zynq petalinux 默認編譯打包出的SPI flash燒寫啟動文件是BOOT.BIN,然而每次需要修改rootfs內的文件時都要重新build rootfs 然后再 package一次才能生成新的BOOT.bin文件,地球人都知道petalinux編譯一次是很耗時間的,那么有沒有什么簡單的辦法能修改rootfs呢?

為了達到這么個目的,我花點時間研究了一下petalinux編譯打包過程,執行build命令后最終會生成linux內核,rootfs,dtb,u-boot,fsbl,fpga.bit這些最終文件,然后package時將這些文件一起打包成BOOT.bin才可以燒寫spi flash,其中kernel,rootfs,dtb會被預先打包成image.ub文件才會參與到package過程,如果要修改rootfs,可以把image.ub文件解包出rootfs,修改其中的內容,再重新打包成新的rootfs,就可以了,下面過程是經過多次嘗試后總結出的步驟,以供參考

首先需要準備 image.ub文件,這個文件在編譯完成后自動生成,petalinux2019.2中這個文件在xxxx/images/linux目錄下,使用dumpimage命令拆包,如下面的樣子,可以解出kernel,設備樹文件和rootfs。

dumpimage -i image.ub -T flat_dt ?-p 0 kernel.bin
dumpimage -i image.ub -T flat_dt ?-p 1 devicetree.dtb
dumpimage -i image.ub -T flat_dt ?-p 2 rootfs.cpio.gz

第二步,對rootfs解壓出原始文件

mkdir ramdisk_unzip
gunzip -c rootfs.cpio.gz | sh -c 'cd ramdisk_unzip/ && cpio -i'

經過上面兩步驟后就可以在ramdisk_unzip文件夾下看到原始的rootfs目錄結構,這個時候就可以對rootfs隨意修改了

第三部,修改完成后重新對rootfs再打包成rootfs.cpio.gz,使用如下命令進行打包

sh -c 'cd ramdisk_unzip/ && find . | cpio -H newc -o' | gzip -9 > repack_ramdisk.cpio.gz

第4步,重新生成一個新的image.ub文件,使用mkimage命令,如下

mkimage -f package_image_ub.its repack_image.ub

其中的package_image_ub.its是告訴mkimage打包需要的參數,這個文件在petalinux編譯路徑下有模板,我這里復制出petalinux的模板,修改了一下,主要是幾個文件路徑,改成自己的文件

/dts-v1/;/ {description = "U-Boot fitImage for PetaLinux/4.19-xilinx-v2019.2+git999/plnx-zynq7";#address-cells = <1>;images {kernel@1 {description = "Linux kernel";data = /incbin/("剛才第一步解壓出來的kernel.bin文件路徑");type = "kernel";arch = "arm";os = "linux";compression = "none";load = <0x8000>;entry = <0x8000>;hash@1 {algo = "sha1";};};fdt@system-top.dtb {description = "Flattened Device Tree blob";data = /incbin/("剛才第一步解壓出來的devicetree.dtb文件路徑");type = "flat_dt";arch = "arm";compression = "none";hash@1 {algo = "sha1";};};ramdisk@1 {description = "petalinux-user-image";data = /incbin/("重新打包生成的repack_ramdisk.cpio.gz文件路徑");type = "ramdisk";arch = "arm";os = "linux";compression = "gzip";hash@1 {algo = "sha1";};};};configurations {default = "conf@system-top.dtb";conf@system-top.dtb {description = "1 Linux kernel, FDT blob, ramdisk";kernel = "kernel@1";fdt = "fdt@system-top.dtb";ramdisk = "ramdisk@1";hash@1 {algo = "sha1";};};};
};

第5步,使用原本petalinux自帶的package命令重新打包生成BOOT.BIN

petalinux-package --boot --fsbl ./fsbl.elf --fpga --u-boot ./u-boot.elf --kernel ./repack_image.ub -o ./BOOT.BIN --force

其中的fsbl,u-boot都是原先build后自動生成的,在xxxx/images/linux路徑下就有,經過上面的步驟后就重新生成了燒寫文件,理論上燒寫到spiflsh就可以正常啟動了

簡單幾步就完成了rootfs的重新修改和配置,想添加刪除什么文件比原先的build命令方便多了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718849.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718849.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV 4基礎篇| OpenCV圖像的拆分和合并

目錄 1. 通道拆分1.1 cv2.split1.1.1 語法結構1.1.2 注意事項1.1.3 代碼示例 1.2 NumPy切片1.2.1 代碼示例 2. 通道合并2.1 cv2.merge2.1.1 語法結構2.1.2 注意事項2.1.3 代碼示例 1. 通道拆分 1.1 cv2.split 1.1.1 語法結構 b,g,r cv2.split(img[, mv]) #圖像拆分為 BGR 通…

【開發工具】GIF 錄屏工具推薦 ( GIF123 - 推薦使用 | GifCam | LICEcap )

文章目錄 一、GIF 錄屏工具推薦1、GIF123 ( 推薦使用 )2、GifCam3、LICEcap 本博客中介紹的 3 款 GIF 錄屏工具下載地址 : https://download.csdn.net/download/han1202012/88905642 也可以到對應的官網獨立下載 : GIF123 : https://gif123.aardio.com/ ;GifCam : https://bl…

FAST-LIO系列-閱讀筆記

近期&#xff0c;閱讀了FAST-LIO、FAST-LIO2以及Faster_LIO論文&#xff0c;這三篇論文都屬于濾波器的SLAM算法&#xff0c;下面記錄一下三個工作的主要貢獻和不同。 FAST-LIO 1.提出了一種計算效率高、魯棒性強的激光雷達-慣性里程測量框架。使用緊密耦合的迭代擴展卡爾曼濾…

報錯:/bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)

解釋&#xff1a;這是shell 警告你無法將當前的區域設置&#xff08;locale&#xff09;更改為 zh_CN.UTF-8&#xff0c;這個警告可能不會影響 fc-cache 命令的實際運行&#xff0c;但它確實表明系統在某些方面可能無法正確地處理與 zh_CN.UTF-8 相關的內容。 1.檢查當前的區域…

2024年口腔護理市場行業未來前景預測:正畸護理用品市場行業分析報告

口腔護理是維護口腔健康的重要步驟&#xff0c;近年來&#xff0c;隨著大眾口腔健康意識的不斷增強&#xff0c;人們對于口腔護理的消費意愿也不斷增加&#xff0c;由此&#xff0c;口腔護理市場的市場規模也比較大。 根據鯨參謀電商數據分析平臺的相關數據顯示&#xff0c;20…

OSCP靶場--Walla

OSCP靶場–Walla 考點(1.hydra http基本認證爆破&#xff1a; 2.sudo -l&#xff1a;python導入外部模塊提權 3.Linux內核提權&#xff1a;cve-2021-4034) 1.nmap掃描 ## ┌──(root?kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.181.97 --min-rate 2000 Starting N…

Linux網絡編程:Socket套接字

一、socket地址API 1、主機字節序和網絡字節序 小端字節序&#xff08;主機字節序&#xff09;是指一個整數的高位字節存儲在內存的高地址處 大端字節序&#xff08;網絡字節序&#xff09;是指一個整數的高位字節存儲在內存的低地址處 判斷機器字節序 #include <stdio.…

RT-DETR算法優化改進: 特征融合漲點篇 | 廣義高效層聚合網絡(GELAN) | YOLOv9

??????本文獨家改進:即結合用梯度路徑規劃(CSPNet)和(ELAN)設計了一種廣義的高效層聚合網絡(GELAN),高效結合RT-DETR,實現漲點。 ??????在多個私有數據集和公開數據集VisDrone2019、PASCAL VOC實現漲點 RT-DETR魔術師專欄介紹: https://blog.csdn.net/…

使用postman測試若依登錄接口API-2

請求方式 由于登錄控制器可知&#xff1a;該請求方式為Post請求 請求地址 在請求路徑欄輸入請求地址&#xff0c;如下圖所示&#xff1a; 參數體 在Body鍵入所需參數&#xff0c;類型選擇raw,數據格式選擇"JSON"&#xff1a;如下圖所示&#xff1a; 認證成功與失敗…

解釋存儲過程和函數的區別,以及它們在MySQL中的用途。如何創建和使用存儲過程和函數?

解釋存儲過程和函數的區別&#xff0c;以及它們在MySQL中的用途。 存儲過程和函數在MySQL中的區別及用途 區別&#xff1a; 返回值&#xff1a; 函數&#xff1a;必須有一個返回值&#xff0c;這可以是一個標量值或一個表。如果沒有明確的RETURN語句&#xff0c;函數將返回N…

香桿箐騎行記,春回大地

2024年3月2日春回大地之際我們校長騎行群再次踏上征程前往香桿箐。這次騎行不僅是一次對身體的鍛煉更是一次心靈的洗禮。 清晨的陽光灑滿大地我們從郊野公園后門出發踏上了前往香桿箐的道路。沿途的風景如畫綠樹成蔭鮮花盛開讓人心曠神怡。我們沿著山路蜿蜒前行感受著大自然的韻…

正則表達式-分組

1、oracle-正則表達式&#xff1a;將09/29/2008 用正則表達式轉換成2008-09-29 select regexp_replace(09/29/2008, ^([0-9]{2})/([0-9]{2})/([0-9]{4})$, \3-\1-\2) replace from dual; 解析&#xff1a;regexp_replace-替換&#xff0c; 第一個參數&#xff1a;需要進行處…

Golang Copy()方法學習

前言 主要是涉及到深淺拷貝相關的&#xff0c;但是在看的一個資料過程中發現他有錯…并且一系列&#xff0c;復制粘貼他的&#xff0c;也都錯了。 錯誤文章指路 很顯然&#xff0c;Copy是深拷貝啊&#xff01;&#xff01;&#xff01; Copy功能 copy的代碼很少&#xff0c…

chatgp4 教我學搭建網站1-課程目錄

Prerequisite 讓我們為學習如何建立網站規劃一個先修課程。我們將從0.1開始&#xff0c;不直接進入網站建設本身&#xff1a; 0.1 網絡技術基礎&#xff1a;了解互聯網如何工作&#xff0c;包括域名系統&#xff08;DNS&#xff09;、HTTP/HTTPS協議等。 0.2 HTML基礎&#x…

OAuth2:保障現代應用程序安全的關鍵協議

OAuth2&#xff1a;保障現代應用程序安全的關鍵協議 摘要&#xff1a;本文將為您詳細介紹OAuth2&#xff0c;這一保障現代應用程序安全的關鍵協議。我們將探討OAuth2的概念、工作流程、應用場景以及優勢&#xff0c;幫助您更好地理解并應用這一強大的安全認證機制。 一、引言…

玩轉地下管網三維建模:MagicPipe3D系統

地下管網是保障城市運行的基礎設施和“生命線”。隨著實景三維中國建設的推進&#xff0c;構建地下管網三維模型與地上融合的數字孿生場景&#xff0c;對于提升智慧城市管理至關重要&#xff01;針對現有三維管線建模數據差異大、建模交互弱、模型效果差、缺乏語義信息等缺陷&a…

Bert Encoder和Transformer Encoder有什么不同

前言&#xff1a;本篇文章主要從代碼實現角度研究 Bert Encoder和Transformer Encoder 有什么不同&#xff1f;應該可以幫助你&#xff1a; 深入了解Bert Encoder 的結構實現深入了解Transformer Encoder的結構實現 本篇文章不涉及對注意力機制實現的代碼研究。 注&#xff1a;…

詳解:npm升級到pnpm對比優化點!!

npm3之前 依賴樹層級過深&#xff0c;導致依賴路徑過長并且相同依賴模塊會被重復安裝,占用電腦磁盤空間 npm3之后 修改為扁平化處理 算法復雜存在多項目間依賴相同副本的情況導致沒有明確被依賴的包也可以直接引用&#xff0c;管理復雜 pnpm node_modules改成非扁平化結構&a…

微軟37頁論文逆向工程Sora,得到了哪些結論?

一篇論文回顧 Sora 文生視頻技術的背景、技術和應用。 追趕 Sora&#xff0c;成為了很多科技公司當下階段的新目標。研究者們好奇的是&#xff1a;Sora 是如何被 OpenAI 發掘出來的&#xff1f;未來又有哪些演進和應用方向&#xff1f; Sora 的技術報告披露了一些技術細節&…

找專業人士編輯百度百科,避免審核問題

對于想在百度百科上創建詞條或修改現有詞條的網友&#xff0c;可能會有一些疑問&#xff0c;比如找第三方代不通過審核創建百度百科。那么&#xff0c;創建百度百科需要多少錢呢&#xff1f;讓我們仔細看看。 百度百科創建服務一直存在。為了節省時間&#xff0c;很多人選擇專業…