RK3399 Ubuntu系統(tǒng)做更改后生成Update.img文件的方法

原創(chuàng) 2022-06-18 16:42:00 rk3399 Ubuntu Update.img
RK3399在使用Ubuntu系統(tǒng)進(jìn)行軟件開(kāi)發(fā),開(kāi)發(fā)完成后需要批量生產(chǎn),就會(huì)產(chǎn)生這個(gè)需求,因?yàn)閁buntu系統(tǒng)可以通過(guò)apt-get命令來(lái)獲取安裝自己所開(kāi)發(fā)軟件所需要的一些運(yùn)行環(huán)境。
這邊提供將修改后的Ubuntu文件系統(tǒng)生成Update.img文件以供直接燒寫(xiě)到新的rk3399開(kāi)發(fā)板或者核心板上的思路。
ubuntu.img掛載到做完更改的板子上,將文件系統(tǒng)的內(nèi)容替換然后將更改后的ubuntu.img放在源碼目錄下進(jìn)行編譯生成Update.img。這樣就可以直接給開(kāi)發(fā)板燒寫(xiě)做完更改后的Ubuntu系統(tǒng)。
將ubuntu.img掛載到開(kāi)發(fā)板文件的方式有很多種,請(qǐng)選擇自己熟悉的方式進(jìn)行操作,這邊只列舉一個(gè)簡(jiǎn)單而麻煩的方式。
將初始ubuntu.img文件copy到開(kāi)發(fā)板中(ftp、U盤(pán)等方式),然后在終端進(jìn)行操作,mount ubuntu.img target(target為文件夾名字,可自己更改創(chuàng)建),然后將根目錄下的文件替換target掛載的文件,然后umount target卸載鏡像。然后將鏡像copy到VMware中,替換源碼目錄下的ubuntu.img(源碼目錄為OK3399-desktop-release/rootfs/ubuntu.img),然后運(yùn)行builid腳本按照手冊(cè)描述進(jìn)行編譯燒錄。

以上方式有一點(diǎn)不足是如果自己所做的更改較大,在將根目錄文件替換到掛載鏡像的文件夾時(shí),掛載鏡像的大小不足以容納所更改的項(xiàng)目,下邊提供一個(gè)給鏡像擴(kuò)容的方法。(以下操作在虛擬機(jī)中完成,擴(kuò)容后再將鏡像copy到開(kāi)發(fā)板中掛載)
鏡像文件的擴(kuò)容用到兩個(gè)命令
sudo fsck.ext3 -f IMAGE
sudo resize2fs IMAGE SIZE
第一個(gè)命令為檢測(cè)IMAGE文件現(xiàn)在的大小和目錄結(jié)構(gòu)等,完成檢測(cè)后才可以對(duì)IMAGE文件大小進(jìn)行操作。操作時(shí)SIZE為塊的數(shù)量、一個(gè)塊的大小為4K(即當(dāng)SIZE為783770時(shí),783770*4=3135080,大概為3.2G,1250000時(shí)為5G
鏡像文件的擴(kuò)容需要在掛載之前進(jìn)行操作,此時(shí)驗(yàn)證的ubuntu.img最大為5.1G,超過(guò)此容量在進(jìn)行編譯等操作時(shí)不會(huì)出現(xiàn)報(bào)錯(cuò),但是最終在開(kāi)發(fā)板上運(yùn)行時(shí)會(huì)導(dǎo)致無(wú)法正常啟動(dòng)的情況,所以目前情況下,請(qǐng)不要將其容量設(shè)置為5G以上。

最后提供一個(gè)思路,是將RK3399開(kāi)發(fā)板的文件系統(tǒng)通過(guò)rsync掛載到服務(wù)器上通過(guò)dd指令來(lái)直接復(fù)制文件系統(tǒng)到新鏡像中,這邊只提供最后一種思路的理論方法,有興趣的可以自行嘗試。

創(chuàng)建一個(gè)新鏡像,然后復(fù)制內(nèi)容

以下命令中 new.img oldtarget newtarget 請(qǐng)按照實(shí)際情況自行更改

1、 新建鏡像文件

dd if=/dev/zero of=new.img bs=1M count=5120

2、 分別創(chuàng)建新舊鏡像掛載點(diǎn)

mkdir oldtarget

mkdir newtarget

3、 分別將新舊鏡像與loop設(shè)備關(guān)聯(lián)

losetup /dev/loop0 ubuntu.img

losetup /dev/loop1 new.img

4、 創(chuàng)建新鏡像的文件系統(tǒng)

mke2fs -j /dev/loop1

5、 掛載鏡像

mount /dev/loop0 oldtarget

mount /dev/loop1 newtarget

6、 將數(shù)據(jù)填充到新鏡像中

(cd oldtarget; tar czf -) | (cd newtarget; xzf)

7、 卸載文件系統(tǒng)以及釋放loop設(shè)備

umount /dev/loop0

umount /dev/loop1

losetup -d /dev/loop0

losetup -d /dev/loop1


在執(zhí)行數(shù)據(jù)填充(cd oldtarget; tar czf -) | (cd newtarget; xzf)這個(gè)命令時(shí),如果出現(xiàn)tar:在讀取文件時(shí)文件發(fā)生了改變,則說(shuō)明操作不成功。請(qǐng)檢查命令行的路徑。操作正常時(shí)無(wú)提示息,并需要等待較長(zhǎng)的一段時(shí)間,請(qǐng)耐心等待。



相關(guān)產(chǎn)品 >

  • FET3399-C核心板

    飛凌RK3399安卓高性能核心板采用 采用六核Rockchip RK3399芯片,雙Cortex-A72大核+四Cortex-A53小核結(jié)構(gòu),對(duì)整數(shù)、浮點(diǎn)、內(nèi)存等作了大幅優(yōu)化,在整體性能、功耗及核心面積三個(gè)方面提升。以下將對(duì)瑞芯微芯片RK3399參數(shù),RK3399核心板方案及其性能做具體介紹。如您對(duì)飛凌RK3399系列核心板有興趣,歡迎咨詢(xún)了解。

    了解詳情
    FET3399-C核心板
  • OK3399-C開(kāi)發(fā)板

    飛凌嵌入式RK3399安卓開(kāi)發(fā)板主芯片采用高性能六核CPU Rockchip RK3399,GPU采用Mail-T860四核 GPU,RK3399作為目RK產(chǎn)品線中低功耗、高性能的代表,可滿(mǎn)足人臉識(shí)別設(shè)備、機(jī)器人、無(wú)人機(jī)、IoT物聯(lián)網(wǎng)領(lǐng)域應(yīng)用。飛凌RK3399開(kāi)發(fā)板在整體性能、功耗及核心面積做了大幅度優(yōu)化,更加滿(mǎn)足工業(yè)設(shè)計(jì)需求。飛凌RK3399開(kāi)發(fā)板為進(jìn)一步減少用戶(hù)二次開(kāi)發(fā)難度,開(kāi)放了底板原理圖,并提供了RK3399用戶(hù)手冊(cè)、芯片手冊(cè),加上優(yōu)質(zhì)的技術(shù)服務(wù),讓您的方案從構(gòu)思到上市時(shí)間縮短。

    了解詳情
    OK3399-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批