Android System分區大小異常

?

平臺:Freescale / Android 4.2.2

問題描述:

用 df 命令,看到/system分區大小275M。

用?busybox fdisk -l /dev/block/mmcblk0p5,看到 536M。

?

Freescale的刷機工具是Mfgtool,分區的動作在mksdcard-android.sh里面完成。

SYSTEM_ROM_SIZE=512dd if=/dev/zero of=${node} bs=1024 count=1sfdisk --force -uM ${node} << EOF
,${boot_rom_sizeb},83
,${RECOVERY_ROM_SIZE},83
,${extend_size},5
,${data_size},83
,${SYSTEM_ROM_SIZE},83
,${CACHE_SIZE},83
,${VENDER_SIZE},83
,${MISC_SIZE},83
EOF

注: dd 命令

格式:起始,大小,ID

起始 = 起始柱面(如果不進行指定則為第一可用柱面),大小 = 柱面數量(如果不進行指定則指所有柱面),ID號 = 分區類型(L: Linux, S: Swap, E:擴展分區)

?

Mfgtool的配置文件是ucl2.xml

其中,刷System.img的命令是:

<CMD state="Updater" type="push" body="pipe dd of=/dev/mmcblk0p5 bs=512" file="files/android/system.img">Sending and writting system.img</CMD>

可以看到,這邊使用了 dd 命令,blocksize是512byte,將system.img拷貝到了/dev/mmcblk0p5分區。

但是,dd 命令的會改變分區的大小,改變后的分區大小就是system.img文件的實際大小。

所以,使用 df 命令會看到 275M。

?

解決方式:

修改 device/fsl/imx6/BoardConfigCommon.mk :

BOARD_SYSTEMIMAGE_PARTITION_SIZE := 524288000

BOARD_SYSTEMIMAGE_PARTITION_SIZE 會在 build/core/Makefile 中使用到:

define build-systemimage-target@echo "Target system fs image: $(1)"@mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt$(call generate-userimage-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt)$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \./build/tools/releasetools/build_image.py \$(TARGET_OUT) $(systemimage_intermediates)/system_image_info.txt $(1)
endef

generate-userimage-prop-dictionary 方法會對 system_image_info.txt 賦值:

