build_kernel()
{
# 进入源码顶层目录
cd ${BS_DIR_KERNEL} || return
# 编译配置文件
make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return
# 编译内核uImage(arm架构、交叉编译工具)
make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} uImage || return
# 拷贝 uImage 到输出文件夹
cp -v ${BS_DIR_KERNEL}/arch/arm/boot/uImage ${BS_DIR_RELEASE} echo "^_^ kernel path: ${BS_DIR_RELEASE}/uImage" # 进入源码顶层目录
cd ${BS_DIR_TOP} || return
echo 'boot.img ->' ${BS_DIR_RELEASE}
# Make boot.img with ext4 format, 64MB
# 拷贝uImage到boot目录下
cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot
# 使用mkuserimg.sh编译boot下文件为boot.img
mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot
# 将输出的boot.img拷贝到输出文件夹
cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return ; return
} mk脚本之内核编译及boot.img制作
 #!/bin/bash -x
#
# To call this script, make sure make_ext4fs is somewhere in PATH
# 打印信息
function usage() {
cat<<EOT
Usage:
mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE [FILE_CONTEXTS]
EOT
} echo "in mkuserimg.sh PATH=$PATH" ENABLE_SPARSE_IMAGE=
if [ "$1" = "-s" ]; then
ENABLE_SPARSE_IMAGE="-s"
shift
fi
# 判断参数长度 去除-s 5个或6个(可选参数)
if [ $# -ne -a $# -ne ]; then
usage
exit
fi
# 源码树不存在容错
SRC_DIR=$
if [ ! -d $SRC_DIR ]; then
echo "Can not find directory $SRC_DIR!"
exit
fi
# 参数赋值
OUTPUT_FILE=$
EXT_VARIANT=$
MOUNT_POINT=$
SIZE=$
FC=$
# 扩展类型仅支持ext4,其余则打印提示
case $EXT_VARIANT in
ext4) ;;
*) echo "Only ext4 is supported!"; exit ;;
esac
# 挂载点长度为0容错
if [ -z $MOUNT_POINT ]; then
echo "Mount point is required"
exit
fi
# 文件系统长度为0容错
if [ -z $SIZE ]; then
echo "Need size of filesystem"
exit
fi
# 可选参数非零则赋值
if [ -n "$FC" ]; then
FCOPT="-S $FC"
fi
# 编译脚本命令
MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
echo $MAKE_EXT4FS_CMD
$MAKE_EXT4FS_CMD
# 最后执行的命令代码不为0,则执行异常
if [ $? -ne ]; then
exit
fi
mkuserimg.sh脚本之打包

make_ext4fs各参数的含义

make_ext4fs  [ -l <len> ] [ -j <journal size> ] [ -b <block_size> ]
    [ -g <blocks per group> ] [ -i <inodes> ] [ -I <inode size> ]
     [ -L <label> ] [ -f ] [ -a <android mountpoint> ]
     [ -z | -s ] [ -J ]
     <filename> [<directory>]
-------------------------------------------------------------------
-s  就是生成ext4的S模式制作;
-l   314572800  是分区大小;
-a root 是指这个img用于Linux系统若为-a system即表示为android系统,挂载点即是/system。使用这个参数,make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限,如果你刷机以后发现有文件权限不对,可以手工修改android_filesystem_config.h来添加权限,重新编译make_ext4fs,也可以不使用 “-a system”参数,这样就会使用文件的默认权限
./rootfs_qt.img 表示在当前目录下生成镜像文件。
./root 指定源路径。
 
注意:解压和生成"*.img"
1.make_ext4fs  用来制作ext4镜像
2.simg2img  用来将system.img还原来ext4镜像(通过make_ext4fs制作的ext4镜像包含了spare数据,无法以loop方式mount)
simg2img <sparse_image_file> <raw_image_file>
 
修改再编译:

1. $simg2img  system.img  system_old.img

2. $mkdir  system

3. mount -t ext4 -o loop system_old.img system

4. 修改system目录下的文件

