博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ramdisk 在android中的使用
阅读量:3522 次
发布时间:2019-05-20

本文共 1018 字,大约阅读时间需要 3 分钟。

boot.img使用kernel和out/target/product/xxx/root目录打包而成(广义的ramdisk),也就是说,boot.img是由kernel和ramdisk.img生成得到。

ramdisk中包含一些对于启动android的很重要的文件,比如内核启动完后,加载的第一个进程init,一些重要的配置文件等,总之它控制着整个android的启动。

 ramdisk的使用有两种方法:1,编译进内核;2,将ramdisk单独烧写
1,编译进内核
将ramdisk解压,可以看到它里面有很多文件和目录,如:data,dev,proc,sbin,sys,system,default.prop,init,init.rc等,有点像板子跑起来的根目录.将解压出来的文件夹重命名为root,放到linux内核代码的根目录下,并用make menuconfig配置启动这个root文件夹,配置保存后会生成如下项:
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="root"
CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
这些也可以直接在xxxx_defconfig改,然后make xxxx_defconfig使其生效.
这样做了以前,root将被编译进zImage,并随之一起烧进板子.
2,将ramdisk单独烧写
也可以将ramdisk作为一个单独的包烧写,就烧在zImage的后面.假如zImage烧在0x600000,那么ramdisk就烧在0x800000就好.值得注意的是,ramdisk在烧写之前要进行一次转换.因为bootloader在运行的时候,会将ramdisk从FLASH加载到RAM中,它会把FLASH上0x800000-0x880000的空间作为ramdisk读取,并检查其最后四个字节,这四个字节保存的是ramdisk.img的实际大小.所以我们要做的转换工作就是把原来的ramdisk.img(100多字节)转换成512字节,并在其最后四个字节写ramdisk.img的实际长度.最后在bootloader中写程序把ramdisk加载到RAM.同时.config中的配置项只要:
CONFIG_BLK_DEV_INITRD=y

CONFIG_INITRAMFS_SOURCE=""

转载地址:http://ahqqj.baihongyu.com/

你可能感兴趣的文章
Java基础入门 GridLayout
查看>>
JavaEE Bean的两种常用作用域 singleton(单例)和prototype(原型)
查看>>
MySQL 数据库索引
查看>>
JavaEE Spring与MyBatis的整合之传统DAO方式整合(教材学习笔记)
查看>>
JavaEE MyBatis与Spring的整合——基于mapper接口方式开发(教材学习笔记)
查看>>
JavaWeb 使用Cookie实现——显示用户上次访问时间(教材学习笔记)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(五)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(六)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(七)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(八)
查看>>
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-3 中位数
查看>>
Java发送邮件 注册成功发送邮件
查看>>
Mybatis的简单使用(增删改查),解决数据库字段名和实体类映射属性名不一致的问题
查看>>
Mybatis配置log4j文件 分页查询(limit,rowBounds)
查看>>
Mysql利用注解进行开发
查看>>
Mybatis一对多查询,多对一查询
查看>>
Spring配置bean.xml文件的头目录模板
查看>>
代理模式之------动态代理
查看>>
Spring实现AOP的三种方式
查看>>
Mybatis-Spring简单的配置和使用,配置事务
查看>>