PALMisLIFE 討論區

搜索
鹹魚爸魅力四射舞蹈教室
查看: 9071|回復: 0
打印 上一主題 下一主題

[升級進階] [研究] 關於 Android 的檔案系統的一些觀念與知識討論

[複製鏈接]

436

主題

21

好友

5477

積分

大海為家

  • TA的每日心情
    無聊
    2015-3-26 00:10
  • 簽到天數: 1065 天

    連續簽到: 2 天

    [LV.10]以壇為家III

    文章
    3634
    跳轉到指定樓層
    1#
    發表於 2013-9-22 00:29 |只看該作者 |倒序瀏覽
    本文章最後由 albatross 於 2013-9-22 13:46 編輯

    玩了那麼久的 Android 手機,一直想找個時間好好研究一下這個系統架構,與釐清一些觀念。
    當然這跟 app 的設計與開發是不同的領域,因此重點不是在於設計,而在於瞭解。
    常刷機的朋友,或許也對這主題有點興趣吧。

    寫在前面,這些資料都是網路上(大多國外)收集,自己了解意思後再寫出來,內容也不敢
    保證100%正確,若有錯誤,還請指正。此外,Android 系統在各家手機上都會經過修改,
    所以內容可能會與你的手機不同,若有問題或需要,還是自己洽詢 Google 大師才好。

    ok,讓我們重頭開始吧.....

    首先,先來了解一下 Android 的記憶體分區與檔案系統架構,手機上的儲存元件是採用 flash
    IC,也就類似PC上的SSD,多數手機內建就只有一顆Flash儲存IC,像是16G 或32G 等。
    因此所有的檔案系統,都是從此存放空間分享而來,包括系統檔等,所以使用者真正用到
    的並不是全部的空間。接下來各位大概都知道,Android 系統是屬於 Linux 的一種,因此系統
    指令也是採用 Linux 相同,而檔案系統的顯示與我們熟悉的 Win 系統最大不同,就是 Linux
    用檔案夾方式來顯示磁碟分區,如:
    /aaa
    /bbb
    /ccc

    而相對 Win系統,則是採用磁碟機代號來顯示磁碟分區,如:
    C:
    D:
    E:

    瞭解後,我們來看一張 Android 檔案系統分區圖:


    這張圖就是 Android 的標準磁碟分區圖,因此,在手機內的磁碟架構,就會有
    /boot
    /system
    /recovery
    /data
    /cache
    /misc.....

    另外視機種插卡功能,可能還有:
    /sdcard

    或是有利用搬移方式,增加空間的:
    /sd-ext

    我自己拿小米2s來研究,在系統打入 df 指令,就會把磁碟分區顯示出來,如下可參考:


    當然,不同的手機還會有不同的分區,我們就選一些通用且重要的來說明:

    /boot
    這個分區是 Android 的開機區,其中包括了 bootloader 與系統核心 kernel. 若此區損毀,手機將無法開機。
    若是 wipe 此區,千萬別急著重開機,還沒安裝新的ROM(有含/boot區資料)之前重開機會造成死機。

    /system
    此區基本上就是 Android 的系統區,包括了系統內建的app都放在這裡。wipe 此區後,若沒重新刷入新的
    ROM,會無法開機進入系統,但是可選則進入 bootloader 或 Recovery 模式。

    /recovery
    此區可視為第二開機區,可讓你開機時選擇進入此區,取代進入系統區。常刷機者,一定聽過大名鼎鼎的
    CWM Recovery 就是刷入放於此區。

    /data
    此區就是存放使用者資料區,包括聯絡人,簡訊,系統設定,與使用者安裝的 app 軟體等等。wipe 此區
    就等於做了一次手機還原,原廠設定。 (data/factory reset)

    /cache
    此區存放了常用資料的暫存檔,app 的緩存檔等等。Wipe 此區不會影響使用者資料,並在重新開機後會
    視系統與app需求重新建立暫存檔。

    /misc
    此區存放其他的設定檔案,包括了像是 CID (Carrier or Region ID), USB 的組態,與一些硬體設定等等。
    若是此區檔案毀損,會造成一些功能不正常,或無法使用。

    /sdcard
    此區就是內建記憶體的存放區(非SD卡),存放使用者的影音檔,文件資料等等。Wipe 此區只會移除
    使用者自行存放的資料,而不會影響系統。在有些可插卡的手機,會把記憶卡的空間放到 /sdcard/sd 下,
    也有些會在根目錄創建 /sdcard2 等等,視各機種不定。

    /sd-ext
    此區不算是標準 Android 的分區,但許多知名的 ROM 或是 app2sd 這類的app,採用此區作為 /data 的
    延伸區域,尤其在一些內建記憶體不多的手機,採用這種方式擴大安裝程式的記憶體空間。

    /mnt
    此區是 Android 連接存放媒體之處,也就是說任何儲存媒體接入手機後,都會顯示在此區,像是記憶卡,
    或是透過OTG方式接入的USB隨身碟,外接硬碟等等,接入後都可以在此區找到。

    /dev
    此區則是存放了硬體相關驅動程式,配置檔案之處。通常與手機硬體有關,最好別亂改動之。

    以上就是 Android 的重點分區,大家也比較有些觀念,當 wipe 這些區域會影響到的是哪些資料。

    接下來在刷機時,常會聽到所謂的 三清,四清(wipe),這些代表的其實就是:
    一清 wipe data/factory reset
    二清 wipe cache partition
    三清 wipe dalvik cache
    四清 wipe battery status

    因為要重新刷 ROM,除非是同一種系統的升級,通常做 wipe cache 與 wipe dalvik 就夠,使用者資料
    也不會遺失,手機原廠OTA的升級也是類似如此。若是要自行刷不同系統,或版本差異過大,就建議要
    做 wipe data/factory reset 恢復原廠新機狀態,這樣才不會造成刷機後常跑出FC(失敗關閉)狀況。

    而第四清,wipe battery 則不一定要做,當電池電量顯示不正常時,請充電到100%,做一次wipe即可。

    這裡順便說明一下,關於恢復原廠狀態 wipe data/factory reset,執行這動作等同於在手機上選擇刪除
    所有數據恢復原廠的功能,而這部份因為只 wipe /data 這區,因此若之前有動過 /system 區,像是自行
    刪除內建app或是改了些設定檔,再重置手機後,還是無法還原的,必須重刷ROM才能還原。

    dalvik cache 是存放在 /data 分區下,通常做 wipe /data 時,就會一併清除。當然也可以單獨做 wipe.
    內容主要是app執行時建立的一些組態檔,臨時檔,設定檔等等,若清除後,重開機時會重新建立,並
    在螢幕上看到「正在最佳化手機」這樣的訊息,時間稍久,但只會做一次。亦不影響使用者資料。

    而刷機主要是刷 /system 這一分區,有的 ROM 包可能會包含其他區,像是 /recovery 與 /boot 區,要
    看當初打包 ROM 的設計了。 當然原廠的刷機(線刷)方式,會包含所有的分區資料,會比較完整。

    一般卡刷的ROM包,可打開壓縮檔,就可看到內容包括會寫入哪些分區了。


    而進入手機終端機 app,打入 su 獲取 root 權限後,再 ls -al 就可以查看到整個手機的檔案
    系統了,對照上面說明,可以更清楚瞭解。



    或許各位有發現,小米2s(與將來的米3)的磁碟分區方法,把 /data 獨立出來,從主記憶體,分出了4GB
    給 /data 使用,就有人抱怨,萬一我安裝很多app,那麼4GB不夠用怎麼辦?為何HTC與Samsung 最新的
    旗艦機可以用所有的記憶體空間來安裝 app 呢?

    這問題很容易釐清的,其實是因為他門除了系統ROM使用外,其他全部做成一個 /data 區。而把 /sdcard
    做了一個連結放在 /data/media 下。這樣就能把空間最大化,app的安裝就能安裝到記憶體滿為止。

    而類似小米這樣的系統,就是實體上分了兩區 /data 與 /sdcard,兩區獨立。app與使用者資料放入 /data
    而其他媒體檔,影音檔,照片等等讓使用者自己存放於 /sdcard 內。這種獨立分區的好處是,當手機做
    wipe /data 動作時,不會影響 /sdcard 區,使用者的資料還是會存在於該區。

    因此這兩種檔案系統的設計各有好處,就像是 PC 上有人喜歡分 C 磁碟與 D 磁碟,分存不同性質的檔案,
    格式化也不會互相影響,但也有人喜歡就只用一個容量最大的 C 磁碟,什麼東西都放在裡面最好。

    以上,先寫到此,下次有機會,再來瞭解一下 Android 的系統架構,再與各位分享,先放一張圖參考。
    謝謝觀看~





    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?免費註冊

    已有 7 人評分分享 互動 收起 理由
    saber + 10 + 1 值得推薦的好文章
    Hamar + 10 + 1 值得推薦的好文章
    luketang + 1 值得推薦的好文章
    小螞蟻 + 10 + 1 值得推薦的好文章
    摩根 + 10 + 1 值得推薦的好文章
    eric1810 + 10 + 1 值得推薦的好文章
    Max + 10 值得推薦的好文章

    總評分: 分享 + 60  互動 + 6   查看全部評分

    分享淘帖0 分享分享0 收藏收藏2 頂1 踩0
    信天翁
    一隻喜歡大海的鳥~
    您需要登錄後才可以回帖 登錄 | 免費註冊

    與站長聯繫| PALMisLIFE 掌上生活      下載:更快、更棒、更好玩

    GMT+8, 2024-4-20 22:49 , Processed in 0.044755 second(s), 32 queries , Gzip On.

    Powered by Discuz!

    © 2001-2012 Comsenz Inc. style by eisdl

    回頂部