1 build_kernel()
 2 {
 3         # 进入源码顶层目录
 4         cd ${BS_DIR_KERNEL} || return 1
 5         # 编译配置文件
 6         make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} || return 1
 7         # 编译内核uImage(arm架构、交叉编译工具)
 8         make -j${threads} ARCH=arm CROSS_COMPILE=${BS_CROSS_TOOLCHAIN_KERNEL} uImage || return 1
 9         # 拷贝 uImage 到输出文件夹
10         cp -v ${BS_DIR_KERNEL}/arch/arm/boot/uImage ${BS_DIR_RELEASE}
11
12         echo "^_^ kernel path: ${BS_DIR_RELEASE}/uImage"
13
14         # 进入源码顶层目录
15         cd ${BS_DIR_TOP} || return 1
16         echo 'boot.img ->' ${BS_DIR_RELEASE}
17         # Make boot.img with ext4 format, 64MB
18         # 拷贝uImage到boot目录下
19         cp -v ${BS_DIR_RELEASE}/uImage ${BS_DIR_TARGET}/boot
20         # 使用mkuserimg.sh编译boot下文件为boot.img
21         mkuserimg.sh -s ${BS_DIR_TARGET}/boot ${BS_DIR_TARGET}/boot.img ext4 boot 67108864
22         # 将输出的boot.img拷贝到输出文件夹
23         cp -av ${BS_DIR_TARGET}/boot.img ${BS_DIR_RELEASE} || return 1;
24
25         return 0
26 }
27
28 mk脚本之内核编译及boot.img制作

 1 #!/bin/bash -x
 2 #
 3 # To call this script, make sure make_ext4fs is somewhere in PATH
 4 # 打印信息
 5 function usage() {
 6 cat<<EOT
 7 Usage:
 8 mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE [FILE_CONTEXTS]
 9 EOT
10 }
11
12 echo "in mkuserimg.sh PATH=$PATH"
13
14 ENABLE_SPARSE_IMAGE=
15 if [ "$1" = "-s" ]; then
16   ENABLE_SPARSE_IMAGE="-s"
17   shift
18 fi
19 # 判断参数长度 去除-s 5个或6个(可选参数)
20 if [ $# -ne 5 -a $# -ne 6 ]; then
21   usage
22   exit 1
23 fi
24 # 源码树不存在容错
25 SRC_DIR=$1
26 if [ ! -d $SRC_DIR ]; then
27   echo "Can not find directory $SRC_DIR!"
28   exit 2
29 fi
30 # 参数赋值
31 OUTPUT_FILE=$2
32 EXT_VARIANT=$3
33 MOUNT_POINT=$4
34 SIZE=$5
35 FC=$6
36 # 扩展类型仅支持ext4,其余则打印提示
37 case $EXT_VARIANT in
38   ext4) ;;
39   *) echo "Only ext4 is supported!"; exit 3 ;;
40 esac
41 # 挂载点长度为0容错
42 if [ -z $MOUNT_POINT ]; then
43   echo "Mount point is required"
44   exit 2
45 fi
46 # 文件系统长度为0容错
47 if [ -z $SIZE ]; then
48   echo "Need size of filesystem"
49   exit 2
50 fi
51 # 可选参数非零则赋值
52 if [ -n "$FC" ]; then
53     FCOPT="-S $FC"
54 fi
55 # 编译脚本命令
56 MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
57 echo $MAKE_EXT4FS_CMD
58 $MAKE_EXT4FS_CMD   # 最后执行的命令代码不为0,则执行异常
59 if [ $? -ne 0 ]; then
60   exit 4
61 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进行烧写

转载于:https://www.cnblogs.com/pokerface/p/5740162.html

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源码编译环境 123456789 10 11 12 13 14 15 16 17 18 $ su ...

  3. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  4. Android源码编译(基于Ubuntu18.0.4)

    文章目录 一.环境搭建 硬件要求 软件要求 操作系统和 JDK 主要软件包 软件安装 Git安装 repo工具安装 安装 openJDK 8 其他依赖安装 二.源码下载 建立源码文件夹 初始化仓库 源 ...

  5. Android 源码编译 及 mk文件解读

    Android 源码编译 参考:探索Android FrameWork底层开发视频_哔哩哔哩_bilibili 基础 1.源代码编译 分为2个部分: (1)boot/Kernel (2)Android ...

  6. Android 源码编译及常见错误及解决方法

    Android 源码编译及常见错误及解决方法 参考文章: (1)Android 源码编译及常见错误及解决方法 (2)https://www.cnblogs.com/kyyblabla/p/360393 ...

  7. android源码编译出错的原因

    (1)gcc的版本过高,由于android源码编译要求为4.3,如果你的gcc版本为4.4,那你的编译可能会失败的!我的系统是ubuntu 10.04,默认的gcc版本为4.4,gcc-4.4太严格, ...

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

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

  9. Android 源码编译技巧--模块清理

    参考之前的 Android 源码编译技巧–模块编译_南国樗里疾的博客-CSDN博客 https://blog.csdn.net/weixin_44021334/article/details/1069 ...

最新文章

  1. 我们与Datawhale的故事!
  2. JMS配置说明-----activeMQ-5.6
  3. python 代码-Python Insider
  4. linux结束ping进程,linux常用命令
  5. PHP源码分析-数组
  6. x86汇编-1(第三章—第四章)虚拟硬盘基本信息,虚拟硬盘的写入,bochs调试
  7. 国内SAP从业者们2020年最想学习的SAP相关知识分类的调查问卷结果
  8. 深入浅出React Native 1: 环境配置
  9. 算法学习——动态规划之装载问题
  10. SAP License:一位在ERP行业从业九年的经验总结
  11. Bailian4071 查找出现了k次的字符【字符串】
  12. 程序员须掌握的大数据分析核心技术
  13. PyTorch:tensor-数学API
  14. 简单操作去除PDF文件
  15. Spring Aop 报错 ...but was actually of type 'com.sun.proxy.$Proxy**'的解决方案
  16. 实习测试的一个月总结与心得
  17. 使用python进行微博登陆
  18. 学习javascript这一篇就够了超详细笔记(建议收藏)上
  19. 从网上下载一个vue项目,跑起来的全过程
  20. 【Excel】Excel中实现中文转拼音(自定义函数方式)

热门文章

  1. Winograd,GEMM算法综述(CNN中高效卷积实现)(下)
  2. server sql 数据c盘迁移d盘_oracle 11g dbf数据文件从C盘迁移到D盘
  3. javascript的Math对象和全局函数
  4. Tensor VS NumPy
  5. 机器学习中的数学基础:(1)实际应用中矩阵特征值与特征向量的几何意义
  6. 【camera】自动驾驶感知系统实现(车道线检测和拟合、目标检测与跟踪、道路可行驶区域分割、深度估计、图像视野到BEV空间映射、像平面到地平面映射)
  7. Halcon 点云拟合平面并获取单位法向量及位姿
  8. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集
  9. xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方法
  10. request中的内容存储_宜信开源|调用链系列(3):解读UAVStack中的调用链技术...