一、buildroot-2014.08编译根文件系统(nfs挂载)

buildroot(Making Embedded Linux Easy)编译环境它其实就是一个脚本和补丁的集合,简单来讲就是辅助编译嵌入式系统中的boot、kernel、rootfs、cross compiler等。

本篇主要讲如何使用buildroot编译根文件系统并且使用开发板用nfs方式挂载:

宿主机环境:虚拟机+ubuntu14.04 x86 

交叉编译器: arm-linux-gcc 4.5.1

目标机环境:tiny4412

1、在http://git.buildroot.net/buildroot/下选择版本,在此选择buildroot-2014.08,

zxl@zxl:/work$ sudo wget http://git.buildroot.net/buildroot/snapshot/buildroot-2014.08.tar.gz
zxl@zxl:/work$ sudo tar xjf buildroot-2014.08.tar.bz2 -C ./tools/
zxl@zxl:/work/tools/buildroot-2014.08$ sudo make menuconfig

一、buildroot-2014.08编译根文件系统(nfs挂载)_第1张图片

3、配置buildroot编译根文件系统

3.1、配置目标板:使用的是arm的cortex-a9,小端模式的

一、buildroot-2014.08编译根文件系统(nfs挂载)_第2张图片

3.2、配置工具链:选择外部工具链的方式(也就是已经安装好的工具链),工具链的路径:/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/

一、buildroot-2014.08编译根文件系统(nfs挂载)_第3张图片

3.3、配置根文件系统

一、buildroot-2014.08编译根文件系统(nfs挂载)_第4张图片

配置完毕,开始编译。

4、编译

root@zxl:/work/tools/buildroot-2014.08# make

buildroot编译过程:在配置完成后,buildroot编译过程中会根据开发者选中的功能,自动上网download源码到buildroot目录下的dl目录,并且解压到output/build/中进行编译。

在output目录下有四个文件夹:

root@zxl:/work/buildroot-2014.08/output# ls
build  host  images  staging  target

build目录:所有源码的编译路径

host目录:存放交叉编译器,如果指定是外部编译器,会把外部编译器拷贝到此处。buildroot编译生成的也是存放在此。

images目录:存放根文件系统的打包好的各个格式,比如:ext,yaffs等.....

target目录:编译出来的根文件系统存放的路径(也就是待会生成根文件系统的路径,用nfs挂载即可)

5、使用buildroot制作出来的根文件系统

root@zxl:/work/tools/buildroot-2014.08/output/target# ls
bin  etc   lib    linuxrc  mnt  proc  run   sys                               tmp  var
dev  home  lib32  media    opt  root  sbin  THIS_IS_NOT_YOUR_ROOT_FILESYSTEM  usr
root@zxl:/work/tools/buildroot-2014.08/output/target# 
6、使用开发板挂载根文件系统

6.1、在挂载根文件系统前,buildroot生成的在dev目录下的设备节点有问题,如下:

root@zxl:/work/tools/buildroot-2014.08/output/target/dev# ls -l
总用量 4
-rw--w--w- 1 root root    0  8月 27 10:12 console
lrwxrwxrwx 1 root root   10  9月  1  2014 log -> ../tmp/log
drwxrwxr-x 2 root root 4096  9月  1  2014 pts
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# 
生成的console并不是一个设备节点,而是一个普通文件(本人就在此处被坑了一把,通过看log信息才知道打开终端一直失败才找到,有兴趣的可以自行查看)

在一个根文件系统中,需要两个设备节点,console和null设备节点,那么咱们直接仿照ubuntu的来创建

root@zxl:/work/tools/buildroot-2014.08/output/target/dev# ls /dev/console -l
crw------- 1 root root 5, 1  8月 26 10:24 /dev/console
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# ls /dev/null -l
crw-rw-rw- 1 root root 1, 3  8月 25 16:11 /dev/null
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# 
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# mknod console c 5 1
mknod: "console": 文件已存在
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# rm console 
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# mknod console c 5 1
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# mknod null c 1 3
root@zxl:/work/tools/buildroot-2014.08/output/target/dev# ls -l
总用量 4
crw-r--r-- 1 root root 5, 1  8月 27 10:21 console
lrwxrwxrwx 1 root root   10  9月  1  2014 log -> ../tmp/log
crw-r--r-- 1 root root 1, 3  8月 27 10:21 null
drwxrwxr-x 2 root root 4096  9月  1  2014 pts
root@zxl:/work/tools/buildroot-2014.08/output/target/dev#

6.2、使用开发板来挂载buildroot编译出来的根文件系统即可。




你可能感兴趣的:(buildroot)