Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程
首先通過編譯,先將android內核編譯成功。正常情況下,在目錄out/target.product/generic/(但是有的就沒有generic文件,如freescale和iriver;但是lonshinetech下面就有這個文件,依據情況而定,只要能找到生成的三個文件就可以。例如:~/freescale/R9.2/out/target/product/imx51_bbg$
)下會生成三個文件:ramdisk.img,system.img,userdata.img。這三個文件的作用如下:
(1) ramdisk.img
#其實ramdisk.img的內容就是/out/target/product/generic/root目錄的壓縮而已。
方法1: android編譯生成後的ramdisk.img是一個gzip格式的文件,輸入命令 # file ramdisk.img, 會得到 =>ramdisk.img: gzip compressed data, from Unix
那麼先解壓ramdisk.img,因為後綴不是.gz,所以用—S選項, # gunzip -S .img ramdisk.img
這樣就得到一個新文件ramdisk.img,用 # file ramdisk 查看格式 , 得到 => ramdisk: ASCII cpio archive (SVR4 with no CRC)
可以看出解壓生成的ramdisk是cpio格式的文件,再次解壓,為了防止解壓後文件混亂,
首次建立一個目錄如: # mkdir rfs //rfs可以用來放ramdisk解壓後的文件, 進入 # cd rfs
解壓 # cpio -i -F ../ramdisk
方法2: 將ramdisk.img復制一份到任何其他目錄下,將其改名為ramdisk.img.gz,然後使用命令 # gunzip ramdisk.img.gz,
然後新建一個文件夾ramdisk,進入,輸入命令 # cpio -i -F ../ramdisk.img
得到結果如下:
drwxr-xr-x 8 root root 4096 2011-01-12 11:36 ./
drwxr-xr-x 13 root root 4096 2011-01-12 11:35 ../
drwxrwx--x 2 root root 4096 2011-01-12 11:36 data/
-rw-r--r-- 1 root root 118 2011-01-12 11:36 default.prop
drwxr-xr-x 2 root root 4096 2011-01-12 11:36 dev/
-rwxr-x--- 1 root root 107784 2011-01-12 11:36 init*
-rwxr-x--- 1 root root 492 2011-01-12 11:36 init.freescale.rc*
-rwxr-x--- 1 root root 1677 2011-01-12 11:36 init.goldfish.rc*
-rwxr-x--- 1 root root 18263 2011-01-12 11:36 init.rc*
drwxr-xr-x 2 root root 4096 2011-01-12 11:36 proc/
drwxr-x--- 2 root root 4096 2011-01-12 11:36 sbin/
drwxr-xr-x 2 root root 4096 2011-01-12 11:36 sys/
drwxr-xr-x 2 root root 4096 2011-01-12 11:36 system/
#可以看出這寫文件是和root目錄下的內容完全一樣,其實就是對root目錄的打包和壓縮。可以是用tree -L 1來查看root的目錄
(2) system.img
# system.img是out/target.product/generic/目錄下system目錄的一個映射,類似與根文件系統的映像,放著android 的應用程序、配置文件和字體等。
root@root-OptiPlex-380:~/lonshinetech/src/SPU_B0_R0_0/out/target/product/generic/system$ tree -L 1
.
|-- bin
|-- build.prop
|-- etc
|-- fonts
|-- framework
|-- lib
|-- usr
-- xbin
重新打包system.img 具體辦法
a) 在android編譯後生成的out目錄中查找這個工具 mkyaffs2image
# find out/ -name mkyaffs2image
得到=>out/host/linux-x86/bin/mkyaffs2image
b) android編譯後會生成system/ 這個目錄,而這個目錄就是用來生成system.img的
# mkyaffs2image system/ system.img
(3) userdata.img
將會被掛接到 /data 下,包含了所有應用相關的配置文件,以及用戶相關的數據 。
(4) Android啟動過程
它會調用init.rc初始化這個文件,這個文件在out/target/product/generic/root下。
android啟動時首先加載的是ramdisk.img鏡像,並掛載到/目錄下,並進行一系列的初始化動作,包括創建各種需要的目錄,初始化console,開啟服務等。system.img是在init.rc中指定一些腳本命令,通過init.c進行解析並掛載到根目錄下的/system目錄下的。
Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程的更多相关文章
- Android 系统镜像: boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
boot.img(kernel.img+ramdisk.img) ramdisk.img(/) system.img(/system) userdata.img(/data) cache.img(/c ...
- Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img. 2014年10月20日 ⁄ 计算机视觉 ⁄ 共 1 ...
- 解压 Android 系统中的 system.img
本篇文章讲解 system.img 是什么东西,以及它的打包和解包方式 system.img 是什么 system.img 是 Android 系统中用来存放系统文件的镜像 (image) ,文件格式 ...
- 【转】Android出现“Read-only file system”解决办法
原文网址:http://www.111cn.net/sj/android/44496.htm 下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友 ...
- (转载)Android出现“Read-only file system”解决办法
下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友可参考参考. Android-出现Read-only file system的解决方法 输 ...
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
- Android -- Layout布局文件里的android:layout_height等属性为什么会不起作用?
有的时候,我们配置好的布局文件,在加载完成添加到我们的Activity中后发现,并没有安装我们设置的属性来布局,比如我们设置了android:layout_marginTop="100dip ...
- Android系统启动过程[典☆☆☆]
Android系统启动过程 首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用. 启动 ...
- Android系统启动过程【转】
转自:http://www.cnblogs.com/bastard/archive/2012/08/28/2660389.html Android系统启动过程 首先Android框架架构图:(来自网上 ...
随机推荐
- 【BZOJ】【2809】【APIO2012】派遣dispatching
贪心/可并堆 跪了……我这么弱果然还是应该回家种红薯去…… 考虑选人的时候,每个人对答案的贡献其实是一样的,都是1,那么我们就贪心地去选花钱少的就好啦~ 具体的做法:倒着枚举(因为有b[i]<i ...
- 2012 Asia Chengdu Regional Contest
Browsing History http://acm.hdu.edu.cn/showproblem.php?pid=4464 签到 #include<cstdio> #include&l ...
- Winform 打印PDF顺序混乱,获取打印队列
工作中PDF打印顺序混乱着实让我疼痛了好久,其实决绝方法非常简单,但没有想到这个点子的时候确实让我走了很多弯路 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方 ...
- Coding4Fun.Phone.Controls的使用
Coding4Fun.Phone.Controls的使用: windows phone的应用一直有一个特色,那就是方块(磁贴).之前的应用中,我一直都XXXX 来实现,原来其实一直有一个更加好的方法, ...
- 基于jQuery很牛X的批量上传插件
上传功能应该是每个网站必备的工具之一,因此出现了出现了很多各式各样的上传插件! 本文基于个人经验和使用从插件的:交互体验,易用性,文档,美观度出发,为大家推荐三款很NX的批量上传插件! 下面三款插件的 ...
- 批量安装操作系统之cobbler
Cobbler 部署文档 服务端配置 操作系统:Centos6.4 关闭防火墙及 selinux 安装cobbler软件 添加yum源 rpm -Uvh https://dl.fedoraprojec ...
- 在字符串S1中删除字符串S2中所包含的字符
/************************************************************************* > File Name: test.c &g ...
- Unity3D之Assetbundle
原地址: Unity3D之Assetbundle 有几个地方需要注意下 1.如何解决资源重复加载的问题 2.初始化了就直接出现在场景中了 感觉怪怪的 3.标红的地方要注意下 prefab上挂载的脚 ...
- light oj 1393 - Crazy Calendar 博弈论
思路:当移到右下角时,就不能移动了.所以与右下角的奇偶性相同的位置,都不能直接到达,先手必败! 只需考虑与右下角奇偶不同的位置,可以看成NIM博弈.最后NIM和不为0的胜,否者败!! 代码如下: #i ...
- light oj 1140 - How Many Zeroes? 数位DP
思路:dp[i][j]:表示第i位数,j表示是否有0. 代码如下: #include<iostream> #include<stdio.h> #include<algor ...