一、要確定有多少個(gè)分區(qū)?
詳細(xì)解析:
major 表示主設(shè)備號(hào)?
minor 表示次設(shè)備號(hào)?
#blocks 表示的是block的數(shù)目?
name 是指的設(shè)備名稱
例如:
major 主設(shè)備號(hào),比如一個(gè)U盤有3個(gè)分區(qū),主設(shè)備名為sda,major為8,分區(qū)的major也為8 (可能所有的U盤插進(jìn)來,major都是8),minor則為分區(qū)號(hào),sda1,sda2,minor值為1 ,2
zram swap 主要原理就是從內(nèi)存分配一塊區(qū)域出來用作 swap 分區(qū)。如果內(nèi)存空間不夠時(shí),不是把應(yīng)用程序殺掉,而是把應(yīng)用程序所占用的內(nèi)存數(shù)據(jù)復(fù)制到 swap 分區(qū),等切換回來的時(shí)候就可以直接把這部分?jǐn)?shù)據(jù)恢復(fù)到內(nèi)存當(dāng)中,節(jié)省重新開啟所需的時(shí)間。
而被放到 swap 分區(qū)的應(yīng)用程序,所占用的內(nèi)存都是被壓縮過的。
注:
config中均是我司內(nèi)部有測(cè)試過的,如無特殊需求,建議按照default設(shè)定,因?yàn)樵O(shè)置太大的swap ,會(huì)導(dǎo)致可以直接使用的內(nèi)存減少,這樣就會(huì)間接增加壓縮,解壓縮對(duì)CPU的消耗,當(dāng)然這個(gè)設(shè)置較大,可以緩存更多應(yīng)用在內(nèi)存,若設(shè)置較少,可用內(nèi)存較多,但是A-go的版本本身的內(nèi)存并不大,設(shè)置較少,會(huì)使緩沖的應(yīng)用較少,這樣每次啟動(dòng)也會(huì)延長(zhǎng)時(shí)間
USRDATA分區(qū)就是任何用戶都可以讀寫的分區(qū),不可設(shè)置大小,大小等于emmc總?cè)萘繙p去其他分區(qū)的大小。
mmcblk0 為 eMMC 的塊設(shè)備,也相當(dāng)于真實(shí)內(nèi)部存儲(chǔ)總?cè)萘?/p>
mmcblk0boot0 和 mmcblk0boot1 對(duì)應(yīng)兩個(gè) Boot Area Partitions,這兩個(gè)區(qū)域在存儲(chǔ)的穩(wěn)定性、可靠性及擦除次數(shù)上都遠(yuǎn)比UDA要好 ,所以經(jīng)常放一些關(guān)鍵數(shù)據(jù)
mmcblk0rpmb 則為 RPMB Partition,保護(hù)性存儲(chǔ),是用來給系統(tǒng)存放一些特殊的、需要進(jìn)行訪問授權(quán)的數(shù)據(jù)(指紋,安全支付)
mmcblk0px 為 UDA 劃分出來的 SW Partitions,AP及用戶可以進(jìn)行讀寫存儲(chǔ)的區(qū)域,通常其大小為整塊EMMC表示大小的93%左右
注:
1k-blocks=1024B
二、分區(qū)對(duì)應(yīng)的別名?
也可以到源碼里面獲取這些信息:
mtk方案:
out\target\product\k39tv1_64_bsp\recovery\root\etc
recovery.fstab
三、主要的分區(qū)是?
四、怎么修改?
8.x MTK
eg:
alps/device/mediatekprojects/$project/BoardConfig.mk中設(shè)定:
BOARD_MTK_SYSTEM_SIZE_KB := 改成你需要的
BOARD_MTK_VENDOR_SIZE_KB := 307200
BOARD_MTK_CACHE_SIZE_KB := 114688
8.x sprd
eg:
device/sprd/pike2/sp7731e_1h10/BoardConfig.mk中定義:
BOARD_VENDORIMAGE_PARTITION_SIZE :=314572800
BOARD_CACHEIMAGE_PARTITION_SIZE := 104857600
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 改成你需要的--待確定,修改如下:
五、附件
六、知識(shí)補(bǔ)充:
swap功能
swap 分區(qū)
https://blog.csdn.net/fanmengke_im/article/details/28389495
單個(gè)手機(jī)自定義
https://blog.csdn.net/u011109881/article/details/73694700
打開關(guān)閉swap
https://blog.csdn.net/Extreme_fallen/article/details/84322475
解析swap
https://blog.csdn.net/hiyun9/article/details/51967742
adb shell cat /proc/swaps ---對(duì)應(yīng)的swaps分區(qū)
mtk8.1 關(guān)閉swap
echo 0 > proc/sys/vm/swaappiness
echo 0 > /sys/fs/cgroup/memory/sw/memory.swappiness
查看swap功能是否開啟?
adb shell cat /proc/meminfo
查看SwapTotal的值是否為0,0代表關(guān)閉
linux查看磁盤及文件大小:
du -h
du -sh
---文件大小
df -h
---磁盤大小
free -m
https://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html
CTS要求
https://source.android.com/compatibility/cdd
https://source.android.com/compatibility/android-cdd.pdf
vendor.img
http://gityuan.com/2018/04/08/android_p/
為什么emmc總量大于實(shí)際設(shè)備中顯示的大小?
1.emmc存儲(chǔ)中有壞死塊
2.8G的計(jì)算方式不一致
8G=8*1000MB=8*1000*1000KB=8*1000*1000*1000B
而我們計(jì)算機(jī)或手機(jī)的計(jì)算方式為:
8G=8*1024MB=8*1024*1024KB=8*1024*1024*1024B
3.本身存儲(chǔ)了部分軟件,占了部分空間
參考學(xué)習(xí)
https://blog.csdn.net/roland_sun/article/details/50969958
https://www.cnblogs.com/xiaolei-kaiyuan/p/5462436.html
https://blog.csdn.net/tianshiyalin/article/details/37775057
https://blog.csdn.net/u013686019/article/details/66472291
https://linux.codingbelief.com/zh/storage/flash_memory/
https://blog.csdn.net/u014645605/article/details/52061034
https://blog.csdn.net/zhouzhenhe2008/article/details/72943314?utm_source=blogxgwz3
http://www.lxweimin.com/p/33335b7cc6bb
mtk online中相關(guān)資料
[FAQ06257]?Flash上新建分區(qū)的大小限定
內(nèi)容?(2014-09-10)
目前的分區(qū)類型有如下兩種:Rawdata和文件系統(tǒng),文件系統(tǒng)的類型與Flash類型相關(guān),Nand Flash上的文件系統(tǒng)為Yaffs2;Emmc上的文件系統(tǒng)為Ext4。
Rawdata:至少1*Block Size;
Yaffs2: 至少9*Block Size;
Ext4:至少5MB
目前常見的Nand Flash上,Block Size一般為128KB和256KB。
另外需要注意一點(diǎn),新建分區(qū)的start address和size必須是Block align的。
[FAQ06165]?[NVRAM][SIM_ME_LOCK]protect_f和protect_s分區(qū)的作用是什么?
內(nèi)容?(2017-07-07)
[Description]
protect_f和protect_s分區(qū)的作用是什么?
[Solution]
在沒有Protect_s和Protect_f分區(qū)之前,SIM ME LOCK數(shù)據(jù)存在USER DATA分區(qū)內(nèi),詳細(xì)路徑為/data/nvram/md/NVRAM/IMPORTANT。
當(dāng)恢復(fù)出廠設(shè)置時(shí),會(huì)將/data/nvram/md/下的文件全部清除,其后開機(jī)時(shí)會(huì)將NVRAM BIN Region中備份的數(shù)據(jù)recovery到/data/nvram/md/下。
如NVRAM BIN REGION中數(shù)據(jù)為空,則會(huì)按照默認(rèn)值生成SIM ME LOCK數(shù)據(jù)。
如NVRAM BIN REGION中數(shù)據(jù)不為空,則會(huì)將SIM ME LOCK數(shù)據(jù)恢復(fù)為NVRAM BIN REGION保存的狀態(tài)。
針對(duì)case 2,由于NVRAM BIN REGION中保存的狀態(tài)并不總是同恢復(fù)出廠之前/data/nvram/md/NVRAM/IMPORTANT下的SIM ME LOCK數(shù)據(jù)狀態(tài)一致,因此可能無法滿足SML?的更新一致性要求。
為了對(duì)SML數(shù)據(jù)進(jìn)行持久化保存以及更新一致性的目的,我們將SML數(shù)據(jù)移入Protect_s和Protect_f分區(qū)。
Protect_s和Protect_f分區(qū)的特點(diǎn)有:
Download的時(shí)候若要format USERDATA分區(qū)時(shí),不會(huì)format Protect_s和Protect_f。
恢復(fù)出廠設(shè)置時(shí),也不會(huì)清除 Protect_s和Protect_f。但若此時(shí)BIN Region中無內(nèi)容,開機(jī)時(shí)會(huì)判斷出USERDATA分區(qū)中/data/nvram/md不存在且BIN Region中無內(nèi)容,進(jìn)而斷定是第一次開機(jī)從而根據(jù)默認(rèn)值生成SIM ME LOCK。
[FAQ04658]?【partition】android\cache\userdata三個(gè)partition大小設(shè)定
內(nèi)容?(2013-01-03)
[DESCRIPTION]
在6589,eMMC中,JB的android\cache\userdata三個(gè)partition大小設(shè)定
[SOLUTION]
(1)android分區(qū):650M
????? a,預(yù)留更大的空間來安裝apk
????? b,如果未來不需要upgrade,可以適當(dāng)縮寫這個(gè)分區(qū)的大小
???? c,建議這個(gè)分區(qū)不要小于512M。
(2)cache分區(qū):126M
????? a,這個(gè)分區(qū)的大小大于等于100M,以滿足google的CDD測(cè)試
????? b,F(xiàn)OTA升級(jí)的時(shí)候會(huì)用到cache分區(qū)
(3)userdata分區(qū):1024M
????? a,至少是350M,以滿足google的CDD測(cè)試
????? b,可以給這個(gè)分區(qū)預(yù)置更大的空間來以便user安裝更多的apk
????? c,F(xiàn)OTA升級(jí)的時(shí)使用這個(gè)分區(qū)來download
[FAQ21281]?android P分區(qū)表中odmdtbo與dtbo分區(qū)的說明
內(nèi)容?(2018-10-18)
[DESCRIPTION]
Android O版本odmdtbo.img,在Android P版本改名成dtbo.img。
雖然android P分區(qū)表中可以同時(shí)看到odmdtbo與dtbo分區(qū),但實(shí)際上,ptgen在build生成的MTxxxx_Android_scatter.txt中,僅會(huì)包含其中一個(gè)分區(qū)。
[SOLUTION]
P版本有一個(gè)宏開關(guān):?MTK_DTBO_UPGRADE_FROM_ANDROID_O,配置路徑:
/device/mediatekprojects/<your_project>/ProjectConfig.mk
1. 對(duì)于需要OTA?(O to P)升級(jí)到P版本的Project,分區(qū)layout必須與O版本完全一致,因此,請(qǐng)配置:
? ? ??MTK_DTBO_UPGRADE_FROM_ANDROID_O?=?yes
? ?此時(shí)build會(huì)生成odmdtbo.img,對(duì)應(yīng)下載到odmdtbo分區(qū)。
2. 對(duì)于P版本新開的Project,請(qǐng)配置:
? ? ??MTK_DTBO_UPGRADE_FROM_ANDROID_O?=?no
? ?此時(shí)build會(huì)生成dtbo.img,對(duì)應(yīng)下載到dtbo分區(qū)。
[Related Information]
1.?FAQ21246?Android P dtbo?
2. OTA?(O to P)升級(jí),還會(huì)涉及其它修改,請(qǐng)參考:
? ? 《Android OTA SDCARD update》,重點(diǎn)看OTA(O to P)相關(guān)部分。
3. Google關(guān)于dtbo的說明:
? ? https://source.android.com/devices/architecture/dto/partitions
[FAQ03559]?[Storage]MTK platform partition meaning
Pre-loader
Pre-loader image
Handles all the download and secure boot procedure?
?????? DSP_BL
?DSP Boot Loader
????????MBR、EBR1、EBR2
?Ext4 file system partition index table
???????PMT
?Partition management table
???????NvRam
Stores the hardware related information, such as calibration data, MAC address, IMEI?…?etc
???????SECCFG and SECSTATIC
Reserved for the security platform used
??? protect1 or protect_f
store SIM LOCK
?? ?protect2 or protect_s
backup SIM LOCK
?? ?pgpt
Partition management table, compared with MBR
?? ?sgpt
backup of pgpt
?? ?oemkeystore?and keystore
image authentication key for verified boot, not used yet
?? ?tee1
Trusted Excution Environment(https://www.trustonic.com/technology/trustzone-and-tee)
?? ?tee2
backup of tee1
?? ??U-boot/LK
?Second loader image
Handles most hardware initializations and bring-up entire Linux kernel
?? ??Boot image
Linux kernel image and it's root file system
?????Recovery
Recovery kernel image and it's?root file system
Handles all the system recovery and firmware update functionalities
????SEC_RO or SECRO
Reserved for the security platform used
?????Misc
Used for the recovery procedure (power loss)
?????Logo
?Boot-up logo image
?????EXPDB
?Store Exception database
?????System
?Android system image
?????Cache
?For? Android internal used
?Store Android internal cache data or web cache data
????User data
Used for Android system to store user data such as user contacts, settings, installed applications?…?etc
?????FAT/intsd
Internal sdcard on emmc
??????OTP
Otp(one time program) area on emmc
???flashinfo
flash tool download information
?????BMTPOOL
Handles Bad Block Management(nandflash used and reserved on emmc)
?? PARA
save parameter for recovery
???FRP
factory reset for protect , used for stolen phones
?? NVDATA
store data in data/nvram/
? ?PROINFO
a nvram partition, store one struct default, can be added
? ?md1img, md1dsp,md1arm7, md3img
For Android M, MD image have switched to MD standalone partition, all modem images will be load from the partition: md1img, md1dsp, md1arm7 and md3img
?? scp1,scp2
system control processor, used for recovery fail
???lk1,lk2
used for?the case?of update lk throught OTA?fail
?? persist
?store data which will be stable for a long time
?? metadata
store master key for data encryption
?? nvcfg
nvram config, controlled by MTK_NVCONFIG_PARTITION_SUPPORT, not used yet
?? custom
customization partition, controlled by MTK_CIP_SUPPORT
?? efuse
download BB chip's efuse
?? ppl
Privacy protection lock,used for mobile phone antitheft
[FAQ20591]?關(guān)于Android Go 版本userdata 分區(qū)size限定說明
內(nèi)容?(2018-01-18)
[DESCRIPTION]
?根據(jù)google釋放的Android Go 文檔《GMS_Go_Requirements.pdf》中Disk Space Requirements章節(jié)的說明,Android Go版本,需要根據(jù)emmc size做調(diào)整,userdata分區(qū)至少打到如下size限定要求,來滿足終端用戶的使用體驗(yàn)需求。
[SOLUTION]
需要特別注意上面的說明,GB單位是以1000位base計(jì)算的,不是1024 base,
以8GB emmc為例,要求開機(jī)后,adb shell df 查到的data分區(qū)1k-blocks的數(shù)值*1024之后>= 5500000000即可
也就是 data分區(qū)的total size > 5500000000 bytes,約5.1 GB就可以滿足google要求
這部分我們有跟google 確認(rèn)過,按上面理解配置即可。
針對(duì)google在A-Go上userdata分區(qū)這部分限定,按O版本原生的配置無法達(dá)到google的要求,
我們建議在BoardConfig.mk中,按如下大小設(shè)定,這樣可以滿足google需求,且不影響后續(xù)升級(jí)及軟件基本功能
alps/device/mediatekprojects/$project/BoardConfig.mk中設(shè)定:
BOARD_MTK_SYSTEM_SIZE_KB := 1024000
BOARD_MTK_VENDOR_SIZE_KB := 307200
BOARD_MTK_CACHE_SIZE_KB := 114688
修改后如有相關(guān)問題,請(qǐng)?zhí)醗servcie支持。
[FAQ10389]?如何關(guān)閉 zram/swap功能
也可以cat /proc/meminfo 里面的swap相關(guān)欄位為0
[FAQ09456]?zram(內(nèi)存壓縮)介紹
內(nèi)容?(2015-10-08)
下面是對(duì)Zram(內(nèi)存壓縮)一個(gè)簡(jiǎn)單介紹:
1. zram 又稱內(nèi)存壓縮,Linux kernel會(huì)把不常用的內(nèi)存進(jìn)行壓縮,以換出更多的內(nèi)存供系統(tǒng)使用
??? -- 平時(shí)空閑時(shí)候會(huì)做壓縮,以備不時(shí)之需
??? --? kernel 申請(qǐng)不到內(nèi)存,會(huì)觸發(fā)壓縮機(jī)制
2. 只有user process的內(nèi)存可被壓縮
3. 壓縮是有成本的,會(huì)影響performance
??? -- 通常,launch app的時(shí)候會(huì)受影響
??? -- 代碼執(zhí)行中,突然要大量?jī)?nèi)存的時(shí)候也會(huì)受到影響
4. 在LCA/non-LCA的項(xiàng)目都有可能Enable,目前為止只有72&82&92項(xiàng)目上面支持,其它暫不支持
若有更細(xì)節(jié)問題,可提e-service與MTK討論