今天,花了一天的时间去摸索Cubieboard2的内核编译,总算是编译成功了。
首先,环境要求:
1.主机操作系统:请务必使用 Ubuntu12.04 64 位操作系统,否则会出现未知的编译错误
2.搭建一个交叉编译环境,在 Ubuntu12.04 主机上安装必要的交叉编译工具链和软件包:
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install ia32-libs
$sudo apt-get install ncurses-dev
$sudo apt-get install build-essential git u-boot-tools
$sudo apt-get install texinfo texlive ccache zlib1g-dev gawk bison flex gettext uuid-dev
$sudo apt-get install build-essential u-boot-tools uboot-mkimage
$sudo apt-get install binutils-arm-linux-gnueabihf gcc-arm-linux-gnueabi
$sudo apt-get install gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf
$ sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev
$sudo apt-get install git wget fakeroot kernel-package zlib1g-dev libncurses5-dev
3.安装ewline">安装fex2bin/bin2fex 工具
$ git clone https://github.com/cubieboard/sunxi-tools
$ cd sunxi-tools
$ make
$ sudo cp fex2bin bin2fex /usr/bin
4.从Github上获取源码
$ mkdir linux-sdk-card
确保这个文件夹为普通用户权限
$ cd linux-sdk-card
1.下载内核源码:
$ git clone https://github.com/cubieboard/linux-sdk-kernel-source.git
重命名仓库名称:
$ mv linux-sdk-kernel-source linux-sunxi
这个内核由 cubietech 维护,版本为 3.4.79,会不定时 merge 社区的提交
2.下载打包固件脚本相关源码:
$ git clone https://github.com/cubieboard/linux-sdk-card-tools.git
重命名仓库名称:
$ mv linux-sdk-card-tools tools
主要是打包固件的脚本文件和环境变量,
3.下载发行版的配置文件
$ git clone https://github.com/cubieboard/linux-sdk-card-products.git
重命名仓库名称:
$ mv linux-sdk-card-products products
包含了官方支持固件的配置和属性,主要是板子的一些具体的配置
4.下载发行版的文件系统和 uboot 文件:
直接访问链接: http://pan.baidu.com/s/1i3nALZf ,下载文件系统和 U-boot
这个仓库主要存放的是发型版的文件系统和 U-boot 二进制文件
• U-boot Bin :包含了 A10 和 A20 的 U-boot bin 文件,下载完后解压到 SDK/binaries
• Cubieez : debian 桌面发型版 Debian Server : debian 命令行版 把文件系统也放在Binaries,
这里我选择:cubieez-lxde-20140916.tar.gz
然后 linux-sdk-card中的各级目录如下:binaries linux-sunxi products tools
其次,开始编译:
$ cd linux-sdk-card
$ source tools/scripts/envsetup.sh
会出现选择板子配置的界面,我选择CB2和cubieez,即1和0。
接着,source tools/scripts/envsetup.sh,就开始编译整个系统了。
当出现make: Leaving directory `/home/luobs/cubieboard/linux-sdk-card/linux-sunxi'表示编译完成
接着,就可以烧写镜像到TF卡了:
编译 tf 卡刷写 nand/tsd flash 的启动卡
$cb_build_flash_card_image
编译内核和打包文件系统
$cb_install_flash_card nand sdb pack
当出现表示成功了:
luobs@baony10-GAMING:~/cubieboard/linux-sdk-card$ cb_install_flash_card nand sdb pack
cp: cannot stat 鈥home/luobs/cubieboard/linux-sdk-card/binaries/card_flash_nand_rootfs.tar.gz鈥 No such file or directory
cp: cannot stat 鈥home/luobs/cubieboard/linux-sdk-card/binaries/card_flash_rootfs.tar.gz鈥 No such file or directory
鈥home/luobs/cubieboard/linux-sdk-card/build/cb2/cb2-cubieez/linux/arch/arm/boot/uImage鈥-> 鈥tmp/sdc1/uImage鈥
鈥home/luobs/cubieboard/linux-sdk-card/products/cb2/cb2-cubieez/configs/nand/uEnv-mmc.txt鈥-> 鈥tmp/sdc1/uEnv.txt鈥
Check ok: /dev/sdb
254+1 records in
254+1 records out
260980 bytes (261 kB) copied, 0.0582744 s, 4.5 MB/s
Build successfully
mount ok
鈥home/luobs/cubieboard/linux-sdk-card/output/cb2/cb2-cubieez/rootfs.tar.gz鈥-> 鈥tmp/sdc2/rootfs.tar.gz鈥
mkdir: created directory 鈥tmp/sdc2/bootfs鈥
鈥home/luobs/cubieboard/linux-sdk-card/build/cb2/cb2-cubieez/linux/arch/arm/boot/uImage鈥-> 鈥tmp/sdc2/bootfs/uImage鈥
鈥home/luobs/cubieboard/linux-sdk-card/products/cb2/cb2-cubieez/configs/nand/uEnv-nand.txt鈥-> 鈥tmp/sdc2/bootfs/uEnv.txt鈥
cp ok
tar: /home/luobs/cubieboard/linux-sdk-card/output/cb2/cb2-cubieez/card_flash_nand_rootfs.tar.gz: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
cp: missing destination file operand after 鈥tmp/sdc2/bootfs/u-boot.bin鈥
Try 'cp --help' for more information.
鈥home/luobs/cubieboard/linux-sdk-card/products/cb2/cb2-cubieez/configs/nand/install.sh鈥-> 鈥tmp/sdc2/bin/install.sh鈥
tar ok
ddsize=1767 !
1767+0 records in
1767+0 records out
1852833792 bytes (1.9 GB) copied, 99.2337 s, 18.7 MB/s
至此,整个A20的编译过程就完成了。
若有疑问,请参考A10&A20 Linux卡固件SDK使用说明。