conway 发表于 2015-4-11 23:40:05

Buildroot制作根文件系统过程(基于MYD-AM335X开发板)

buildroot的功能很强大,可以利用它制作交叉编译工具链、根文件系统,甚至可以构建多种嵌入式平台的bootloader、linux。下面以米尔科技的MYD-AM335X平台为例展示如何利用buildroot制作自己所需的根文件系统。

一、到官网下载源码:http://buildroot.uclibc.org/downloads/ 我这里选用的是buildroot-2014.05.tar.bz2。

二、解压:
$ tar xjf buildroot-2014.05.tar.bz2
$ cd buildroot-2014.05/


三、配置:
$ make menuconfig

1、进入Target options--->选项,设置目标架构。AM335x的CPU基于ARM的cortex-A8,为了使文件系统充分利用其硬件浮点特性,Target ABI选项中选上EABIhf,当然这还要取决于所使用的交叉编译工具是否支持该EABIhf,比较旧的交叉编译工具可能不支持。

Target options--->
      Target Architecture (ARM (little endian))--->          Target Architecture Variant (cortex-A8)--->
      Target ABI (EABIhf)--->
      Floating point strategy (VFPv3-D16)--->
      ARM instruction set (ARM)--->

2、设置编译文件系统所用的交叉编译工具。可以采用已存在的或着buildroot在编译过程中自己制作的交叉编译工具,为了缩短编译时间,这里采用已存在的交叉编译工具。
进入Toolchain选项:
Toolchain--->
      Toolchain type (External toolchain)--->   (设定采用自己定义的交叉编译工具)
      Toolchain (Custom toolchain)--->
      Toolchain origin (Pre-installed toolchain)--->
      (/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux) Toolchain path         (设定自定义交叉编译工具的路径)
      (arm-linux-gnueabihf) Toolchain prefix      (设置toolchain的前缀)
      External toolchain kernel headers series (3.2.x)--->    (最好选用与平台所用的linux版本一致的headers,具体还要看交叉编译工具是否支持)
      External toolchain C library (glibc/eglibc)--->       (选择自定义交叉编译工具所用的C库)
      [*] Toolchain has C++ support?


3、系统配置,特别要注意的是要根据特定平台选用正确的TTY port。
System configuration--->      
      [*] Run a getty (login prompt) after boot      
                getty options--->
                            (ttyO0) TTY port                  (设置成debug串口的设备节点)
                                          Baudrate (115200)--->
                            (vt100) TERM environment variable
4、Target packages---> :   按自己需求增加或裁剪Target packages,里面包含了很多常用的库和工具,包括常用的busybox的选用、音频、网络等。由于选项很多,这里不一一列出,可以参考附件中.config文件的配置,总之一切都是按自己需求来配置。


5、设置目标文件系统的类型、压缩包格式等。
Filesystem images--->
      [*] tar the root filesystem
                      Compression method (bzip2)--->

说明:这里没设置目标文件系统类型(比如板子上用的是ubi文件系统)是因为我只想要生成的压缩包,后续再用ubi工具制作成ubi文件系统镜像,当然也是完全可以在[ ] ubifs root filesystem选项中配置的,效果是一样的。


6、配置busybox。
前提是Target packages--->选项中已经选用了busybox,默认是选上的。若里面没有自己想要的版本,也可自己去下载源码编译。
配置busybox的命令是:
$ make busybox-menuconfig
这个也是按自己需求增加与裁剪。

7、关于Kernel--->和Bootloaders--->选项,如果不用buildroot构建bootloader和linux内核可不必设置。

8、保存配置退出后,执行make编译。编译过程中要联网,因为可能需要下载一些packages。


9、编译完成后会在output/images/目录中生成目标文件系统压缩包rootfs.tar.bz2,后续可根据所需的文件系统类型用相关的工具进一步制作成可烧录到开发板的镜像,这一部分可参考MYD-AM335X用户手册。如果在Filesystem images 选项中配置好目标文件系统类型则直接生产可烧录的镜像。











页: [1]
查看完整版本: Buildroot制作根文件系统过程(基于MYD-AM335X开发板)