IMX6ULL根文件系统制作

发布时间 2023-08-21 23:49:56作者: 其实我只是懒

官网地址

https://buildroot.org/

安装编译相关的环境

sudo apt install -y sed make binutils build-essential gcc g++ patch gzip bzip2 perl tar cpio unzip rsync file bc wget libncurses-dev
sudo apt install -y wget python libncurses5 bzr cvs git mercurial rsync subversion

使用get下载

git clone git://git.buildroot.net/buildroot

# 进入目录
cd buildroot

我使用当前最新的版本2023.08-rc1

选择要编译的板子

在configs目录下有默认支持板子的配置

img
imx6ull板子的配置为imx6ullevk_defconfig,使用以下命令选择配置的板子

make imx6ullevk_defconfig

更改配置信息

make menuconfig

在 Toolchain中选择内核的版本要和使用的内核版本一致,我使用的内核版本是6.1.x,如果没有需要的内核版本可以下载老版本的buildroot

img

在Kernel中取消内核的编译,我们不使用buildroot直接编译的内核,buildroot编译的内核相关驱动比不上NXP官方提供的内核完善。

img

在Filesystem images只选择生成tar格式的根文件系统,后面我们将使用nfs挂载我们的文件系统

img

在Bootloaders中取消Bootloaders的生成,我们使用NXP提供的U-Boot。

img

其它的为默认配置

编译

make -j4

编译错误解决

错误信息

ERROR: vfat(boot.vfat): could not setup zImage

新版板的buildroot制作文件系统默认需要生成sdcard.img镜像,sdcard.img镜像的生成需要使用到zImage文件,但是是我们在前面生成根文件时把内部编译的uboot和kernel都去掉,没有编译生成zImage,所以,在生成sdcard.img的时候(这个镜像集成了uboot,kernel,rootfs),找不到zImage,生成失败。

我们需要对Makefile文件进行修改,去除掉sdcard.img镜像生成,注释掉Makefile 815行的语句

img

# 重新编译
make -j4

编译结束,需要的文件位置

所有编译的输出都位于output文件

img

主要是两个文件夹,一个是images,保存根文件的镜像输出

img

一个是host目录,host目录下面的bin目录有我们以后编译系统需要使用的交叉编译工具链

img

设置交叉编译器的路径

#进入工具链目录
cd output/host/bin/

#获取目录的绝对路径
pwd

#打开文件,并移到文件结尾
vim ~/.bashrc +$

#在文件结尾加上以下信息
export PATH=$PATH:<上面获取的绝对路径> #例如 export PATH=$PATH:/home/q123/samba/imx6ull/buildroot/output/host/bin


#保存完成关闭终端重新打开终端即可生效