使用buildroot构建根文件系统
一、buildroot介绍
使用busybox 构建文件系统的时候,busybox 仅仅只是帮我们构建好了一些常用的命令和文件,像 lib 库、/etc目录下的一些文件都需要我们自己手动创建,而且 busybox构建的根文件系统默认没有用户名和密码设置。在后续的实验中,我们还要自己去移植一些第三方软件和库,比如alsa、iperf、mplayer等等。那么有没有一种傻瓜式的方法或软件,它不仅包含了 busybox的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。答案肯定是有的,buildroot就是这样一种工具,buildroot比busybox 更上一层楼,buildroot不仅集成了busybox,而且还集成了各种常见的第三方库和软件,需要什么就选择什么,buildroot 极大的方便了我们嵌入式Linux开发人员构建实用的根文件系统。
二、下载buildroot源码
从buildroot的官网下载:https://buildroot.org
选中.bz2
压缩包进行下载
下载后将其放入我们的imx6u_alpha/tools
目录下
三、配置buildroot
将得到的源码进行解压:
tar -vxjf buildroot-2020.02.1.tar.bz2
然后进入解压得到的buildroot-2020.02.1
文件夹,使用命令打开图形化配置:
make menuconfig
首先将【Target options】配置为如下所示
然后是【Toolchain】配置
【System configuration】配置如下所示:
接下来我们要禁止编译内核和uboot
进入【Kernel】选项,不要选中Linux Kernel
同样的,进入【Bootloaders】选项,也是不要选中U-Boot
配置好后就可以保存退出了
四、开始编译
使用命令开始编译,记住,要加sudo
,且不能加-jx
指定多核编译
sudo make
在编译过程中需要在网上下载软件源码,有些源码可能下载中断,我们可以自己去下载
然后放入dl
文件夹下
编译完成之后就会在output/images
下生成多种格式的文件系统
然后我们将rootfs.tar
复制到nfs目录下新建一个buildrootfs
文件夹下,将其解压
然后将rootfs.tar
删去,可以得到
五、使用得到的根文件系统启动开发板
设置开发板的环境变量:
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.0.106:/home/william/imx6u_alpha/nfs/buildrootfs ip=192.168.0.101:192.168.0.106:192.168.1.1:255.255.255.0::eth0:off'
然后使用boot
命令启动,可以看到,启动成功
六、优化使用
1、配置busybox
之前我们知道,busybox是不支持中文的,使用我们需要对其进行修改,其源码在/output/build/
目录下
安装之前的方法修改源码:https://blog.csdn.net/qq_38113006/article/details/104326696#t3
回到buildroot跟文件下,使用如下命令配置busybox
sudo make busybox-menuconfig
配置好后使用命令单独编译busybox
sudo make busybox
然后重新生成根文件系统文件
sudo make
接下来就可以使用这个跟文件系统了
2、添加提示信息
我们可以看到,提示信息只有一个#
,这样很不便于我们使用
打开/etc/profile
文件,可以看到,提示信息被固定成了#
,
将其修改
重启开发板,可以看到,提示信息已经有了: