前言
之前介绍过使用busybox来构建根文件系统,busybox虽然能够帮助我们快速构建出很小的根文件系统,但是想要正常使用还需要我们去完善(移植lib库,配置文件等),显然对于新手的我们要移植库文件只能把全部移植过去而不会裁剪,这样子出来的根文件系统也有100多M了,而且容易有遗漏的地方导致完善不全。这次我使用Buildroot来构建根文件系统,傻瓜式构建不需要我们来移植库和第三方软件什么的,啥都为我们构建好了,非常方便且完善。
1.到官网下载Buildroot和交叉编译器
点击以下超链接下载:
交叉编译器
Buildroot
我选择的是-7.5.0-2019.12版本的交叉编译器和2021.02.3的Buildroot,建议选择一个LTS(长期支持版本)。
下载后移动到ubuntu中解压

2.进行图形化配置
在解压的buildroot目录下执行make menuconfig
根据你的芯片型号配置好如下内容,以我的imx6ull为例
Target options
-> Target Architecture = ARM (little endian)
-> Target Binary Format = ELF
-> Target Architecture Variant = cortex-A7
-> Target ABI = EABIhf
-> Floating point strategy = NEON/VFPv4
-> ARM instruction set = ARM

按照自己的交叉编译器配置如下内容:
Toolchain
-> Toolchain type = External toolchain
-> Toolchain = Custom toolchain //表示使用用户自己的交叉编译器
-> Toolchain origin = Pre-installed toolchain //预装的编译器
-> Toolchain path =/home/gg/tool/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf//解压的交叉编译器路径
-> Toolchain prefix = arm-linux-gnueabihf //前缀
-> External toolchain gcc version = 7.x
-> External toolchain kernel headers series = 4.10.x
-> External toolchain C library = glibc/eglibc
-> [*] Toolchain has SSP support? (NEW) //选中
-> [*] Toolchain has RPC support? (NEW) //选中
-> [*] Toolchain has C++ support? //选中
-> [*] Enable MMU support (NEW) //选中

然后配置 System configuration,此选项用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。需要配置的项目和其对应的内容如下:
System configuration
-> System hostname = gg_imx6ull //平台名字,自行设置
-> System banner = I am fine thinks //欢迎语
-> Init system = BusyBox //使用 busybox
-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev
-> [*] Enable root login with password (NEW) //使能登录密码
-> Root password = 123456 //登录密码为 123456

配置 Filesystem images,此选项配置我们最终制作的根文件系统为什么格式的
-> Filesystem images
-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4
-> ext2/3/4 variant = ext4 //选择 ext4 格式
-> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用 ubifs

接下来关闭buildroot对内核和uboot的编译。虽然它可以自动下载编译内核与uboot,但是会缺斤少两导致编译事变所以我们不用。
-> Kernel
-> [ ] Linux Kernel //不要选择编译 Linux Kernel 选项!
-> Bootloaders
-> [ ] U-Boot //不要选择编译 U-Boot 选项!

编译出根文件系统
到了这里,就可以执行sudo make来进行编译最基本的根文件系统查看是否编译成功了(最后再配置要选择的第三方库或软件防止编译失败)。注意:在编译的时候可能会因为需要下载软件源码的下载速度很慢而导致编译时间过长(显示需要下载几十小时),这个时候有个技巧就是手动复制下载地址到浏览器打开,然后下载源码,然后再复制到buildroot 源码目录下的 dl 文件夹中(这个文件夹就是专门用来放置下载下来的源码的)
如图所示,编译成功后就在output/images文件夹下生成了多种格式的根文件系统了。


大家可以使用uboot开启nfs模式挂载根文件系统查询是否可用(一般能编译出来都可用),这里我只介绍怎么使用buildroot构建根文件系统。
第三方软件和库的配置
在使用busybox创建根文件系统之后需要我们自行移植一些第三方的库和软件,比如 alsa-lib、 alsa-utils 等等,现在我们不需要自行移植这些第三方软件和库了,可以直接在 buildroot 里面配置使能。
继续在buildroot文件夹下执行make menuconfig进行图形化配置
使能alsa-lib库
Target packages
-> Libraries
-> Audio/Sound
-> -*- alsa-lib ---> 此配置项下的文件全部选中

使能 alsa-utils
Target packages
-> Audio and video applications
-> alsa-utils 此目录下的软件全部选中

配置完之后保存再sudo make一下就编译出来有库的根文件系统了。大家可以自行在menuconfig中尝试去配置使能一些其他的第三方库和软件。
Buildroot下busybox的配置
其实Buildroot在编译的时候也应用了busybox,他会自动下载busybox并且使用,于是我们就可以配置busybox使得生成的根文件系统更符合我们的要求。
我们进入/output/build/busybox-x.xx(x代表下载的版本号可能大家的不一致),然后执行sudo make busybox-menuconfig命令就可以配置我们的busybox啦!不知道配置啥的可以参考我之前写的文章->使用busybox构建根文件系统里的第3、4点。
配置完成以后使用命令sudo make busybox单独重新编译busybox。之后查看一下output/images 目录下 rootfs.tar 的创建时间是否为刚刚编译的,不是的话把他删除再执行sudo make重新编译一下。

2435

被折叠的 条评论
为什么被折叠?



