一起來學嵌入式Android系統 (第六章心得一)

在O’REILLY"嵌入式Android系統"這本書的第六章原生使用者空間可以看做是前面章節內容延伸,本章與第七章都是本書內容最多的章節。與前一章一樣我們不使用模擬器,而是直接使用Cubietruck開發板與第三章所產生的Android作業系統來進行後面的研讀與實作。本章內容很多,一樣分段進行心得分享;本次分享只包含一個主題:檔案系統。

在檔案系統的部份,我們主要從圖6-1進行瞭解;對於Android來說,除Root File System外最主要就是systemdata兩個檔案系統;由於先前我們已經安裝應用程式開發環境ADT Bundle,就可以在Eclipse使用DDMS上的File Explorer來觀察執行時期的整個檔案系統,以下是開發板的根目錄:

6-1-1

一個議題是開發板上使用的是NAND Flash,這是一個比較便宜且通用的做法;從上圖也會發現其對應的驅動程式(nand.ko)在根目錄中出現;至於被掛載的檔案系統,可以於adb shell下執行mount命令來進行觀察:

6-1-2

可以發現/catch、/data與/system都為ext4格式;而內建SD卡/sdcard(NAND Flash分割出來的)的格式為VFAT;/proc與/sys分別透過procfs與sysfs而被掛載,其它部份也可以對照書上的說明進行瞭解。再下來看根目錄的部份,參考本文第一張圖與書中表6-1的內容,而書中表6-2內容只有/config目錄出現於其中。在system目錄包含Android建置系統中所產生不可變元件,從掛載系統來看其為唯讀(ro)狀態;我們用DDMS內的File Explorer觀察:

6-1-3

並對照書中的表6-2與表6-3來確認相關內容;附帶一提,在開發板上你可以用adb remount命令將system目錄變成讀寫狀態。在data目錄中則是包含所有會隨時間改變的資料和APP,一樣用DDMS內的File Explorer觀察:

6-1-4

一樣對照書中表6-5與表6-6,但因平台特性故表6-6中/radio目錄(無線傳輸軔體)並沒有出現在data目錄中。多使用者支援的部份就於/data/user目錄之下,這部份因目前只有單一用戶,所以作用並不大,使用者0(/data/user/0)的目錄就是連結到全域使用者資料目錄(/data/data)目錄下。至於SD卡的內容就會跟系統及APP有關,包含那些目錄並不一定;就請自行使用DDMS內的File Explorer進行觀察。本主題的最後一個議題是建置系統與檔案系統,這部份延伸第四章的內容;在建置模板與檔案位置的部份,就參考表6-8的部份;在明確複製檔案的部份,就是說明如何用PRODUCT_COPY_FILES巨集把檔案複製到Android系統中所指定的地方;在預設權限與所有權的部份是這個議題的重點,主要去瞭解Android原始碼中的ct-droid1/android42/system/core/include/private/android_filesystem_config.h:

6-1-5

它提供預先定義的系統使用者清單,請搭配adb shell連線到開發板上用ps命令進行確認,其中要注意的是system_server以system使用者的身份執行,而App是透過名為uM_appN使用者身份執行,其中M是使用者ID,而N是App ID:

6-1-6

另外要增加新的預設使用者,就只能直接修改android_filesystem_config.h而無法被隔離到裝置特定的目錄,把新的預設使用者的編號設定為1029,並將定義加在以下位置:

6-1-7

最後就說明每個目錄與檔案的權限,設定在android_filesystem_config.h的android_dirs[]與android_files[]陣列中,這部份的修改也是無法被隔離到裝置特定的目錄,若要修改請參考書中說明並視情況進行。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s