前言
写文章的目的是想通过记录自己的学习过程,以便以后使用到相关的知识点可以回顾和参考。
简介
用 busybox 构建文件系统,仅仅只是帮我们构建好了一些常用的命令和文件,像 lib 库、/etc 目录下的一些文件都需要我们自己手动创建,而且 busybox 构建的根文件系统默认没有用户名和密码设置,还要自己去移植一些第三方软件和库,比如 alsa、iperf、mplayer 等等。那么在实际的应用中,就需要用到 buildroot 这一种工具了,buildroot 不仅集成了 busybox,而且还集成了各种常见的第三方库和软件,需要什么就就在配置中选择什么,buildroot 极大的方便了我们嵌入式 Linux 开发人员构建实用的根文件系统。
一、buildroot 下载
buildroot 源码要从 buildroot 官网下载,官网地址为:https://buildroot.org/,然后将 buildroot 源码 buildroot-2019.02.6.tar.bz2 拷贝到 ubuntu 中。
二、buildroot 配置
使用下面命令进入图形化配置界面
make menuconfig
1、配置 Target options
需要根据板子的cpu进行设置。
2、配置 Toolchain
设置使用我们自己的交叉编译器,填入交叉编译器的绝对路径,选择交叉编译器的版本和板子kernel的版本。
3、配置 System configuration
设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。
4、配置 Filesystem images
选择根文件系统的格式,ext4等。
5、配置 Target packages
此选项用于配置要选择的第三方库或软件、比如 alsa-utils、ffmpeg、iperf 等工具。
6、编译 buildroot
sudo make
编译完成后,会生成一个output目录,最终在/output/images 下生成根文件系统
编译出来了多种格式的 rootfs,比如 ext2、ext4等。
不过接下来,我会使用 rootfs.tar 进行测试, 通过 nfs 把文件系统挂载到开发板上。
三、busybox 配置
1、配置busybox
buildroot 在构建根文件系统的时候也是要用到 busybox 的,既然用到了 busybox 那么就涉及到 busybox 的配置,busybox源码在/output/build/busybox-1.29.3 这个文件夹中。
在buildroot根文件目录中使用如下命令配置busybox。
sudo make busybox-menuconfig
busybox的配置就跟以前配置busybox时一样,省略。。。。
2、编译busybox
配置好以后就可以重新编译 buildroot 下的 busybox,进入到 buildroot 源码目录下,输入如下命令查看当前 buildroot 所有配置了的目标软件包,也就是 packages:
sudo make show-targets
上图列出了当前 buildroot 中所有使能了的 packages 包,其中就包括 busybox,如果我们想单独编译并安装 busybox 的话执行下面命令即可:
sudo make busybox
然后重新编译buildroot,输入命令:
sudo make
最后就可以使用新的 rootfs.tar 启动 Linux 系统了。
四、根文件系统测试
在 nfs 文件夹中创建 buildrootfs 文件夹,把编译出来的 rootfs.tar 复制进去并解压,解压后里面的内容如下图所示:
然后打开开发板,进入uboot界面,重新设置bootargs环境变量,通过nfs
挂载到开发板上。
setenv bootargs ‘lcd=at070tn92 tp=gslx680-linux root=/dev/nfs
nfsroot=192.168.0.102:/home/xzj/Linux/nfs/buildrootfs,proto=tcp rw ip=192.168.0.103:192.168.9.102:192.168.0.1:255.255.255.0::eth0::off’
重启开发板
首先要进入到/lib/modules 目录,这是平时做驱动实验时存放驱动的地方,但是默认没有,因此需要我们自行创建此目录。
输入用户名root
输入密码(配置buildroot时设置的)
进入到系统中。