buildroot工具的使用方法
一、buildroot简介
buildroot是一套简单的定制linux系统的工具,更高级的有Yocto,基于make实现构建系统。
二、buildroot目录和文件介绍
- Config.in,保存配置菜单的具体选项,类似Linux源码中的KConfig,其存在位置有
./ ./package/ ./package/xx/ - xx_defconfig,保存有配置菜单的默认配置选项,Linux存在同样的defconfig,其存在位置在
./configs/ - .config,保存配置后的最终配置选项,Linux同样存在,在根目录,来自
defconfig+menuconfig综合配置得到 - xx.mk,保存软件包的名称、版本、位置、依赖关系、配置选项、编译参数、安装目录等等
- xx.hash,存在哈希值,用作校验包的正确性
- dl目录,存储下载好的包,同样可以手动copy包到此处
- output/build目录,下载的包在此处进行解压、配置和编译
- output/staging目录,存储中间文件,包括头文件、库文件
- output/target目录,嵌入式文件系统的安装目录
- output/host目录,主机编译工具的安装目录
- output/images目录,最终生成的文件系统安装目录和镜像文件目录
三、编译过程
make xx_defconfig //使用默认的系统配置
make menuconfig //手工修改必要的配置选项
// 之后配置选项保存在.config中
make // 构建
1> 根据.config确定需要下载哪些包
2> 查看package/包/包.mk确定下载包的版本和链接
3> 下载完成后根据package/包/包.hash校验下载包的正确性
4> 下载完成的包存储在dl/包/包.tar.xx
5> 在output/build/包目录下解压
6> 根据package/包/包.mk进行config、build、install
7> 安装的包在output/target目录下
8> 根据配置选项BR2_ROOTFS_OEVRLAY指定的目录,将目录中的所有文件拷贝到output/target目录下
9> 打包output/target目录下的所有文件作为一个rootfs系统映像
10> 根据配置选项BR2_ROOTFS_POST_IMAGE_SCRIPT执行的脚本,运行此脚本,构建系统镜像
四、构建系统镜像的脚本介绍
genimage \
--rootpath "${ROOTPATH_TMP}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"
image boot.vfat {
vfat {
files = {
"boot.bin",
"u-boot.img",
"system.dtb",
"uImage"
}
file extlinux/extlinux.conf {
image = extlinux.conf
}
}
size = 32M
}
image sdcard.img {
hdimage {
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}
定义了两个分区,分区一是FAT32系统(0xC),并使用bootable设置为可启动分区,存储的内容是boot.vfat,分区二是Linux系统(0x83),存储的内容是rootfs.ext4
启动映像boot.vfat,大小是32M,文件包含"boot.bin","u-boot.img","system.dtb","uImage",以及一个extlinux和extlinux.conf文件
extlinux.conf文件内容表内核是uImage、设备树是system.dtb并且uboot传递给kernel的参数指定了串口、波特率、根文件系统目录
label linux
kernel /uImage
devicetree /system.dtb
append console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait
最后dd if=output/images/sdcard.img of=/dev/sdX 将sdcard.img拷贝到sd卡

浙公网安备 33010602011771号