期初我是想弄一個分割區存放自己的 APP 程式,如果需要更改應用的時候,只需要燒寫獨立的分割區即可,就不需要重新燒寫 rootfs。這是一個簡單的操作,為啥還需要記錄了,因為我在裡面遇到了一些坑,思路走錯了,便折騰了幾天。為啥會有這樣的需求了,一是為了管理方便,二是將應用程式給新手的時候,他們不一定能將應用程式拷貝到開發板中。下面是我使用的一些環境
開發板:RV1126
核心版本:4.19.111
啟動方式:快速啟動
原理
仔細研究過的朋友便能發現,在 SDK 中是沒有分割區操作的,其原理並不是編譯的時候將 rootfs 分成了多個塊,而是在燒寫的時候,燒寫工具根據分割區資訊分成多個引導塊,如下圖所示:
在這裡做一個簡單的測試便知道,我們只需要將 demo 分割區的大小更改一下,重新燒寫驗證即可,怎麼更改接著往下看
分割區規則
這裡主要是關注 「CMDLINE: mtdparts=rk29xxnand:」 之後的內容,至於 「CMDLINE: mtdparts=rk29xxnand:」 為啥不介紹了,因為我也不知道,我們就當是一個規則約束吧,不然會崩潰的,扯遠了。
在接著看冒號後面的內容是有規律的,可以知道用逗號隔開後對應的是一個分割區。仔細看一下,便知道規則是「分割區大小@起始地址」,並且下一個分割區的起始地址是上一個分割區的結束地址。
結論
到此相信相信小夥伴都會對 RV1126 進行分割區操作了,在來整理一下步奏,如下所示:
首先,需要更改燒寫時的 parameter.txt 分割區檔案,可以對其進行增刪改查
其次,我們需要製作自己的分割區,並燒寫到對應的其實地址即可,分割區的製作就比較簡單了,不知道的可以參考我之前的筆記linux下製作img檔案,製作好 img 檔案後,燒寫即可,;燒寫規則如下圖所示:
最後,對分割區進行掛載,掛載分割區就比較簡單了,可以在開機指令碼中使用 mount 命令進行掛載,也可以在 「 etc/fstab」 檔案中新增對應的掛載資訊即可。
注意事項
上面降到分割區的規則是 「分割區大小@起始地址」 ,但是會在以為檔案中看到 「-@起始地址」 這樣的形式,其作用是自動獲取剩餘的空間,都是在最後一個分割區中出現,如下圖所示:
注意: 再次注意,細心的小夥伴會發現,在分割區名後面多了一個 「:grow」 ,沒錯當你使用 - 表示獲取剩餘空間的時候,必須要在分割區名的後面加上 「:grow」 ,否則你開機後,變回發現掛載點不存在。
看到這裡,有的小夥伴就會好奇,怎麼才能檢視對應的掛載點,這裡有兩個辦法,首先可是使用 lsblk
命令進行檢視,但是 lsblk
命令可能在 RV1126 不存在,那還有一個方法,使用 cat /sys/class/block/xxx/uevent
檢視對應的掛載點是那個,如下圖所示:
到此,分割區的操作就算完成了,但是筆記到這裡還沒結束。上面的操作顯然是沒問題的,這樣介紹的目的是讓各位小夥伴深刻理解分割區的操作,不然換一個板子就不會了。後面將繼續介紹怎麼使用 SDK 完成分割區的操作。
分割區指令碼在 「sdk/device/rockchip/rv1126_rv1109」 目錄下,具體是那個檔案,可以看板級組態檔,這裡就不介紹,不明白的小夥伴,可以看我之前的筆記RV1126 快速啟動。
在次開啟對應的分割區檔案,便會發現,這個分割區指令碼和燒寫時的分割區檔案是一樣的,沒錯燒寫檔案中的 parameter.txt 檔案就從這裡直接拷貝過去的,只是名稱不一樣而已。指令碼內容如下圖所示:
打包指令碼 mk-image.sh
在 SDK 中,提供了一個指令碼可以直接將對應的檔案打包成 img 檔案。在 SDK 簡單找了一下,對應的打包檔案是 「sdk/device/rockchip/common/mk-image.sh」,使用規則就很簡單了,接著往下看。
使用規則
mk-image.sh <src_dir> <target_image> <fs_type> [size]
新增到 img 打包指令碼中
在之前的比中介紹到,SDK 中的 img 打包指令碼是 「mkfirmware.sh」,在 「sdk/device/rockchip/common」 目錄下,具體怎麼新增,在 4.2 中已經介紹了,這裡就不過多講解了。
上面已經完成了分割區和 img 檔案的打包,但是這兩個步奏完成後,燒寫到開發板中是不具備文自動掛載的,每次都需要手動掛載。一開始我們已經介紹到了自動掛載的方式,所以只需要在打包之前更改對應的指令碼檔案即可。
不論是更改 「etc/fstab」 檔案還是對應的啟動指令碼,操作方式都是一樣的,只需要將檔案放到對的目錄下,每次編譯的時候會自動將其打包到 rootfs 中,不瞭解的下夥伴可以看我之間的筆記【Buildroot】工具包使用
到此,我們的真個分割區操作算便完成了,有寫的不好的地方望各位指出,我會積極改進。
rv1126 擴充套件rootfs分割區以及增加分割區:https://www.ebaina.com/articles/140000016845
本文來自部落格園,作者:澆築菜鳥,轉載請註明原文連結:https://www.cnblogs.com/jzcn/p/17920494.html
如本部落格的內容侵犯了你的權益,請與以下地址聯絡,本人獲知後,馬上刪除。同時本人深表歉意,並致以崇高的謝意! [email protected]