当前位置: 首页 > 编程日记 > 正文

Android源码编译过程之九鼎开发板

 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

相关文章:

eaccelerator 完全手册:配置、控制、API接口

安装官方有很详细的文档 转自 http://www.enjoyphp.com/2010/eaccelerator-manual/ 配置选项 eaccelerator.shm_size指定 eAccelerator 能够使用的共享内存数量&#xff0c;单位: MB. “0″ 代表操作系统默认。默认值为 “0″。 eaccelerator.cache_dir用户磁盘缓存的目录。eAc…

iOS解决键盘阻挡输入框

解决思路&#xff1a;有时用户编辑输入框时&#xff0c;键盘会遮挡输入框&#xff0c;这时候只要将视图整体上移键盘的高度即可&#xff0c;编辑完成后再将视图下移键盘的高度恢复正常显示。 【方法1】 实现UITextField代理UITextFieldDelegat的两个方法textFieldShouldBegin…

HBASE_API的应用

实验 目的 要求 目的&#xff1a; 掌握HBase编程&#xff1b;搭建HBase编程环境&#xff1b;配置Myeclipse引入对应的jar包&#xff1b; 实 验 环 境 Java jdk 1.8&#xff1b;apache-maven-3.6.0&#xff1b;Myeclipse C10&#xff1b;Hadoop集群&#…

Linux进程间通信--信号

signal 一、初步理解信号 为了理解信号 ,先从我们最熟悉的场景说起: 1.用户输入命令,在Shell下启动一个前台进程。 2.用户按下Ctrl-C,这个键盘输入产生一个硬件中断。 3.如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到…

如何优化cocos2d程序的内存使用和程序大小:第一部分

译者&#xff1a; 在我完成第一个游戏项目的时候&#xff0c;我深切地意识到“使用cocos2d来制作游戏的开发者们&#xff0c;他们大多会被cocos2d的内存问题所困扰”。而我刚开始接触cocos2d的时候&#xff0c;社区里面的人们讨论了一个非常有意义的话题&#xff1a;“请简单地…

UILayer的一些属性

iOS创建UIView是直接在Core Animation layers上进行绘制&#xff0c;每一个UIView实例都会自动创建CALayer的实例&#xff0c;并且设置为UIView实例的layer属性。 以下事例通过设置UIImageView的layer&#xff0c;实现阴影、圆角、边框和旋转缩放等效果 -(void)initImgView{UI…

Hive的基本应用

实验 目的 要求 目的&#xff1a; 了解Hive架构&#xff0c;掌握Hive环境部署&#xff1b;了解Hive与Hadoop及传统关系型数据库的对比&#xff1b;掌握Hive中DDL和DML的使用&#xff1b;了解Hive高级应用&#xff1b;Hive内置函数使用及Hive自定义函数&#xff1b;了解Hive常…

template

//引入包<script type"text/javascript" src../template.js></script> //定义一个有ID的script标签&#xff1a;<script idtem type"text/html"> <h4>{{name}}</h4> <ul> {{each films as value}} <li> <str…

UICollectionView的基本使用(1)

如果是简单实用UICollectionView的话&#xff0c;用法和UITableView基本一致。下面是用UICollectionView实现的简单图片显示 &#xff08;1&#xff09;打开storyboard&#xff0c;将一个UICollectionView拖到View Controller Scene中&#xff0c;默认的UICollectionView已经包…

SQL Server的数据库连接的极限在哪儿?

在软件设计中&#xff0c;关于多层的设计&#xff0c;有一部份是有关数据库的。 设计上分成这样三层 客户端UI -- 应用服务器 -- 数据库服务器 有个说法是&#xff0c;可以在应用服务器这一层共享使用数据库连接池&#xff0c;从而减轻数据库服务器的负担。 我查了好多资料&…

Docker的使用(五:Docker中的网络与数据管理)

实验环境 三台运行有Ubuntu 16.04 操作系统的虚拟机&#xff0c;并每台主机中已安装docker环境&#xff1b; 学习目标 docker的网络管理docker Swarm集群的使用Volume数据卷的使用 实验内容 任务一&#xff1a;Docker网络管理 1、Docker默认网络管理 docker安装时自动创建…

Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

在Junit4中还有的测试注解有&#xff1a; BeforeClass &#xff0c;Before&#xff0c;Test&#xff0c;After&#xff0c;AfterClass 1、其中&#xff1a;BeforeClass&#xff0c;AfterClass是Junit4中新添加进去的 2、如果Run as --->Junit Test&#xff0c;运行含有Test…

iOS开发流程总结

本文由社区会员umyueyue分享 以下是会员umyueue总结的iOS开发流程以及学习中的资料分享。 流程&#xff1a;注册、开发、真机测试、发布以及上线。 iPhone iOS 4从注册到app上线开发流程 http://blog.csdn.net/linzhiji/article/details/6732868 一、关于注册账号IDP和Apple ID…

(2)iOS用UICollectionView实现Gallery效果

本文主要实现&#xff1a; &#xff08;1&#xff09;用UICollectionView显示一组图片 &#xff08;2&#xff09;左右滑动来浏览所有图片 &#xff08;3&#xff09;图片自动对齐到网格&#xff08;即滑动停止后中间的图片对齐到正中位置&#xff09; &#xff08;4&#…

