Android ramdisk,boot,system.img 解包和打包
一、ramdisk介紹
ramdisk通過字面意思就大概能理解意思,ram disk虛擬記憶體盤,將ram模擬成硬碟來使用的檔案系統。對於傳統的磁碟檔案系統來說,這樣做的好處是可以極大提高檔案訪問速度;但由於是ram,所以在掉電後,這部分內容不能儲存。ramdisk檔案系統是在系統上電後直接從磁碟一次性載入到記憶體,在整個執行期間都不會有寫回操作,所以,任何修改都掉電後丟失。
二、ramdisk.img介紹
ramdisk.img是編譯Android生成的一個映象檔案,最後和kernel一起打包生成boot.img映象。ramdisk.img中主要是存放android啟動後第一個使用者程序init可執行檔案和init.*.rc等相關啟動指令碼以及sbin目錄下的adbd工具。如下圖所示
三、ramdisk.img 解壓
ramdisk.img是將上圖目錄打包壓縮而來的,我們可以通過下面命令,來解壓出其中的內容
首先使用file命令檢視ramdisk.img檔案型別
akin@akin:~/work/7722$ file ramdisk.img
ramdisk.img: gzip compressed data, from Unix
將ramdisk.img 重新命名為gzip格式
akin@akin:~/work/7722$ mv ramdisk.img ramdisk.img.gz
akin@akin:~/work/7722$ ls
ramdisk.img.gz
使用gzip解壓ramdisk.img.gz檔案
akin@akin:~/work/7722$ gunzip ramdisk.img.gz
再次用file命令檢視檔案型別
akin@akin:~/work/7722$ file ramdisk.img
ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
這時候使用cpio來提取ramdisk.img中的內容
//新建目錄 用來儲存解出來的檔案
[email protected]:~/work/7722$ mkdir temp
[email protected]:~/work/ 7722$ cd temp/
[email protected]:~/work/7722/temp$ cpio -i -F ../ramdisk.img
4783 blocks
四、ramdisk.img 壓縮
修改相應要修改的檔案後,打包成ramdisk.img檔案的步驟如下:
[email protected]:~/work/7722/temp$ find .|cpio -ov -H newc | gzip > ../ramdisk.img
.
./factory_init.rc
./proc
./sepolicy
./init.recovery.mt6735.rc
./file_contexts
./selinux_version
./ueventd.rc
./sys
./meta_init.modem.rc
./property_contexts
./init.aee.rc
./sbin
./sbin/mkfs.f2fs
./sbin/watchdogd
./sbin/adbd
./sbin/healthd
./sbin/ueventd
./data
./init.modem.rc
./init.xlog.rc
./meta_init.project.rc
./charger
./enableswap.sh
./init.project.rc
./init.zygote64_32.rc
./default.prop
./init.ssd.rc
./dev
./factory_init.project.rc
./system
./init
./init.zygote32.rc
./service_contexts
./fstab.mt6735
./init.trace.rc
./seapp_contexts
./init.mt6735.usb.rc
./init.rc
./meta_init.rc
./init.environ.rc
./init.mt6735.rc
./init.usb.rc
4784 blocks
[email protected]:~/work/7722/temp$ cd ..
[email protected]:~/work/7722$ ls
ramdisk.img temp
system.img 解壓、修改、
將system.img 轉換成ext4 格式,然後掛載到/home/temp/目錄 就可以修改了
akin@akin-machine:~/tools/system$ simg2img system.img system.img.ext4
akin@akin-machine:~/tools/system$ sudo mount system.img.ext4 ~/temp/
akin@akin-machine:~/tools/system$ sudo umount ~/temp/
打包
[email protected]-machine:~$ make_ext4fs -s -l 604M -a system system.img temp/
Creating filesystem with parameters:
Size: 633339904
Block size: 4096
Blocks per group: 32768
Inodes per group: 7744
Inode size: 256
Journal blocks: 2416
Label:
Transparent compression: none
Blocks: 154624
Block groups: 5
Reserved block group size: 39
Created filesystem with 1212/38720 inodes and 67353/154624 blocks
Total files: 1085
Total bytes: 252503255
[email protected]-machine:~$ ls
8085Q Desktop examples.desktop Pictures temp Videos
android Documents Music Public Templates
bin Downloads -n system.img tools
recovery.img
1.獲取recovery.img
第一種:從原廠刷機包中提取recovery.img
第二種:從手機上面提取
root手機
adb shell
su
1.如果是高通晶片的手機,採用以下命令將recovery.img拷貝出來
dd if=/dev/block/platform/msm_sdcc.1/by-name/recovery of=/storage/sdcard/recovery.img
或者是:
cd /dev/block/flatform/msm_sdcc.1/by-name/
ls -al命令可以看到revoery其實是個連結檔案,連結到/dev/block/mmcblk0p* 這個分割槽塊,因此也可以使用一下命令:
dd if=/dev/block/mmcblk0p16 of=/storage/sdcard/recovery.img
2.如果是MTK晶片的手機
有兩種方式:
dd if=/dev/recovery of=/storage/sdcard/recovery.img bs=1024 count=6144
dd if=/dev/block/mmcblk0 of=/storage/sdcard/recovery.img skip=xxxx bs=1024 count=6144
注意:bs的值目前可以固定1024,count的值需要檢視cat /proc/dumchar_info檔案對應的recovery大小來確定(高通平臺沒有dumchar_info這個檔案),
比如size一列為0x600000,那麼count的值為6144,也就是6M,如果為0x700000,那麼count的值為7168,也就是7M大小。
skip代表偏移,因為MTK平臺recovery和boot等都在一個相同的分割槽中,通過地址偏移量來區分,這就是為什麼高通平臺不需要執行bs 和count的原因。
解包
#./mkboot recovery.img outFilePath
打包
./mkboot outFilePath recovery.img
相關推薦
Android ramdisk,boot,system.img 解包和打包
一、ramdisk介紹 ramdisk通過字面意思就大概能理解意思,ram disk虛擬記憶體盤,將ram模擬成硬碟來使用的檔案系統。對於傳統的磁碟檔案系統來說,這樣做的好處是可以極大提高檔案訪問速度;但由於是ram,所以在掉電後,這部分內容不能儲存。ramd
boot.img解包和打包過程
MTK平臺: boot.img打包過程: boot.img=header+kernel+ramdisk.img LK會使用header裡面的引數。 mkbootimg header引數在BoardConfig.mk檔案裡定義:BOARD_KERNEL_BASE = 0x40
imx6sl recovery.img 解包和打包
1.工具 split_bootimg.pl (./device/fsl/common/tools/split_bootimg.pl) mkbootfs (./out/host/linux-x86/bin/mkbootfs) minigzip(./out/host/linux-x86/bi
[教程] system.img解包打包的方法,方便菜鳥們製作直刷ROM
作業系統:ubuntu10.10可虛擬機器可其他linux可其他版本 & Windows 7 Ubuntu下操作: 下載unyaffs和yaffs2.tar.gz,並編譯yaffs2再複製到/bin下(自己找資料) 1.Ubuntu下,在任意資料夾下面建立一個sys
system.img解包打包
system.img有兩種格式:raw和sparse。 $file system.img system.img: data 這說明我的system.img是sparse的。 $simg2img system.img system.raw $file system.raw
使用apktool解包和打包apk
植入程式碼 使用apktool解包要植入程式碼的apk(以下稱為A), 使用apktool解包包含待植入程式碼的apk(以下稱為B). -將B的AndroidManifest.xml中相應的許可權和各元件宣告資訊複製到A中. -把B的相應的smali檔案複製到A中. -把B的相應的佈局檔案複製到A中
ramdisk.img system.img userdata.img介紹及解包、打包方法
http://www.diybl.com/course/6_system/linux/linuxjq/20111128/563204.html Android 原始碼編譯後,在out/target/product/generic下生成的三個映象檔案:ramdisk.i
boot.img的解包與打包
轉自:http://blog.csdn.net/wh_19910525/article/details/8200372 Android 產品中,核心格式是Linux標準的zImage,根檔案系統採用ramdisk格式。這兩者在Android下是直接合並在一起取名為boot.img,會放
[android]system.img文件的打包和解包
tin pre port ast 1.0 linux factory bridge 修改 1:system.img的兩種格式 system2_0.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655
dubbo-php-framework的資料包的解包和組包邏輯解析
前面分析了框架的請求和回覆實體的封裝,而在進行底層網路通訊時,需要進行解包(收到資料)和組包(傳送資料),框架底層使用了dubbo協議,資料序列化方式是json格式,這篇文章我們就重點看看解包和組包的邏輯,這部分邏輯在DubboParser類中完成,這個類定義在dubbo-p
Android安全/應用逆向--25--使用Apktool解包並打包
7-2、使用Apktool解包並打包 目前apktool是最通用的解包及二次打包工具。 需要注意的是,APKtool使用不當會導致區域格式化,後果相當嚴重!因此我們通常使用以下架構: 1、 新建資料夾A
python中引數、解包和變數
這是學習python的第10課,主要學習了另外一種將變數傳遞給指令碼的方法,也就是用 argv 來傳遞變數。 from sys import argv #read the WYSS section for how to run this script,first,s
將第三方apk編譯進Android系統檔案system.img
1、把apk拷貝到out\target\product\generic\system\app中。 執行命令make snod , 把新增的spk編到system.img 中 2、使用mkyaffs2image工具,把apk及相關檔案(如.so)拷
python中的 序列和元組之(序列解包和鏈式賦值!)
python語言的 元組和序列 支援序列解包或鏈式賦值 和 序列打包: #序列解包全部支援! a,b,c = 1,2,3 #元組解包 a,b,c = (1,2,3) #元組解包 a,b,c = [1,2,3] #序列解包 a,b,c = {1,2,3} #集合解包 #序列打包僅支援元組和序列
android 5.x system.img 大於2G導致編譯otapackage時報錯如何處理
1、sign_target_files_apks2、replace_img_from_target_files.py 3、ota_from_target_files4、img_from_target_files.py 5 、img_from_target_files6、common.py 7、add_img
習題13--引數、解包和變數
一:程式碼 from sys import argv script, first, second, third = argv print "The script is called:", scri
替換Android系統映象system.img的方法
之前修改了Android的系統原始碼的framework層程式碼,定製ROM。通過make之後會生成三個映象檔案userdata.img、system.img、ramdisk.img三個檔案。這個時候
Scala詳解---------包和引用
摘要: 在本篇中,你將會了解到Scala中的包和引入語句是如何工作的。相比Java不論是包還是引入都更加符合常規,也更靈活一些。本篇的要點包括: 1. 包也可以像內部類那樣巢狀 2. 包路徑不是絕對路徑 3. 包宣告鏈x.y.z並不自動將中間包x和x.y變成可見 4. 位於檔案頂部不帶花括號的包宣告在整個檔
ubuntu下recovery.img解包打包方法
為了方便各位機友製作自己的recovery.img,特推出解包打包的方法。 1.安裝好ubuntu系統,下載附件:,並解壓到ubuntu系統的主資料夾。 2.把將要解包的recovery.img放到主資料夾的tool裡。 3.解包recovery.img,開啟終端,輸入:
android 如何調整System.img 大小,從而多內建應用
通過excel 開啟: alps/mediatek/build/tools/ptgen/partition_table.xls, 表中的MT6573 no 子表, 修改 11 行/G 列 如預設11行: 11 ANDROID YAFFS2 1500000 DD00000 2