Android ramdisk,boot,system.img 解包和打包
来源:互联网 发布:精通黑客编程 pdf 编辑:程序博客网 时间:2024/05/05 16:24
一、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.gzakin@akin:~/work/7722$ lsramdisk.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中的内容
//新建目录 用来保存解出来的文件akin@akin:~/work/7722$ mkdir tempakin@akin:~/work/7722$ cd temp/akin@akin:~/work/7722/temp$ cpio -i -F ../ramdisk.img 4783 blocks
四、ramdisk.img 压缩
修改相应要修改的文件后,打包成ramdisk.img文件的步骤如下:
akin@akin:~/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.rc4784 blocksakin@akin:~/work/7722/temp$ cd ..akin@akin:~/work/7722$ lsramdisk.img temp
system.img 解压、修改、
将system.img 转换成ext4 格式,然后挂载到/home/temp/目录 就可以修改了
akin@akin-machine:~/tools/system$ simg2img system.img system.img.ext4akin@akin-machine:~/tools/system$ sudo mount system.img.ext4 ~/temp/akin@akin-machine:~/tools/system$ sudo umount ~/temp/
打包
akin@akin-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: 39Created filesystem with 1212/38720 inodes and 67353/154624 blocks Total files: 1085 Total bytes: 252503255akin@akin-machine:~$ ls8085Q Desktop examples.desktop Pictures temp Videosandroid Documents Music Public Templatesbin 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=6144dd 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 解包和打包
- Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
- inux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
- Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
- android打包解包boot.img,system.img
- MTK的android镜像 解包和打包( boot.img, system.img, userdata.img, or recovery.img)
- 6410开发版烧录Android映像 && IMG说明 && MTK平台解包和打包 boot.img/system.img
- ramdisk.img system.img userdata.img介绍及解包、打包方法
- android system.img,ramdisk.img,boot.img 分析
- android system.img,ramdisk.img,boot.img 分析
- android解析 ramdisk.img boot.img system.img
- android system.img,ramdisk.img,boot.img 分析
- android system.img,ramdisk.img,boot.img 分析
- (转)android system.img,ramdisk.img,boot.img 分析
- android解析 ramdisk.img boot.img system.img
- android解析 ramdisk.img boot.img system.img
- android system.img的解包和打包
- mtk打包/解包 boot.img, system.img, userdata.img, or recovery.img
- 从零开始学Android(五)
- /www/wdlinux/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist
- jQuery事件之鼠标事件
- Map集合 16.07.31 Java基础
- 网易互联网笔试题(多年)
- Android ramdisk,boot,system.img 解包和打包
- poj1797Heavy Transportation(dijkstra)
- ubuntu 14.04 搭建GPU深度学习 tensorflow 平台
- poj3621 Sightseeing Cows 【最大比例环 01分数规划】
- jq设置头信息
- Android开发人员不得不收集的代码(不断更新)
- Linux学习总结
- test
- BZOJ 1007 [HNOI2008]水平可见直线