本帖最后由 maskmoo 于 2024-8-4 11:45 编辑
Linux的构建过程通常有Busybox Buildroot 和 Yocto几种方式,其中Yocto由于功能更加强大,学习曲线会更陡峭,需要更多的学习和配置工作。Busybox 也比较简单易
用,但是它的构建过程需要手动编写Makefile。 相对来说Buildroot更加轻量化和简单易用,能够更容易地进行系统构建和定制化。
本文在freescale_imx93evk_defconfig的官方配置的基础上,进行buildroot文件系统的编译。
buildroot 编译依赖软件安装
sudo apt-get install gcc g++
sudo apt-get install lsb-core lib32stdc++6 libncurses-dev
配置 defconfig 文件
make freescale_imx93evk_defconfig
执行完配置命令后会在当前目录下生成.config 隐藏文件,这个配置文件作用是让 buildroot 知道它要编译什么,同时make menuconfig指令也会根据这个.config 来进行图形化选择菜单。
然后执行 make 指令开始编译。
网络问题解决
buildroot编译过程中需要下载大量软件,由于国内网络环境原因,国外很多软件下载速度较慢或者访问不了,需要使用国内开源的镜像源加速下载。
buildroot加速下载 - goodboyyd - 博客园 (cnblogs.com)
GitHub访问有问题,这里把指定的Kernel(github.com)离线下载后copy到builtroot目录,然后对配置选项进行修改(之前是指定GitHub地址,这里修改成本地路径)
使用 Buildroot 的内部机制将本地压缩包复制到 Buildroot 的dl下载目录,以避免 wget 尝试下载。
Buildroot 会从dl目录中查找源代码包,首先复制内核压缩包到 Buildroot 的下载目录
这样,Buildroot会使用本地复制到dl目录的内核压缩包,而不会尝试通过网络下载(后面也遇到了几个模块下载有问题也都是通过这种方式解决的)。
编译完成得到的文件存放在 buildroot 源码的 output/images 目录下
文件系统打包
rootfs相关的文件是文件系统固件,可以使用 zstd 工具将 rootfs.tar 打包成 rootfs.tar.zst 格式,并替换到开发板出厂烧录固件包 ATK-IMX93-firmware/filesystem 目录,然后使用 sudo uuu alientek-imx93-emmc.uuu 烧写。
sudo apt-get update && sudo apt-get install zstd
zstd -c rootfs.tar -o rootfs.tar.zst
uuu烧写问题解决
最先按照原子的01【正点原子】ATK-DLIMX93快速体验手册V1.0文档中的烧录说明进行操作,总是异常失败。
原因是在烧写完 fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.zst.u-boot 后,开发板会重启一次系统这时候的USB设备时需要驱动的。Github上说Win7是需要手动安装WinUSB驱动,Win10会自动安装,不清楚我的电脑为啥没有自动安装,使用Zadig安装完驱动后就正常了。
启动测试
烧录完成后切换启动模式,登陆用户名为 roo默认没有密码。可以看到编译出来的buildroot 文件系统正常启动。默认的配置是比较精简的系统,可以在此基础上按照需求进行定制化配置。