根文件系统rootfs制作——使用buildroot工具(重制版)
0.前言
在之前学习制作根文件系统时,使用的是busybox工具,这个工具仅提供了基本的根文件目录,一些第三方库则需要自己手动移植。buildroot工具则在busybox的基础上,整合了一些第三方库,在构建时可以按需选择,更加方便。
一、rootfs配置
1.下载buildroot源码
buildroot官网地址:https://buildroot.org。选择最新的 LTS 版本下载即可。
2.开始配置
下载后解压,进入menuconfig界面:
Target options配置如下:
Toolchain 交叉工具链配置(根据自己的环境配置):
注:可以使用whereis xxxx-gcc
来查找工具链路径,另外,External toolchain kernel headers series
这一项,使用以下方式查找:
进入交叉工具链目录,使用find ./ -name version.h
查找文件:
转换为16进制为4140D,就为4.14版本。
System configuration配置:
用于设置一些系统配置,比如开发板名字、欢迎语、用户名、密码等。开发板不建议设置密码。
Filesystem images配置:
禁止编译Linux Kernel内核和uboot,因为这两个通常使用自定义的镜像。
取消选中Kernel-->Linux Kernel
选项和Bootloaders-->Uboot
选项
Target packages 配置
用于配置要选择的第三方库或软件。
然后保存,这里保存到源码目录下的 configs/stm32mp157_defconfig。然后先用make stm32mp157_defconfig
命令生成编译配置,再用sudo make
进行编译。
如果需要下载的插件太大,可以手动下载,保存到源码目录下的dl
文件夹中。
二、rootfs使用
编译完成的结果放在 output/images 目录,.ext4
格式的可以直接烧写到sd卡,.tar
的可以解压到nfs挂载。
由于在编译buildroot时还用到了busybox,所以将busybox也配置一下,源码在output/build/busybox***/目录下。在buildroot源码目录下使用sudo make busybox-menuconfig
命令即可配置。在顶层Makefile中修改交叉编译链,并使能中文字符支持,在原子哥教程中都能找到,在此不多赘述。(暂时只需要修改这两个,不需要创建linuxc脚本或者复制库文件之类的操作)
在编译时也是在buildroot源码目录下进行编译:
sudo make show-targets //当前 buildroot 所有配置了的目标软件包
sudo make busybox //重新编译busybox
sudo make //重新打包buildroot
使能第三方库
在buildroot的menuconfig中选中:
使能ssh:
使能busybox中的depmod:
在busybox的menuconfig中选中:
之后就可以解压到nfs进行启动。