目标是在pcDuino的外置TF卡上运行BusyBox,主要有三方面的工作:
- 编译Linux内核,U-Boot 和BusyBox
- 打造根文件系统
- 烧写TF卡
编译Linux内核和U-Boot
参见英文的官方指南 http://www.pcduino.com/?p=957想看中文的 http://www.oschina.net/question/1174645_120733
我的步骤有一点点不同,直接用apt-get安装了交叉编译器, 另外还安装了libusb和pkg-config.sudo apt-get install g++-arm-linux-gnueabihfsudo apt-get install libusb-1.0-0-devsudo apt-get install pkg-config编译过程很顺利,得到了pcduino_a10_hwpack_YYYYMMDD.tar.xz, 里面包括Linux内核和U-Boot
编译BusyBox
获取BusyBox 1.21.1源码 http://www.busybox.net/
用 "make menuconfig" 进行配置,注意有两个选项比较重要:
Build BusyBox as a static binary (no shared libs) =》 把这个选上,不用动态链接库
Cross Compiler prefix =》 我输入的是: arm-linux-gnueabihf-
其它的用缺省即可。
打造根文件系统
根文件系统基于BusyBox的编译结果打造,参考 http://www.linuxidc.com/Linux/2013-04/83606p3.htm
我的不同点在于:
没有inittab文件
没有安装glbc库
手工创建了设备文件tty,请参考BusyBox的 examples/bootfloppy目录下mkdevs.sh
烧写TF卡
参见英文的官方指南 http://www.pcduino.com/?p=653 ,注意需要将根文件系统拷贝到 /dev/mmcblk0p2,推荐使用pcDuino内置的Lubuntu来烧写TF卡。
测试
将烧写完毕的TF卡插到pcDuino, 在console窗口可以看到BusyBox成功启动。
/etc # ls /
bin etc lost+found sbin
dev linuxrc proc sys
/etc # uname -a
Linux (none) 3.4.29+ #1 PREEMPT Wed Oct 9 19:42:30 CST 2013 armv7l GNU/Linux
/etc # cat /proc/cpuinfo
Processor : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 383.38
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part : 0xc08
CPU revision : 2
Hardware : sun4i
Revision : 0000
Serial : 0000000000000000