基于Buildroot的rootfs制作

基于Buildroot的rootfs制作

本文当记录使用buildroot制作rockchip-rk3288平台的rootfs过程。

1.准备工作

首先,需要到Buildroot的官网下载最新版本的源码,以及官方的使用手册。使用手册的第二章说明了Buildroot在Linux上编译时所依赖的工具以及第三方库。下面列列出了可能用到的软件包:

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \
gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools \
autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash \
patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev \
libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib \
libc6:i386 libssl-dev texinfo liblz4-tool genext2fs 

2.平台配置

buildroot使用类似于Linux kernel的配置工具,我们可以使用make menuconfig工具对平台编译参数进行配置。进入buildroot主目录,执行

make menuconfig

在这里插入图片描述
上面就是Buildroot住配置界面。

2.1 Target options配置

下面为rockchip-rk3288平台的配置信息:

在这里插入图片描述

2.2 Toolchain配置

toolchain主要涉及交叉编译器的相关配置,有两种方式:

  1. Buildroot toolchain
  2. External toolchain

Buildroot toolchain为buildroot官方提供的交叉编译器,而External toolchain为第三方提供的交叉编译器。这里我们详细说明一下External toolchain。

对于External toolchain,buildroot提供了三种配置方式:

在这里插入图片描述

这里我们选择Custom toolchain配置方式。具体的配置参数如下:
在这里插入图片描述
这里需要主义的是gcc版本、kernel headers series等信息的获取方式。对于gcc版本我们可以通过arm-linux-gnueabihf-gcc -v命令查看,例如:

gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) 

对于kernel headers series,我们需要到交叉编译器的相关目录下进行查看,例如,本文档所使用的。

gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h #define LINUX_VERSION_CODE 263680 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

2.3 System configuration

将System hostname和System banner配置成平台相关的信息。将 Init system配置成Busybox。注意 /dev management配置成 Dynamic using devtmpfs + mdev,并且将system/device_table.txt配置到Path to the permission tables属性。我们可以使用‘Enable root login with password’设置系统的登陆密码。

在这里插入图片描述最后,配置系统登陆终端,使用如下的默认配置即可:

在这里插入图片描述

2.4 Filesystem images

根据内核的具体配置,选择具体的文件系统类型,例如:
在这里插入图片描述

2.4 Target packages

Target packages包括大量的第三方库,我们可以根据项目的具体要求,将所需的工具编译进根文件系统。

在这里插入图片描述

3. 编译

切换到buildroot的主目录,执行make命令或者执行make O=/path/to/store/build/file(指定编译结果存放的位置),buildroot就会自动下载、安装制作rootfs所需的软件包。编译结束后,在buildroot/output下会生成rootfs相关的内容,各个文件的作用如下:

  1. target:该文件夹里包含了rootfs所有的文件,我们使用它们进行debug开发板的rootfs问题。
  2. image:该文件夹里包含了所有的不同类型的文件系统,我们选择合适的类型,并将其下载到开发板中即可,如果出现问题,可以参考target进行debug。
  3. build:该文件夹里包含了rootfs所需要的软件包的源文件。
  4. host:该文件夹包含rootfs编译过程中所需要的工具和和配置文件。
  5. Makefile:控制整个文件系统的编译过程。

4. rootfs下载

将编译好的rootfs通过具体开发板的烧写工具进行下载,下载成功后,重启系统。如果启动成功的话,会出现如下的提示信息:
在这里插入图片描述
帐号:root,密码:123456
如果发现根文件系统分区大小存在问题,如图:

在这里插入图片描述

可以使用resize2fs命令对/dev/root设备分区大小重新识别,如下:
在这里插入图片描述

Enjoy it!

### 使用 BuildrootRK3568 平台构建根文件系统 #### 准备工作 为了确保能够顺利地为RK3568平台创建根文件系统,需要先准备好必要的工具链和支持包。这包括安装依赖项、下载Buildroot源码并配置适用于RK3568的目标架构。 #### 配置目标平台 进入Buildroot目录后,执行`make menuconfig`来设置交叉编译器路径和其他必要选项。针对RK3568芯片特性,在内核配置部分应选择合适的驱动支持和硬件参数[^1]。 ```bash $ make menuconfig ``` #### 创建自定义配置 基于官方提供的defconfig模板或是其他已有的配置文件作为基础,调整以适应特定需求。特别是要确认选择了正确的处理器类型(ARM Cortex-A55)、内存大小以及其他外设接口的支持情况。 #### 添加启动脚本 对于由Buildroot生成的根文件系统而言,默认会在`/etc/init.d/rcS`中处理初始化过程中的各项任务。因此可以在该位置加入任何期望于系统初次加载时运行的服务或程序[^2]: ```bash #!/bin/sh echo "Starting custom services..." # Add your startup commands here ``` #### 编译根文件系统映像 完成上述准备工作之后就可以开始实际编译流程了。“./build.sh rootfs”不仅限于仅能用来制作Buildroot格式的镜像;借助环境变量`RK_ROOTFS_SYSTEM`可以灵活切换到不同的发行版如Yocto或者Debian来进行相同的操作。不过这里主要关注的是标准意义上的Buildroot方式[^3]。 ```bash export RK_ROOTFS_SYSTEM=buildroot ./build.sh rootfs ``` 此命令将会产出几种类型的压缩包供后续刷机使用,其中就包含了适合rk35xx系列设备使用的ext4格式磁盘图像——即最终会被改名为`rootfs.img`的那个文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值