通过运行 build 目录下的 mk-uboot.sh 脚本,设定选项为 roc-rk3328-cc
编译完后输出:
各个镜像文件的说明如下:
也可以通过以下文件配置 UBOOT :
kernel中需要配置,并定义设备树,会涉及到以下文件:
通过以下命令,完成内核配置,并更新默认配置:
需要注意,在 make menuconfig 时应进行如下配置:
配置好后即可编译整个 kernel (脚本文件内部设置了使用 -j4 来编译):
编译完后输出:
创建一个大小为 20G 的根文件系统映像文件,将 ubuntu core 解压到该映像中,如果不需要安装过多的软件,可以先设置成 2G ,后期再调整。
将 qemu-aarch64-static 放到挂载的 rootfs 的 /usr/bin 中,能在 x86_64 主机系统下 chroot 到该 arm64 文件系统中运行:
用 vim 编辑器打开 sources.list :
chroot 命令用来在指定的根目录下运行指令,在使用 chroot 之后,系统的目录结构将以指定的位置作为 “/” 位置。
在 rootfs 的 root 用户下设置:
退出,并卸载文件系统:
如果想要在创建的根文件系统中安装软件,也可以继续 chroot 到该文件系统中,安装一些常用的软件,比如 "pip" , "numpy" 等,避免复杂的交叉编译环境设置和加快文件系统的成型。
这样 rootfs.img 里就已经有刚才制作的根目录内容了,但这个 img 文件大小却是定义的镜像的大小,不是文件系统的实际大小,所以还要经过一些处理才能发布。
检查并查看rootfs.img镜像的大小:
减小ubuntu.img镜像文件的大小:
把 Linux 根文件系统映像文件 rootfs 放在 out/ 下,这时 out 目录应包含以下文件:
该脚本将根据《存储映射》所描述的布局,将分区映像文件写到指定位置,并最终打包成 out/system.img 。
如下所示的"parameter.txt"就是按照存储映射布局制作的,只添加了几个必不可少的分区。
插入 SD 卡,如果 SD 被自动挂载,则先将其卸载。
安装 pv :
通过检查内核的日志查找 SD 卡的设备文件:
如果设备文件为 /dev/sdb ,使用 dd 命令进行烧录:
如果需要将分区镜像写入到 SD 卡,可以运行以下命令:
也可以运行下面指令,将生成的统一固件 system.img 写入到 SD 卡中:
准备工作编译 Android 对机器的配置要求较高:
64 位 CPU
16GB 物理内存+交换内存
30GB 空闲的磁盘空间用于构建,源码树另外占用大约 8GB
官方推荐 Ubuntu 12.04 *** 作系统,实际上也可以采用更新的 *** 作系统版本,只需要满足 http://source.android.com/source/building.html 里的软硬件配置即可。
编译环境的初始化可参考 http://source.android.com/source/initializing.html 。
安装 JDK 6:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
Ubuntu 12.04 软件包安装:
sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
g++-multilib mingw32 tofrodos gcc-multilib ia32-libs\
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Ubuntu 13.10/14.04 软件包安装:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \
libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \
libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \
xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \
lib32readline-gplv2-dev gcc-multilib libswitch-perl
安装 ARM 交叉编译工具链和编译内核相关软件包:
sudo apt-get install gcc-arm-linux-gnueabihf \
lzop libncurses5-dev \
libssl1.0.0 libssl-dev
下载 默认版 Android SDK
注意:如果你在 2014-12-11 之前下载过源码,请重新到云盘下载并更新。
由于 SDK 比较大,请选择以下云盘之一下载 firefly-rk3288_android4.4_git_20141211.tar.gz :
百度云盘
Google Drive
下载完成后先验证一下 MD5 码:
$ md5sum /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz
8fe99f519d487ff40c8bc7b5ded62887 firefly-rk3288_android4.4_git_20141211.tar.gz
确认无误后,就可以解压:
mkdir -p ~/proj/firefly-rk3288
cd ~/proj/firefly-rk3288
tar xf /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz
git reset --hard
git remote add bitbucket https://bitbucket.org/T-Firefly/firefly-rk3288.git
以后就可以直接从 bitbucket 处更新:
git pull bitbucket master:master
也可以到 https://bitbucket.org/T-Firefly/firefly-rk3288/commits/branch/master 在线浏览源码。
另外,linux-rockchip 社区搭建了 Git 镜像服务器,详见这里。 如果要下载源码,请用以下命令(可选其它镜像服务器):
git clone -b firefly/master git://git.us.linux-rockchip.org/rk3288_r-box_android4.4.2_sdk.git
下载 PAD 版 Android SDK
PAD版SDK是具有PAD特性的SDK,可用于调屏,TP,支持横竖屏显示等。
由于 SDK 比较大,请选择以下云盘之一下载firefly-rk3288_pad_android4.4_git_20141218.tar.gz
百度网盘
Google Drive
下载完成后先验证一下 MD5 码:
$ md5sum /path/to/firefly-rk3288_pad_android4.4_git_20141218.tar.gz
4ba44765fa649bc5cddadd8b349aa8af firefly-rk3288_pad_android4.4_git_20141218.tar.gz
确认无误后,就可以解压: mkdir -p ~/proj/firefly-rk3288_pad
cd ~/proj/firefly-rk3288_pad
tar xf /path/to/firefly-rk3288_pad_android4.4_git_20141218.tar.gz
git reset --hard
git remote add bitbucket https://bitbucket.org/T-Firefly/firefly-rk3288.git
以后就可以直接从 bitbucket 处更新:
git pull bitbucket pad:pad
也可以到 https://bitbucket.org/T-Firefly/firefly-rk3288/commits/branch/pad 在线浏览源码。
编译内核
编译正式版(0930)开发板的内核:
cd ~/proj/firefly-rk3288/kernel
make firefly-rk3288_defconfig
make -j8 firefly-rk3288.img
编译公测版(0809)开发板的内核:
cd ~/proj/firefly-rk3288/kernel
make firefly-rk3288_beta_defconfig
make -j8 firefly-rk3288_beta.img
编译 Android
编译 Android:
cd ~/proj/firefly-rk3288
make -j8
./mkimage.sh
烧写分区映像
上一步骤的 ./mkimage.sh 会重新打包 boot.img 和 system.img, 并将其它相关的映像文件拷贝到目录 rockdev/Image-rk3288/ 中。以下列出一般固件用到的映像文件:
boot.img :Android 的初始文件映像,负责初始化并加载 system 分区。
kernel.img :内核映像。
misc.img :misc 分区映像,负责启动模式切换和急救模式的参数传递。
recovery.img :急救模式映像。
resource.img :资源映像,内含开机图片和内核的设备树信息。
system.img :Android 的 system 分区映像,ext4 文件系统格式。
请参照 如何升级固件 一文来烧写分区映像文件。
如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像即可,这样的好处是使用默认配置即可,不用修改文件的路径。
打包成统一固件 update.img
在 Windows 下打包统一固件 update.img 很简单,按上一步骤将文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录里。
update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。
FTP服务有好多种,本文是使用的vsftp
首先要确定你的电脑上FTP服务的状态,使用如下命令:
sudo service vsftpd status
如果出现如下提示:
Redirecting to /bin/systemctl status vsftpd.service
vsftpd.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
说明你的主机上没有安装ftp服务,这时你就要安装它,请查看第二步:安装ftp。
如果出现如下提示:
Redirecting to /bin/systemctl status vsftpd.service
vsftpd.service – Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.servicedisabled)
Active: inactive (dead)
说明你的ftp服务没开启,此时按照第三步:开启ftp服务。
安装ftp命令:
如果你用的是redhat,fedora,centos等系列linux发行版,那么敲入以下命令:
sudo yum install vsftpd
如果你使用的是debian,ubuntu,linux mint等系列的linux发行版,那么敲入以下命令:
sudo apt-get install vsftpd
然后按照提示,安装就好了。
ftp安装完成后还不能使用,需要配置一下相应的文件才可以。
sudo vim /etc/vsftpd.conf(使用vim在终端打开)
增加:write_enable=YES #允许写入(上传)
设置完成后,我们要给ftp设置用户名和密码才可以访问到它:
设置用户名为myftp:
sudo useradd myftp
设置myftp的密码:
sudo passwd myftp
然后会让你输入两次密码,只要两次密码都一样,就会通过。
在终端敲入以下命令:
sudo service vsftpd start
执行完命令后,用第一步:查看ftp服务状态的命令,如果出现以下提示(有绿色标出来的字体):
vsftpd.service – Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.servicedisabled)
Active: active (running) since Sun 2013-04-07 13:43:11 CST15s ago
Process: 11230 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 11231 (vsftpd)
CGroup: name=systemd:/system/vsftpd.service
└─11231 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
说明你的ftp服务已经启动了。如果失败来的话,那试着卸载一下(看第六步:卸载ftp服务)再安装(第二部:安装ftp服务)。
在另一台电脑或者虚拟机里,使用任何的ftp工具(FlashFXP等)或者直接用ftp命令就可以访问到你主机的ftp了。
ftp://192.168.1.102/
如果你使用的是debian,ubuntu,linux mint等系列的linux发行版,那么敲入以下命令:
sudo apt-get –purge remove vsftpd
就可以卸载了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)