5. $./make_ext4fs -s -l 512M -a system system_new.img system    #512M表分区大小 第一个system表示挂载点为/system, 第二个system表示system目录。

6. system_new.img进行烧写

Android源码编译过程之九鼎开发板的更多相关文章

  1. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  2. 【Android开发】构建Android源码编译环境

    原文:http://android.eoe.cn/topic/android_sdk 构建Android源码编译环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  3. Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(二)

    上文简单介绍了BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY编译出来jar包的区别, 那么你如果拿到了一个内容是dex格式的jar包,而你又偏偏需要这个ja ...

  4. 有关android源码编译的几个问题

    项目用到编译环境,与源码有些差异不能照搬,关键是连源码都没编译过,下面基本上是行网上照的各种自学成才的分享,病急乱投医了,都记在下面作为参照吧. 1.验证是否编译正确,在终端执行 emulator & ...

  5. [Android Pro] Android源码编译之Nexus5真机编译

    reference to : http://blog.csdn.net/liu1075538266/article/details/51272398 1.   前言 在Android安全的研究工作中, ...

  6. android源码编译1

    一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- ...

  7. Android源码编译的全过程记录

    写本篇文章主要参考了官方文档和网上的一些资料,但是对于Android最新的代码来说,网上资料有些已经过时.本文中步骤已经作者实验,大家可以亲自执行试试.由于没有使用Eclipse的习惯,所以没有做Ec ...

  8. android.mk android源码编译

    http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...

  9. Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(一)

    一般情况下,在Android源码下编译一个jar包的典型makefile(Android.mk)如下: 在文件中加入以下内容: LOCAL_PATH:= $(call my-dir)#make jar ...

随机推荐

  1. [转贴]C编译过程概述

    http://my.oschina.net/apeng/blog/105245 C 编译过程概述 目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是G ...

  2. 【转并修改】VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试

    转:http://www.cnblogs.com/ShaYeBlog/p/4072074.html VS2013内置了IISExpress.做asp.net MVC的web项目开发时,Ctrl+F5和 ...

  3. 【HDOJ】3047 Zjnu Stadium

    带权并查集. /* 3047 */ #include <iostream> #include <string> #include <map> #include &l ...

  4. WordPress RokIntroScroller插件‘thumb.php’多个安全漏洞

    漏洞名称: WordPress RokIntroScroller插件‘thumb.php’多个安全漏洞 CNNVD编号: CNNVD-201309-383 发布时间: 2013-09-24 更新时间: ...

  5. 通过Microsoft Azure服务设计网络架构的经验分享

    作者 王枫  发布于 2014年4月8日 本文从产品设计和架构角度分享了Microsoft Azure网络服务方面的使用经验,希望你在阅读本文之后能够了解这些服务之间,从而更好地设计你的架构. Mic ...

  6. 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境

     发布于 2013-12-11 作者 Ross Gardler 微软开放技术有限公司 (MS Open Tech) 很高兴地宣布发行新的 Windows Azure Puppet 模块.通过这个模 ...

  7. 【转】linux设备驱动之MMC SD卡——核心层简单分析

    原文网址:http://blog.chinaunix.net/uid-28685940-id-3889878.html /*************************************** ...

  8. Android Loader详解一:概述

    装载器从android3.0开始引进.它使得在activity或fragment中异步加载数据变得简单.装载器具有如下特性: 它们对每个Activity和Fragment都有效. 他们提供了异步加载数 ...

  9. 开源cms

    提起开源cms,大家第一想到的是php的cms,因为php开源的最早,也最为用户和站长们认可,随着各大cms系统的功能的不断完善和各式各样的开源cms的出现,.net和java的高端的cms系统也逐渐 ...

  10. 关于 Unity UGUI 中修改 Mask 组件下 Image 等子节点组件的材质无效的问题

    前几天同事做了一个效果,希望在原本使用了遮罩组件 Mask 的技能图标(让技能图标变成圆形)上在添加一个置灰的功能,但问题来了:因为是动态根据游戏中玩家的条件才动态置灰,以修改 Mask 下子节点 I ...