Docker的使用(docker pull拉取镜像失败问题解决)

在docker拉取Nginx镜像过程中&#xff0c;速度慢&#xff0c;或者不成功 报错代码&#xff1a; Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting hea…

java,js,jstl,EL的简单交互

EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能。 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素。 JSP标准标记库&#xff08;jsp staandard tag library&#xff0c;jstl&#xff09;是一个实现web应用程序常用功能的定制…

iOS UICollectionView实现瀑布流(3)

前面两篇Blog简单的介绍了UICollection的基本使用并实现了类似Android的Gallery效果&#xff0c;这篇文章使用UICollection来实现瀑布流效果&#xff0c;代码主要是在极客学院Carol老师的视频&#xff0c;并在提供的demo下直接修改代码&#xff0c;进行屏幕适配&#xff0c;最终…

LevelDb系列之简介

说起LevelDb也许您不清楚&#xff0c;但是如果作为IT工程师&#xff0c;不知道下面两位大神级别的工程师&#xff0c;那您的领导估计会Hold不住了&#xff1a;Jeff Dean和Sanjay Ghemawat。这两位是Google公司重量级的工程师&#xff0c;为数甚少的Google Fellow之二。 Jeff De…

Spark集群启动时worker节点启不起来

在spark集群中使用命令&#xff1a; sbin/start-all.sh 启动集群时报错&#xff1a; starting org.apache.spark.deploy.master.Master, logging to /home/yxk/cluster/spark/logs/spark-yxk-org.apache.spark.deploy.master.Master-1-linux.out yxklinuxs password: linux:…

XML xmlns

xmlns xml namespaces 参考 http://www.w3school.com.cn/tags/tag_prop_xmlns.asp http://www.w3school.com.cn/xml/xml_namespaces.asp <table><tr>这是一行</tr> </table><table><material>黄花梨</material> </table> 放到…

StarlingMVC简介,原理解说及示例源码

StarlingMVC简介 StarlingMVC是一个为使用Starling来开发游戏的MVC框架。这个框架的特性方面&#xff0c;很像Swiz和RobotLegs&#xff0c;原理亦像Mate。其特性列表如下&#xff1a; 依赖注入(DI)/控制反转(IOC)视图代理(View Mediation)事件捕获(Event Handling)非侵入性框架…

iOS调用系统相机文字改为中文

只要把这里改成China&#xff1a;

微服务项目的整合与测试

实验目的 掌握微服务项目的整合使用 掌握Swagger-UI的简单使用 练习内容 1、微服务项目整合 1.1、项目预览 1.1.1、在 https://github.com/shi469391tou/microservice-mallmanagement.git 地址下载&#xff0c;并导入Myeclipse中&#xff1b; 1.1.2、查看项目的结构 1.2、…

mysql单表多timestamp的current_timestamp设置问题

一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 原因是当你给一个timestamp设置为on update current_time…

iOS 关于Blocks

*本文参考了《Objective-C高级编程 iOS与OSX多线程和内存管理》一书&#xff0c;关于Block的介绍摘取自此书。 Objective-c 语言中Block语法格式为&#xff1a; 返回值类型 参数列表 表达式 c语言中的函数语法格式为 返回值类型 函数方法名 参数列表 表达式 从上面的…

一步步写STM32 OS【二】环境搭建

一、安装IAR for ARM6.5 二、新建工程 1、选择处理器&#xff1a;STM32F407VG&#xff0c;暂不使用FPU2、必要的路径配置和宏定义3、使用SWO重定向IO输出4、使用ST-LINK仿真器5、下载配置6、设置CPU频率&#xff0c;防止SWO输出乱码三、代码调试 四、工程下载 stepbystep_stm32…

微服务项目的部署

练习目标 掌握Docker Compose编排工具的使用掌握微服务项目与Docker的整合方式掌握微服务项目的部署方式 项目整合参考&#xff1a;https://blog.csdn.net/qq_37823605/article/details/91379272 练习内容 1、Docker Compose编排工具 1.1、Docker Compose的安装与卸载 1.1…

CSS 布局:40个教程、技巧、例子和最佳实践

前言&#xff1a; 布局是WEB开发一个重要的课题&#xff0c;进入XHTML/CSS后&#xff0c;使用TABLE布局的方式逐渐淡出&#xff0c;CSS布局以众多优点成为主流&#xff0c;本文将介绍40个基于CSS的web布局的资源和教程。文章的出处在http://www.noupe.com/css/css-layouts-40-t…

【仿去哪儿登录】UITextField输入时检查输入框是否为空

APP登录时&#xff0c;一般是是等用户输入完账号和密码后才去检查是否为空&#xff0c;而去哪儿登录时&#xff0c;在账号和密码的输入过程中&#xff0c;只要当账号和密码其一为空时&#xff0c;登录按钮立即变成不可用&#xff08;图1&#xff09;&#xff0c;只有账号和密码…

sql排名语句

查询全部 select dwmc,pjdf,row_number() over(order by pjdf desc) as paiming from Sab_hhb_zhb inner join jgdx on jgdx.midSab_hhb_zhb.mid查询单个select paiming from (select mid,pjdf,row_number() over(order by pjdf desc) as paiming from Sab_hhb_zhb ) Sab_hhb_z…