基于Buildroot的rootfs制作

简介: 本文当记录使用buildroot制作rockchip-rk3288平台的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


  1. 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问题。


  1. image:该文件夹里包含了所有的不同类型的文件系统,我们选择合适的类型,并将其下载到开发板中即可,如果出现问题,可以参考target进行debug。


  1. build:该文件夹里包含了rootfs所需要的软件包的源文件。


  1. host:该文件夹包含rootfs编译过程中所需要的工具和和配置文件。


  1. Makefile:控制整个文件系统的编译过程。


4. rootfs下载


将编译好的rootfs通过具体开发板的烧写工具进行下载,下载成功后,重启系统。如果启动成功的话,会出现如下的提示信息:


网络异常,图片无法展示
|


帐号:root,密码:123456 如果发现根文件系统分区大小存在问题,如图:


网络异常,图片无法展示
|


可以使用resize2fs命令对/dev/root设备分区大小重新识别,如下:


网络异常,图片无法展示
|


Enjoy it!


相关文章
|
网络安全 数据安全/隐私保护
荔枝派Zero(全志V3S)开启 SSH 实现远程连接和文件传输
本文将在 Buildroot 根文件系统开启 ssh 功能。
600 0
|
数据采集 存储 搜索推荐
用 Python 将 html 转为 pdf、word
在日常中有时需将 html 文件转换为 pdf、word 文件。网上免费的大多数不支持多个文件转换的情况,而且在转换几个后就开始收费了。
1785 0
用 Python 将 html 转为 pdf、word
|
大数据 API Android开发
Activity之间传递大数据问题
<p style="color:rgb(51,51,51); font-family:Arial; line-height:26px"><span style="font-size:14px">Android开发人员都知道,Intent适用于在不同的Activity之间传递数据,包括参数、字符串、以及序列化的对象等。但是笔者所做的项目用到了使用Intent 传递Bitmap图片对象,图片的
4667 0
|
4月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联携手阿里云构筑高可用物联网消息中枢
面对换电生态高速发展的通信挑战,易易互联通过采用阿里云 MQTT + RocketMQ 的融合解决方案,成功构建了“海量接入、实时响应、弹性处理、安全可信”的物联网通信底座。该架构不仅显著提升了系统稳定性与可扩展性,更保障了高并发场景下的业务连续性,为实现“让换电成为营运补能第一选择”的战略目标提供了坚实的技术支撑。
245 39
|
5月前
|
传感器 测试技术 人机交互
基于STM32的垃圾分类项目设计与实现【开源免费】
基于 STM32 的垃圾分类项目展示了如何使用微控制器、传感器和机械控制单元来实现自动化的垃圾分类。通过合理的硬件选型和模块化的软件设计,系统能够高效地完成垃圾的分类和投放任务。随着技术的发展,这样的智能垃圾分类系统将有助于提高垃圾分类的效率,为环境保护贡献力量。
381 29
|
C++ Windows
(1)Qt的基本数据类型以及基本输出
这篇文章介绍了Qt框架中的基本数据类型和日志输出方法,包括如何使用QDebug类及其相关函数进行调试和日志记录,以及如何取消输出时的空格和字符串引号,还提供了抑制输出的两种方式。
475 4
(1)Qt的基本数据类型以及基本输出
|
机器学习/深度学习 人工智能 自然语言处理
《驾驭随机梯度下降:C++ 实现与优化算法全解析》
本文深入探讨了随机梯度下降(SGD)及其变种优化算法在C++中的实现与应用。从SGD的基础动力,到动量法、Adagrad、RMSProp、Adadelta及Adam等算法的优化升级,文章详细解析了各算法的工作原理、实现方法及其在图像识别、自然语言处理等领域的实践案例。强调了在C++实现中,内存管理、计算效率、超参数调优及代码可扩展性的关键考量,为开发高效、精准的人工智能应用提供了坚实保障。
419 33
|
数据库 数据安全/隐私保护
共享锁和排他锁在实际应用中的优缺点
【10月更文挑战第16天】共享锁和排他锁是多进程和多线程环境中常用的同步机制,它们各自具有优点和缺点。在实际应用中,需要根据具体的场景和需求选择合适的锁类型。在选择锁时,需要考虑读写比例、数据一致性要求、系统性能、死锁风险等因素,并结合实际情况进行优化和调整。通过合理使用锁,可以提高系统的并发性、数据一致性和性能。
|
算法 定位技术
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
449 2
|
C语言
make的执行步骤以及常见的make命令,make distclean 以及和make clean的区别
make的执行步骤以及常见的make命令,make distclean 以及和make clean的区别
782 0

热门文章

最新文章