Tiny210 从源代码开始创建Android

友善之臂的开发板手册上提供了从源代码开始创建Android的两个脚本:build-android,genrootfs.sh  以及使用制作yaffs2格式的文件系统映像

1.build-android

     1	#!/bin/bash
     2	
     3	if [ ! -e "./jdk1.6.0_23" ]; then 
     4	    tar xzf jdk1.6.0_23.tar.gz
     5	fi
     6	
     7	tar xzf symlinks.tgz
     8	
     9	# if [ -e "../Android-2.2-apps/" ]; then
    10	#      cd ../Android-2.2-apps/
    11	#     ./apply_patch.sh
    12	#     cd -
    13	# fi
    14	
    15	export PATH=$PWD/jdk1.6.0_23/bin:$PATH
    16	. setenv
    17	make -j$CPU_JOB_NUM || exit 1
    18	
    19	# if [ -e "../Android-2.2-apps/" ]; then
    20	#      cd ../Android-2.2-apps/
    21	#      ./build-apps
    22	#      cd -
    23	# fi
    24	
    25	exit 0

这个用到了setenv脚本

     1	#!/bin/bash
     2	
     3	CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}')
     4	
     5	PRODUCT='full_mini210'
     6	
     7	source build/envsetup.sh
     8	
     9	TARGET_PRODUCT=$PRODUCT
    10	TARGET_SIMULATOR=false
    11	TARGET_BUILD_TYPE=release
    12	TARGET_BUILD_VARIANT=eng
    13	
    14	export PATH TARGET_PRODUCT TARGET_SIMULATOR TARGET_BUILD_TYPE TARGET_BUILD_VARIANT
    15	

2.genrootfs.sh  

主要是文件系统的打包。

1.将编译好的文件复制到rootfs_dir,并修改文件属性

2.建立linux文件设备节点

3.安装 prebuilt packages

4.安装内核模块与固件 

     1	#!/bin/sh
     2	
     3	PRODUCT=smdkv210
     4	
     5	echo -n "Generating rootfs for Android..."
     6	rm -fr rootfs_dir
     7	cp -a out/target/product/${PRODUCT}/root/ rootfs_dir 
     8	cp -a out/target/product/${PRODUCT}/system/* rootfs_dir/system
     9	cp -a out/target/product/${PRODUCT}/data/* rootfs_dir/data
    10	chown root:root rootfs_dir -R
    11	chmod 755 rootfs_dir/system/etc/dhcpcd/dhcpcd-run-hooks
    12	chown 1014:2000 rootfs_dir/system/etc/dhcpcd/dhcpcd-hooks -R
    13	chown 1000:1000 rootfs_dir/data -R
    14	echo "...done"
    15	
    16	function mvapk()
    17	{
    18		mv $1 rootfs_dir/mnt/apps
    19		echo "    $1"
    20	}
    21	
    22	if [ "${PRODUCT}" = "smdkv210" ]; then
    23		echo -n "Create device file..."
    24		mkdir rootfs_dir/dev/input
    25		mknod rootfs_dir/dev/tty c 5 0
    26		mknod rootfs_dir/dev/console c 5 1
    27		mknod rootfs_dir/dev/fb0 c 29 0
    28		mknod rootfs_dir/dev/pointercal c 10 119
    29		mknod rootfs_dir/dev/input/event1  c 13 65
    30		mknod rootfs_dir/dev/ts-if c 10 185
    31		mknod rootfs_dir/dev/touchscreen c 10 180
    32		mknod rootfs_dir/dev/touchscreen-1wire c 10 181
    33		mknod rootfs_dir/dev/s3c2410_serial0 c 204 64
    34		mknod rootfs_dir/dev/s3c2410_serial3 c 204 67
    35		echo "...done"
    36	
    37		echo -n "Install prebuilt packages..."
    38		if [ -f vendor/samsung/common/busybox-bin.tgz ]; then
    39			tar xf vendor/samsung/common/busybox-bin.tgz -C rootfs_dir/system
    40			ln -sf /system/busybox/bin/busybox rootfs_dir/system/bin/sh
    41			mkdir -p rootfs_dir/bin && ln -sf /system/busybox/bin/sh rootfs_dir/bin/sh
    42		fi
    43		if [ -f vendor/samsung/common/iwtools-bin.tgz ]; then
    44			tar xf vendor/samsung/common/iwtools-bin.tgz -C rootfs_dir/system/bin
    45		fi
    46		echo "...done"
    47	
    48		echo -n "Install kernel modules and firmware..."
    49		if [ -f vendor/samsung/smdkv210/firmware.tgz ]; then
    50			tar xf vendor/samsung/smdkv210/firmware.tgz -C rootfs_dir/system/etc
    51		fi
    52		if [ -f vendor/samsung/smdkv210/kernel-modules.tgz ]; then
    53			tar xf vendor/samsung/smdkv210/kernel-modules.tgz -C rootfs_dir/system/lib
    54			find rootfs_dir/system/lib/modules/ -name modules.* \
    55					-o -name source -o -name build | xargs rm -rf
    56		fi
    57		echo "...done"
    58	
    59		echo -n "Install proprietary-open files..."#友善的东西我没有找到这个包。
    60		[ -f FriendlyARMData.tgz ] && tar xf FriendlyARMData.tgz -C rootfs_dir
    61		echo "...done"
    62	
    63	
    64	    cp vendor/friendly-arm/mini210/rootdir/* rootfs_dir/ -af
    65	
    66		chown 1000:1000 rootfs_dir/data/app -R
    67		chmod 775 rootfs_dir/data/app
    68		chmod 664 rootfs_dir/data/app/*.apk
    69	
    70	    find rootfs_dir/ -name CVS -type d  | xargs rm -rf
    71	fi
    72	

3.制作yaffs2格式的文件系统映像

         使用mkyaffs2image-128M工具,可以把目标文件系统目录制作成yaffs2格式的映像文件,当它被烧写入Nand Flash中启动时,整个根目录将会以yaffs2文件系统格式存在,缺省的Android内核已经支持该文件系统,在命令行输入:

#cd /opt/FriendlyARM/mini6410/android/Android-2.3
#mkyaffs2image-128M rootfs_dir rootfs_android.img

将会在当前目录下生成rootfs_android.img文件,
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值