2022年11月21日 星期一

android sd卡 記憶卡 合併 分割 部分

編輯:僅限棉花糖


我討厭少量的內部存儲器,但我不想讓我的 128GB 的​​整個 SD 被採用並且不可移動。所以我發現這篇文章描述瞭如何通過在 ADB 中拆分分區來使您的 SD 僅被部分採用。以為我會分享!


http://blog.sam.liddicott.com/2016/02/android-6-semi-adopted-storage.html


Android 6 半採用存儲

如何在採用的內部存儲和便攜式外部存儲之間拆分 SD 卡。

(請參閱下面的操作說明

疼痛


受夠了在我的 XT1072 上等待摩托羅拉升級 Marshmallow,內部存儲不足,受夠了升級後必須移動到 SD應用程序(以及偶爾的技巧,例如刪除驅動器的所有數據, google+,chrome 在清除緩存不夠時清除額外的內存)我決定升級到 CyanogenMod 13以這種方式獲取 Marshmallow。

我真的很期待能夠將我的 SD 卡用作內部存儲器並且不再有存儲問題。

真正發生的是,使用 Marshmallow 時,如果不將 SD 卡用作內部卡,則無法移動到 SD。然後唯一將移動到 sd 的應用程序(現在稱為Change) 是那些已經可以移動到 sd 的。

其中一個不會移動到 SD 的應用程序(即使在採用 SD 卡作為內部存儲之後)是 Google 音樂。

只是現在沒有用於 Google Music 的 SD 卡來存儲音樂。所以它將它存儲在*內部*內存中。

哇!我的音樂收藏比我的應用收藏大得多,在內部存儲我的音樂而不是某些應用(無論如何都可以移動到 SD)有什麼幫助?

在弄亂了 Links2SD、Apps2SD、root shell 和掛載點、閱讀了捲管理器和更改 API 之後,我決定即使採用的存儲中的環回文件 fat32 系統也可能無法工作。

因此,我考慮重新分區採用的存儲卡以縮小採用的分區以為 fat32 分區騰出空間。

在搜索如何訪問 Android 外部的加密分區(以便我可以調整其中文件系統的大小)時,我遇到了這些註釋https://nelenkov.blogspot.co.uk/2015/06/decrypting-android-m- adopted-storage.html?view=flipcard我遇到了可以創建混合公共私有捲 的sm命令。混合結果正是我要找的!





如何拆分您的卡

警告:執行此操作之前,請務必從“設置/存儲和 USB”菜單中彈出卡。

警告:無論您是拆分卡,還是直接採用加密方式,甚至只是重新格式化為 FAT,都可能對卡的使用壽命不利。似乎某些 SD 卡將長壽命閃存分配給保存 FAT 的前幾個塊。使用非 FAT 文件系統,或讓 FAT 文件系統在設備的更下方會失去這種優勢,甚至可能更改預裝格式也可能會造成這種情況。http://events.linuxfoundation.org/sites/events/files/slides/fs-for-embedded-full_0.pdf]

我找到瞭如何對我的 SD 卡進行分區以提供 8G 作為內部存儲空間,所有可以移動的應用程序都將移動到其中,並留下 ~20GB 作為便攜式存儲空間來保存音樂等。

首先,您需要運行 adb,並插入 SD 卡並格式化為便攜式。

$ adb shell sm list-disks 可採用
磁盤:179,64

disk:179,64 是我的可以採用的 SD 卡,我想要 90% 作為外部 SD:

$ adb shell sm partition disk:179,64 mixed 90

注意:您的卡可能會使用下劃線 _ 而不是逗號列出,例如 disk:179_64 在這種情況下,這就是您鍵入的內容。

這會擦除整個 SD 卡,然後給我 90% 作為便攜式存儲,其餘作為採用的內部存儲。

分區表如下所示:
Number Start End Size File system Name Flags
 1 1049kB 57.5GB 57.5GB fat32 shared msftdata
 2 57.5GB 57.5GB 16.8MB android_meta
 3 57.5GB 63.9GB 6369MB android_expand


fat32分區不是加密並可以安裝在計算機上(前提是它可以處理新的 GUID 分區表格式)。

我建議在設置新的音樂存儲位置後重新啟動,因為谷歌音樂可能會錯誤地認為有多少可用空間。

重命名採用的存儲。如果它與便攜式存儲分區同名,則它可能會阻止其中一個分區通過 USB MTP 可用。

由於我不明白的原因,我的磁盤標籤被設置為類似這樣的垃圾:82^GM-^KM-^?Nq^Xa^Oo雖然我可以通過將它插入計算機來更改它:mlabel -i /dev/sdf1 ::如果我把它放回我的手機,它看起來是正確的,直到我軟彈出並重新插入它(從菜單中)——然後奇怪的標籤又回來了。

我想知道是否可以通過滑動關閉發現新 SD 卡的通知(混合分區完成後顯示)而不是選擇它來避免這種情況。

如果您希望應用程序默認安裝在採用的 SD 分區上,那麼您需要從菜單中選擇“遷移數據”選項: 對於 CM13,這似乎可以替代我下面最初的建議,該建議需要手機進行 root,但對於股票來說似乎無效。






# 如果你選擇上面的遷移數據,你將不需要這個
$ adb root pm set-install-location 2

在可能的情況下默認將應用程序安裝在存儲上。這是非常有效的。(位置1表示內部,0表示自動選擇,但我不知道是什麼標準)。

但是,該命令要求您將手機植根。我希望這可以設置為另一種方式。

(如果你想 root XT1072,請按照此處的頂級帖子說明操作:http: //forum.xda-developers.com/moto-g-lte/general/root-marshmallow-stock-rom-t3317859

這可以讓你使用 USB 設備作為收養/便攜式設備(如果您已獲得 root 權限):
$ adb shell sm set-force-adoptable true


對於在創建混合分區時在 SD 卡上出現損壞錯誤的任何人。這是解決方案。

對磁盤進行分區後,當您的 SD 卡損壞時,在終端中輸入以下內容:
$> adb shell sm list-volumes all

這將列出您的捲,例如:
private mounted null
public:179,1 mounted B5B1-140C
private:179,3 unmountable null
emulated mounted null

然後輸入以下內容,將 179,3 替換為您提供的任何磁盤編號:
$> adb shell sm format private:179,3
$> adb shell sm mount private:179,3

現在你的設備存儲中的 SD 卡應正確安裝,您的便攜式存儲仍將在那裡。

這適用於我的 LG G5,應該適用於 S7。