i.MX6ULL - Buildroot根文件系统构建步骤
目录
1、源码获取
buildroot下载地址:https://buildroot.org/download.html
下载长期支持版,也就是这个:
2、配置
解压并进入:
tar xvf buildroot-2022.02.5.tar.gz
cd buildroot-2022.02.5
启动图形化配置:
make menuconfig
1、目标属性:Target options —>
2、工具链配置:Toolchain —>
主要配置以下几项:
自定义的工具链:Toolchain (Custom toolchain) —>
交叉编译工具链来源:Toolchain origin (Pre-installed toolchain) —>
指定你的交叉编译工具链的存放位置:(/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf) Toolchain path
工具链的前缀:($(ARCH)-linux-gnueabihf) Toolchain prefix
你的交叉编译工具链的版本:External toolchain gcc version (7.x) —>
External toolchain kernel headers series (4.10.x) —>:编译你交叉编译工具链的linux内核版本,如果不知道那就先随便写一个,等编译的时候会报错误,根据报错提示就可以知道版本号,例如我一开始随便设置的是5.4.x,但是编译的时候就报错了:
Incorrect selection of kernel headers: expected 5.4.x, got 4.10.x
package/pkg-generic.mk:273: recipe for target '/opt/yijie/buildroot-2022.02.5/output/build/toolchain-external-custom/.stamp_configured' failed
提示我应该是4.10.x,而不是5.4.x。
选中C库:External toolchain C library (glibc/eglibc) —>
使能这几项支持:
[*] Toolchain has SSP support?
[*] Toolchain has SSP strong support?
[*] Toolchain has RPC support?
[*] Toolchain has C++ support?
[*] Enable MMU support
配置为如下图:
3、系统设置:System configuration —>
主机名称:随便设置: (yjimx6ull) System hostname
欢迎语,随便设置:(Welcome to YiJie i.MX6ULL Board !) System banner
初始系统使用BusyBox:Init system (BusyBox) —>
挂载方式使用动态挂载加mdev形式:/dev management (Dynamic using devtmpfs + mdev) —>
使能登陆密码:[*] Enable root login with password
登陆密码为root:(root) Root password
配置完如下:
4、 Kernel —>
取消掉内核编译:
5、Bootloaders —>
取消掉uboot编译:
6、Filesystem images —>
7、Target packages
这个选项下是第三方库,目前暂时用不到,先不配置,用到的时候在勾选进行编译。
3、编译
sudo make
编译前注意一下几点:
- 一定要加sudo,并且不能使用make -jN来指定多核编译
- 编译异常漫长,估计几个小时
- buildroot编译的时候会先从网上下载所需的软件源码,务必保持网络通畅,有些软件源码可能下载不下来,或者下载的很慢,此时建议换源,方法我这里就不赘述了,直接百度搜索:ubuntu换源。
- 编译会用到git下载东西,最好是能科学上网
编译完成之后会在output/images
下:
4、NFS挂载测试
现在就可以使用NFS挂载文件系统测试了。
创建buildroot文件系统目录,并将编译出的文件系统压缩包解压到该目录下:
mkdir /buildroot-rootfs
tar xvf ./output/images/rootfs.tar -C /buildroot-rootfs
设置uboot挂载参数(别忘了在/etc/exports
将NFS挂载目录换成/buildroot-rootfs
):
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.28.254:/buildroot-rootfs ip=192.168.28.234:192.168.28.254:192.168.28.1:255.255.255.0::eth0:off'
如果你是用的飞凌的okmx6ull的uboot和内核,uboot设置的挂载参数为:
setenv mmcargs setenv bootargs console=ttymxc0,115200 cma=320M root=/dev/nfs rw ip=192.168.1.234:192.168.1.254:192.168.1.1:255.255.255.0::eth0:off nfsroot=192.168.1.254:/buildroot-rootfs,v3,tcp
成功挂载:
ends…