buildroot制作功能齐全的根文件系统

本文介绍如何使用Buildroot在Zynq7020平台上构建嵌入式根文件系统,涵盖环境配置、工具链下载、Buildroot配置及编译流程,适用于嵌入式产品开发。

buildroot制作文件系统

PageTitle MetaDescription DateApproved editor
创建 buildroot制作文件系统 2019/10/15 孙小草

背景

从 busybox 开始一步一步的构建根文件系统适合学习、了解根文件系统的组成,但是不适合做产品(主要是自己构建的话会有很多不完善、没有注意到的细节)。buildroot 会帮我们处理好各种细节地方,是我们的根文件系统更加的合理、有效。因此大家在做产品的时候推荐大家使用 buildroot 来构建自己的根文件系统。它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。

开发平台

  1. Zynq7020核心板
  2. Ubuntu18.04.3

移植流程

  1. 配置ubuntu环境

    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386
    sudo apt-get install lib32ncurses5 ​
    sudo apt-get install lib32z1
    
  2. 下载交叉编译工具

    1. 不可使用apt install所安装的编译工具链,需手动下载
    2. 下载地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/
    3. 本文下载的是gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
  3. 下载buildroot

    1. 下载地址:https://buildroot.org/download.html
    2. 本文下载的是buildroot-2019.02.7.tar.bz2
  4. 制作根文件系统

    1. 解压
    tar -xvf gcc-linaro-7.4.1
使用 Buildroot 制作完整的根文件系统一个自动化的过程,Buildroot 能够从源码编译交叉工具链、Linux 内核、BusyBox 和根文件系统,并最终生成一个可直接烧录的镜像。以下是详细步骤说明: --- ### ✅ 步骤 1:获取 Buildroot 源码 ```bash # 下载稳定版本(以 2023.02.7 为例) wget https://buildroot.org/downloads/buildroot-2023.02.7.tar.gz tar -xzf buildroot-2023.02.7.tar.gz cd buildroot-2023.02.7 ``` 或使用 Git 克隆(最新开发版): ```bash git clone https://github.com/buildroot/buildroot.git cd buildroot ``` --- ### ✅ 步骤 2:选择合适的配置模板(defconfig) Buildroot 提供了多种预定义平台的支持模板,位于 `configs/` 目录下。 查看支持的板子: ```bash ls configs/*_defconfig ``` 例如,为树莓派 3 构建: ```bash make raspberrypi3_defconfig ``` 其他常见选项: - `qemu_x86_64_defconfig`:用于 QEMU 模拟 x86_64 系统 - `beaglebone_defconfig`:BeagleBone Black - `generic_x86_64_defconfig`:通用 x86_64 平台 --- ### ✅ 步骤 3:自定义配置(可选) 运行菜单配置界面进行个性化设置: ```bash make menuconfig ``` 关键配置项包括: - **Target options**:选择目标架构(ARM, x86, RISC-V 等) - **Build options**:是否并行编译、下载目录等 - **Toolchain**:是否构建交叉编译器、C 库选择(glibc / uClibc-ng / musl) - **System configuration**: - 根文件系统输出格式(tar 包、ext4 镜像、cpio 归档等) - 是否启用 root 登录密码 - **Filesystem images**:选择生成的根文件系统类型(如 ext2/4、squashfs、tar) - **Kernel**:自动编译 Linux 内核并安装 - **Target packages**:添加额外软件包(如 bash、python、dropbear SSH、nginx 等) > ⚠️ 默认会自动启用 BusyBox 来提供基本命令和 init 系统。 --- ### ✅ 步骤 4:开始构建 ```bash make ``` 该命令将自动完成以下任务: 1. 下载所需源码(内核、BusyBox、包依赖等) 2. 编译交叉编译工具链 3. 编译 Linux 内核(如果启用) 4. 编译 BusyBox 并生成根文件系统骨架 5. 安装选定的目标应用程序 6. 打包成根文件系统镜像 构建时间取决于主机性能和网络速度。 --- ### ✅ 步骤 5:获取生成的根文件系统 构建完成后,输出文件位于 `output/images/` 目录中: ```bash ls output/images/ ``` 常见输出文件: - `rootfs.tar` 或 `rootfs.cpio`:可用于 initramfs 的压缩文件系统 - `rootfs.ext4`:ext4 格式的根文件系统镜像(适合写入 SD 卡) - `zImage`:编译好的内核镜像(如果启用了内核构建) - `boot.vfat`:启动分区镜像(某些平台需要) 你也可以在 `output/target/` 中查看未打包的原始根文件系统内容。 --- ### ✅ 步骤 6:使用根文件系统(示例:写入 SD 卡) 假设你要将 `rootfs.ext4` 写入 SD 卡(设备为 `/dev/sdX`): ```bash sudo dd if=output/images/rootfs.ext4 of=/dev/sdX bs=4M conv=fsync ``` 或者挂载测试: ```bash mkdir /tmp/rootfs sudo mount -o loop output/images/rootfs.ext4 /tmp/rootfs ls /tmp/rootfs sudo umount /tmp/rootfs ``` --- ### ✅ 可选优化技巧 - **加速构建**:修改 `make menuconfig` → Build options → Number of jobs to run simultaneously - **离线构建**:先 `make source` 下载所有源码包,之后断网构建 - **增量构建**:修改配置后只需重新运行 `make`,Buildroot 会智能处理已编译部分 - **自定义脚本**: - `post-build.sh`:在生成根文件系统后执行,用于添加用户、修改配置等 - `post-image.sh`:在生成镜像后运行,可用于合并内核与根文件系统 创建 `post-build.sh` 示例: ```bash #!/bin/sh echo 'nameserver 8.8.8.8' > $TARGET_DIR/etc/resolv.conf echo 'mydevice' > $TARGET_DIR/etc/hostname ``` 在 `menuconfig` 中指定路径:`System configuration → Run a script after generating files`。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值