日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

adb remount overlayfs的说明

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 adb remount overlayfs的说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在android R項目中執行adb remount的時候,能看到"Using overlayfs for xxx"的打印,類似如下:

#adb root restarting adbd as root#adb remount Disabling verity for /system Using overlayfs for /system Disabling verity for /system_ext Using overlayfs for /system_ext Disabling verity for /product Using overlayfs for /product Using overlayfs for /vendor Now reboot your device for settings to take effect remount succeeded

那這些打印表示什么意思呢?
看打印的內容來看,有overlayfs,先看一下wiki上的描述:https://zh.wikipedia.org/wiki/OverlayFS
截取其中一段描述:
“OverlayFS的主要機制涉及當兩個文件系統提供同一名稱的目錄時目錄訪問的合并。除此之外,OverlayFS呈現其中一個所產生的對象(如果有),“上層”文件系統優先。OverlayFS與其他覆蓋型文件系統不同,OverlayFS合并的目錄子樹不一定是來自不同的文件系統。”

看到這應該明白了,是為了讓lower層的vendor等分區仍然為read-only只讀,但是又有一個對應的upper層可讀可寫,兩層不同的文件則放入到work層。
舉個例子,當adb remount重啟設備后,往vendor分區push內容,這時會在其upper層對應創建相同文件名的文件出來,如果修改此文件名的文件,則會優先修改upper層的數據。
overlay后,能看到vendor有三層了,lowerdir、upperdir、workdir

# mount |grep overlay (rw,seclabel,noatime,lowerdir=/vendor,upperdir=/mnt/scratch/overlay/vendor/upper,workdir=/mnt/scratch/overlay/vendor/work,override_creds=off)

google在android項目上引入overlayfs就很巧妙了,如果沒有這個overlayfs,adb remount后vendor分區本身就需要修改為rw可讀可寫了,而有了overlayfs,vendor分區還是ro只讀的,原始數據不用修改。

/dev/block/dm-3 on /vendor type ext4 (ro,seclabel,relatime,discard) overlay on /vendor type overlay (ro,seclabel,noatime,lowerdir=/vendor,upperdir=/mnt/scratch/overlay/vendor/upper,workdir=/mnt/scratch/overlay/vendor/work,override_creds=off)

adb remount執行overlayfs動作的地方在fs_mgr_remount.cpp的do_remount函數,感興趣的可以繼續跟蹤一下如下代碼的詳細實現。

if (fs_mgr_overlayfs_setup(nullptr, mount_point.c_str(), &change, just_disabled_verity)) {if (change) {LOG(INFO) << "Using overlayfs for " << mount_point;reboot_later = can_reboot;user_please_reboot_later = true;setup_overlayfs = true;}} else if (errno) {PLOG(ERROR) << "Overlayfs setup for " << mount_point << " failed, skipping";retval = BAD_OVERLAY;it = partitions.erase(it);continue;}

總結

以上是生活随笔為你收集整理的adb remount overlayfs的说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。