当前位置: 首页 > news >正文

使用Buildroot制作根文件系统

寒暄几句

学习了uboot、内核、busybox根文件系统,想着做一个音频播放器。最后发现好像busybox好像没有带aplay架构,这就很麻烦需要自己移植。为了简便我就找大佬沟通了一下,大佬推荐了Buildroot工具来制作根文件系统。

平台

开发板:正点原子阿尔法
Ubuntu版本:16.04
buildroot工具来源:正点原子提供的资料包中
uboot:原厂制作的uboot
内核:原厂制作的内核 (4.1.5)
交叉编译器: arm-linux-gnueabihf (4.9.4)

配置buildroot

1)将buildroot工具包解压,进入目录后在目录中输入命令 make menuconfig,然后会进入如下界面
在这里插入图片描述
配置介绍:
1)Target options:为构建目标选择特性和配置参数(芯片架构、芯片类型等)
2)Build options:配置编译构建相关的配置参数
3)Toolchain:配置工具链和编译器特性(选择工具来源)
4)System configuration:配置生成的文件系统的配置文件和启动特性
5)Kernel:配置linux内核特征和参数
6)Target packages:选择和配置所需要的软件包和软件环境
7)Filesystem images:配置经buildroot编译构建后的文件系统的镜像格式
8)Bootloaders:选择和配置启动加载程序Bootloaders:该选项用于选择和配置启动加载程序
9)Host utilities:配置是否构建编译出宿主机上的一些工具套件
10)Legacy config options:随着历史版本更迭原因,该选项用于配置一些遗留下来的特性

Target options

在这里插入图片描述
Target Architecture:目标处理器架构
Target Binary Format:目标二进制格式
Target Architecture Variant:目标处理器内核
Target ABI:目标ABI(应用程序二进制接口)
Floating point strategy:浮点策略
ARM instruction set:ARM指令集

Build options

不做配置

Toolchain

在这里插入图片描述
Toolchain type:选择外部编译还是内部编译
Toolchain:选择编译工具,使用buildroot自带的还是自定义已经下载的编译器
Toolchain origin:选择编译器来源
Toolchain path :选择交叉编译器绝对地址
Toolchain prefix :设置编译前缀,例如arm-linux-gnueabihf
External toolchain gcc version:选择编译器gcc版本
External toolchain kernel headers series:选择内核版本
External toolchain C library:选择c语言库

System configuration

在这里插入图片描述
Root password:设置密码

Kernel

不做配置

Target packages

在这里插入图片描述
添加alsa框架,这个框架主要是针对音频的。
在这里插入图片描述
选择alsa-utils音频开发框架,这是音乐播放器最关键的开发框架

Filesystem images

不做配置

Bootloaders

不做配置

Host utilities

不做配置

Legacy config options

不做配置

编译

配置完成后保存退出,然后输入 make all 编译(期间编译时间有点长请耐心等待)。编译完成根文件系统在output/images/目录下名称为rootfs.tar。之后使用cp指令复制到NFS配置的目录下,解压即可。

问题注意

解压挂在的根文件或无法运行报错
在这里插入图片描述
这是由于根文件系统下bin目录下的软连接全部失效了,cd至bin目录下然后运行指令:

sudo chown root * -R

然后再次上电即运行,运行后如果在系统设置中设置了密码原来的密码将无法使用,所以建议不要设置密码。

#参考文章
buildroot编译文件系统,出现错误
buildroot使用笔记-01 | 常规使用步骤

http://www.lryc.cn/news/43677.html

相关文章:

  • Java_Spring:5. 基于注解的 IOC 配置
  • Git下的.gitignore文件
  • Unity集成GPT
  • Xilinx FPGA Multiboot设计与实现(Spartan-6和Kintex-7为例)
  • 14、SpringMVC执行流程
  • 2步搞定拼版!AD通用拼版技巧分享!
  • 再学C语言47:字符串输出
  • 银行数字化转型导师坚鹏:如何制定银行数字化转型年度培训规划
  • RFID技术在物流行业中的应用:优化物流流程,提高效率
  • 安卓机器学习框架学习:Android Neural Networks API (NNAPI)
  • 阿里云GPU服务器收费标准、学生价格及一个小时费用大全
  • Asp.net core 依赖注入 (带案例以及注释理解)
  • 【微信小程序】-- uni-app 项目-- 购物车 -- 首页 - 轮播图效果(五十二)
  • GO实现Redis:GO实现Redis集群(5)
  • 高阶数据结构之 B树 B+树 B*树
  • CSS3之动画属性
  • python --Matplotlib详解
  • 手机(Android)刷NetHunter安装指南,无需ssh执行kali命令, NetHunter支持的无线网卡列表!
  • 教育行业ChatGPT的新挑战
  • 内存泄漏 定位方法
  • es-head插件插入查询以及条件查询(五)
  • 安装python教程并解决Python安装完没有Scripts文件夹问题
  • postman的断言、关联、参数化、使用newman生成测试报告
  • 春招大盘点:找工作除了招聘网站还有哪些渠道?
  • eNSP 构建基本WLAN
  • Python是不是被严重高估了?
  • 给你一个购物车模块,你会如何设计测试用例?【测试用例设计】
  • 【wps】【毕业论文】三线表的绘制
  • Spring Cloud Alibaba 多租户saas企业开发架构技术选型和设计方案
  • Unity IL2CPP 游戏分析入门