define generate-userimage-prop-dictionary
$(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1))
$(if $(BOARD_SYSTEMIMAGE_PARTITION_SIZE),$(hide) echo "system_size=$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)" >> $(1))
$(if $(BOARD_USERDATAIMAGE_PARTITION_SIZE),$(hide) echo "userdata_size=$(BOARD_USERDATAIMAGE_PARTITION_SIZE)" >> $(1))
$(if $(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "cache_fs_type=$(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
$(if $(BOARD_CACHEIMAGE_PARTITION_SIZE),$(hide) echo "cache_size=$(BOARD_CACHEIMAGE_PARTITION_SIZE)" >> $(1))
$(if $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG),$(hide) echo "extfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG)" >> $(1))
$(if $(mkyaffs2_extra_flags),$(hide) echo "mkyaffs2_extra_flags=$(mkyaffs2_extra_flags)" >> $(1))
$(if $(TARGET_MKUBIFS_ARGS),$(hide) echo "mkfsubifs_flags=$(TARGET_MKUBIFS_ARGS)" >> $(1))
$(if $(filter true, $(strip $(HAVE_SELINUX))), echo "selinux_fc=$(TARGET_ROOT_OUT)/file_contexts" >> $(1))
endef

關鍵詞匯是:system_size

隨后調用了./build/tools/releasetools/build_image.py,傳入的參數就是system_image_info.txt:

  if mount_point == "system":copy_prop("fs_type", "fs_type")copy_prop("system_size", "partition_size")...... ......if fs_type.startswith("ext"):build_command = ["mkuserimg.sh"]if "extfs_sparse_flag" in prop_dict:build_command.append(prop_dict["extfs_sparse_flag"])run_fsck = Truebuild_command.extend([in_dir, out_file, fs_type,prop_dict["mount_point"]])if "partition_size" in prop_dict:build_command.append(prop_dict["partition_size"])if "selinux_fc" in prop_dict:build_command.append(prop_dict["selinux_fc"])
exit_code = RunCommand(build_command)

轉來轉去又調用了 mkuserimg.sh,記住 partition_size 是作為第五個參數傳進去的:

OUTPUT_FILE=$2
EXT_VARIANT=$3
MOUNT_POINT=$4
SIZE=$5
FC=$6MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"

終于看到核心了,使用了make_ext4fs來制作img了。

轉載于:https://www.cnblogs.com/all-for-fiona/p/3925091.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376728.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python數據庫連接池使用

在轉載|pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0這一篇中&#xff0c;我使用了方法一。接下來試試方法三&#xff0c;方法三和方法二其實意義差不多&#xff0c;但是對于數據庫的連接并不是交由程序員管理而是交由連接池管理了&#xff0…

.Net入門-部署問題

學習一門新的語言難免會遇到各種各樣的問題&#xff0c;總結一下。 測試環境&#xff1a;windows2008serverIIS7 開發環境: vs2010 問題1&#xff1a;"Unrecognized attribute targetFramework. Note that attribute names are case-sensitive. " 分析&#xff1a; 開…

pymysql.err.OperationalError: (1203, “User root already has more than ‘max_user_connections‘ active

max_connections 是指MySQL服務器的最大連接數。即所有用戶最大連接數的和。 max_user_connections 是指MySQL中單個用戶的最大連接數。 這里說明當前用戶的連接數大于了單個用戶的最大連接數&#xff0c;需要擴大連接數&#xff1a; mysql> show variables like %connect%…

北京行——JSP入門與Servlet精通

Servlet技術 用來動態生成 網頁數據資源Servlet生成HTML 頁面數據時&#xff0c;所有內容都是通過 response.getWriter response.getOutputStream 向瀏覽器輸出的 <html> <head> </head> <body> Hello </body></html> 用Servlet 輸出流打印…

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

可以參考一波&#xff1a;https://stackoverflow.com/questions/16573332/jsondecodeerror-expecting-value-line-1-column-1-char-0 1、json格式不對引起的錯誤 加上if json_rep.content:判空操作 json_rep requests.post(url monitor_url, headers monitor_header,json …

WINDOWS系統Eclipse+NDK+Android + OpenCv

WINDOWS系統EclipseNDKAndroid OpenCv 參考文檔博客 1 NDK環境搭建 http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html 2 官方文檔 Android.mk與Application.mk如何編寫&#xff0c;OpenCV庫如何調用 http://docs.opencv.org/trunk/doc/tutorials/introduction…

ural 1910. Titan Ruins: Hidden Entrance(Titan Ruins系列題目)

這是Titan Ruins系列第一道題&#xff0c;以后慢慢更新。 赤裸裸滴閱讀理解題&#xff0c;大意就是找到三個連在一起的數&#xff0c;使其之和最大&#xff0c;輸出的第一個數是這三個數的和&#xff0c;第二個數是中間那個數所在的位置。水題一道&#xff0c;很簡單。 1 #incl…

python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host=‘‘, port=80): Max retries e

對于問題&#xff1a;python OSError: [Errno 24] Too many open files 原因:超出了進程同一時間最多可開啟的文件數. 解決方案P: 使用ulimit -n查看進程同一時間最多可開啟的文件數 mac默認是256&#xff0c;linux是1024 修改 sudo vim /etc/security/limits.conf 這個文件的最…

Android 之視頻監控

Android 視頻監控已經有示例了&#xff0c;如http://www.open-open.com/lib/view/open1346400423609.html完全可以實現簡單的監控功能。但是&#xff0c;如果想要在手機上監控另外一個手機就需要做一些改動了。 其中&#xff0c;手機A實現的功能和上文中的一樣&#xff0c;主要…

Max retries exceeded with url 解決方案

目錄問題解決方案keep alive 與close使用場景問題解決方案 在上一篇問題解決中&#xff1a;python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host‘‘, port80): Max retries e 有提到修改本地進程最大文件數來避免Max retries exceeded with url 報錯&…

正確理解JavaScript

過去幾年我注意到技術圈一個很奇怪的現象&#xff0c;有太多程序員將那些他們只是有過非常淺顯的了解&#xff0c; 但其實根本就不懂的技術寫到他們的簡歷中&#xff0c;這個現象幾乎每種語言都有&#xff0c;但這其中最嚴重的就要數javascript了。 你不知道你不懂 出現這種狀況…

醫療機構遠程視頻監控集中管理,貝銳蒲公英提供一站式解決方案

上海某企業專業致力于醫療軟件、家居智能化研發、設計、銷售、集成及實施&#xff0c;企業主營業務之一為醫療軟件&#xff0c;涉及PACS/RIS/WEB/HIS、示教系統等方面的醫院信息化建設。 在實際應用、部署過程中&#xff0c;需要實現各地區分院與總院間的數據庫互相訪問、視頻數…

py腳本:linux系統下定時清理文件

linux清空文件內容的三種方法&#xff1a; 1.使用vi/vim命令打開文件后&#xff0c;輸入"%d"清空&#xff0c;后保存即可。但當文件內容較大時&#xff0c;處理較慢&#xff0c;命令如下&#xff1a; vim file_name :%d :wq2.使用cat命令情況&#xff0c;命令如下&a…

Process類:啟動和停止本地系統進程

Process.Start 方法 (String, String) 通過指定應用程序的名稱和一組命令行參數來啟動一個進程資源。&#xff08;并將該資源與新的 Process 組件相關聯&#xff09; 如果沒有啟動資源&#xff0c;則返回null Process.Start("d:\\0.jpg"); Process.StartInfo 屬性 獲…

NYOJ2括號配對問題

括號配對是最基本的棧的問題&#xff0c;它是棧入門的經典題目&#xff0c;思路是&#xff0c;如果是左括號直接進棧&#xff0c;如果是右括號&#xff0c;這時就要比較棧頂的元素與他是否匹配&#xff0c;如果匹配則出棧&#xff0c;否則進棧&#xff0c;下面是代碼的實現&…

SVC編碼簡單了解

基本概念 可伸縮視頻編碼 SVC&#xff08;Scalable Video Coding&#xff09; 作為 H.264 標準的一個擴展,可用于生成不同幀率、分辨率和質量等可分層的視頻流。 基本層編碼最低層的時域、空域和質量流&#xff1b; 增強層以基本層作為起始點&#xff0c;對附加信息進行補充&a…

程序集系統重構機房收費系統——起步

這段間時一直在查找程序集系統之類的問題,在現正好有機會和大家同享一下. 開始機房收費系統重構也半個月過去了。但看自己的系統連一個簡略的登錄還沒有實現。自己不免有些羞愧了。近來自己的習學態狀總的說來還是不錯的。但是由于自己對來原的識知把握的欠好所以致導了自己不知…

ie下的透明度,用濾鏡filter:alpha

.box{ width:100px; height:100px; background-color:#000; filter:alpha(Opacity50); opacity: 0.5; } 轉載于:https://www.cnblogs.com/liujinyu/p/3931087.html

mysql 修改字段類型

修改字段類型&#xff1a; alter table 表名 modify column 字段名 類型。 --如 alter table province_quality modify column quality float(8,2); mysql> describe province_quality ; --------------------------------------------------- | Field | Type |…

Ubuntu硬盤優化,降低硬盤溫度(Acer V5 親測成功 )

1.安裝laptop-mode-tools sudo apt-get install laptop-mode-tools2.修改電源管理配置: laptop-mode.conf sudo vim /etc/laptop-mode/laptop-mode.conf修改配置文件&#xff1a; #有關參數的說明請參照文件里的注釋說明 ENABLE_LAPTOP_MODE_ON_AC1 #當筆記本使用交流電時也開啟…