Buildroot构建指南——根文件系统(Rootfs)【转】

本文转载自;

 

目录(?)[+]

 

Buildroot构建指南——根文件系统(Rootfs)

 

 

Buildroot的Rootfs构建流程有一个大框架,有些部分是Buildroot系统做好的,有些细节需要自己来实现,Rootfs也是Buildroot中最为复杂的部分。

Rootfs的构建流程概述

Rootfs的构建流程如图1所示。其中浅色框中为Buildroot实现的框架,深紫色框为用户实现的脚本。

Figure 1 Buildroot系统的rootfs制作

需要归纳的几点如下:

1.      新版buildroot已经把rootfs的/etc/init.d/的rcS等启动脚本移到了package/initscripts/目录下。

2.      系统默认的rcS脚本不会直接做系统用户态启动初始化操作,而是会调用/etc/init.d/目录下的SXX开头的脚本执行系统用户态启动的流程,其中XX是数字,数字越小的脚本优先于数字大的脚本被调用。用于实际的系统用户态启动脚本应该以SXX这这种格式命名,install到output/target/etc/init.d/目录下。

3.      fakeroot是一个主机上使用的软件包,它会被buildroot下载编译,用于为构建rootfs提供一个虚拟的root权限环境,只有在root权限下,才能把output/target/中的目录和文件变成root用户,并创建dev节点。有了fakeroot环境,系统构建者无需获取主机的root权限,也能在fakeroot下把文件改为root用户,并制作root方式。

4.      用户特定格式的rootfs制作脚本,最后都会被写到一个脚本中,该脚本会在fakeroot环境中执行。

如何构建自己的Rootfs

清楚流程后可以在Buildroot环境下构建自己的Rootfs了,以友善的tiny4412开发板的rootfs为例,demo一次构建自己的rootfs的流程。

友善官方提供的rootfs压缩包在光盘中是rootfs_qtopia_qt4-20141213.tar.gz,这个rootfs非常臃肿,我们需要对它进行裁剪,最好是能够用busybox做一个最小的rootfs出来,但是由于暂时没有摸清楚它的每一个细节,怕直接编译的rootfs无法启动,因而我们最好在它官方的/etc/init.d/目录下的启动脚本的基础上做进一步裁剪,先保证系统能够启动。

1.      在buildroot/system/目录中,拷贝一份skeleon/目录到tiny4412_skeleton/ ,同时拷贝一份device_table.txt到tiny4412_device_table.txt,因为tiny4412的文件系统中有特殊的部分需要修改,为了不影响通用的模板,所以进行拷贝。

Figure 2 拷贝后的system/目录中内容

2.      根据友善官方的rootfs内容,对tiny4412_skeleton/etc/目录进行一些删减和修改,删减修改后截图如下

 

Figure 3 删减修改后的tiny4412_skeleton/etc/目录

3.      将官方文件系统中,/etc/init.d/中的脚本cp到tiny4412_skeleton/etc/init.d/中,其实rcS更名为S00_tiny4412以匹配SXX的格式,XX代表数字。

4.      将tiny4412_device_table.txt稍作修改,去掉passwd等一些最小系统中用不上的内容。

Figure4 修改后的tiny4412_device_table.txt文件

5.      由于tiny4412的文件系统比较特别,使用了友善专用的make_ext4fs工具来制作的,并且这是个不开源的bin程序,把一些参数和节点都在里面写死了,因而我们需要单独在fs/中,为制作tiny4412的文件系统添加方法。

6.      在fs/目录下添加tiny4412_ext4/目录,将友善官方提供的make_ext4fs工具cp到该目录下,当然Config.in文件和tiny4412_ext4.mk脚本是必不可少的的。别忘了在fs/Config.in中将新添加的配置文件Config.in  source进去哦!

Figure5 专为制作tiny4412 ext4文件系统而添加的脚本目录

Figure6 tiny4412_ext4/目录中的内容

Figure7 在fs/Config.in中将新加入的Config.in关联进去

7.      在tiny4412_ext4/Config.in中加入以下的配置代码,其中BR2_TARGET_ROOTFS_TINY4412_EXT4是必不可少,让系统能够识别的文件系统类型的变量。剩下的变量则是可在menuconfig中配置的,文件系统大小,image制作工具的路径,以及image最后的名字

 

[plain]  view plain  copy
 
  1. config BR2_TARGET_ROOTFS_TINY4412_EXT4                                                                                    
  2.         bool"ext4 root filesystem for tiny4412"                                     
  3.         help                                                                         
  4.           Build aext4 root filesystem specify for tiny4412                          
  5.                                                                                      
  6. if BR2_TARGET_ROOTFS_TINY4412_EXT4                                                   
  7.                                                                                      
  8.                                                                                      
  9. config BR2_TARGET_ROOTFS_TINY4412_EXT4_LEN                                           
  10.         string"length of rootfs"                                                    
  11.         default"397508608"                                                          
  12.                                                                                       
  13.                                                                                      
  14. config BR2_TARGET_ROOTFS_TINY4412_EXT4_MK_TOOL_PATH                                  
  15.         string "make image toolpath"                                                
  16.         default"$(TOPDIR)/fs/tiny4412_ext4/make_ext4fs"                             
  17.                                                                                      
  18.                                                                                       
  19. config BR2_TARGET_ROOTFS_TINY4412_EXT4_IMAGE_NAME                                    
  20.         string"image name"                                                          
  21.         default"rootfs_qtopia_qt4.img"                                              
  22. endif          

 

                     

 

8.      在tiny4412_ext4.mk脚本中加入rootfs构建脚本。制作脚本的核心其实也就是ROOTFS_TINY4412_EXT4_CMD函数,它会在fs/common.mk脚本中,被写入fakeroot的执行脚本,然后会在fakeroot环境中被执行。ROOTFS_TINY4412_EXT4_CMD 函数 调用make_ext4fs工具根据配置的参数,生成rootfs的image。

 

[plain]  view plain  copy
 
  1. ################################################################################                                          
  2. #                                                                                     
  3. # Build the TINY4412_EXT4 root filesystem image                                      
  4. #                                                                                    
  5. ################################################################################  
  6.                                                                                      
  7. TINY4412_EXT4_OPTS := -s -l$(BR2_TARGET_ROOTFS_TINY4412_EXT4_LEN)                   
  8. TINY4412_EXT4_OPTS += -a root -L Linux                                               
  9.                                                                                      
  10. ifeq ($(BR2_TARGET_ROOTFS_TINY4412_EXT4),y)                                          
  11. PACKAGES_PERMISSIONS_TABLE :=                                                        
  12. endif                                                                                
  13.                                                                                      
  14.                                                                                      
  15. define ROOTFS_TINY4412_EXT4_CMD                                                      
  16.        $(BR2_TARGET_ROOTFS_TINY4412_EXT4_MK_TOOL_PATH) $(TINY4412_EXT4_OPTS)$@  $(TARGET_DIR)  
  17. endef                                                                                
  18.                                                                                      
  19. $(eval $(call ROOTFS_TARGET,tiny4412_ext4))    

 

 

9.      接下来是make menuconfig的配置了。在menuconfig -->  Systemconfiguration中,customer skeleton path 和 path to permissiontable 这两项填充为1—4步骤中,我们所拷贝修改过的tiny4412_skeleton和tiny4412_device_table.txt。

Figure8 menuconfig -->  Systemconfiguration的配置

10.  在menuconfig -->   Filesystemimages中,选中我们刚刚特制的ext4 rootfs tor tiny4412,剩下的参数估计被make_ext4fs工具程序内部写死了,用默认的就行。另外,在该选项中,busybox被默认选中,所以busybox中的所有软件默认都被当做应用编译和install到output/target/目录下。

Figure9 menuconfig -->   Filesystem images的配置

11.  保存之后,make rootfs-tiny4412_ext4 就生成我们自己的文件系统了。用tiny4412的SD卡烧录进去,是可以boot起来的,对S00_tiny4412脚本进行进一步裁剪后,我们可以得到一个在tiny4412开发板上最小的能boot起来的Linux系统。

转载于:https://www.cnblogs.com/zzb-Dream-90Time/p/7111835.html

Buildroot根文件系统构建 文章目录Buildroot根文件系统构建一、何为buildroot?1. buildroot简介2. buildroot下载二、buildroot构建根文件系统1. 配置buildroot1. 配置 Target options2. 配置 Toolchain3. 配置 System configuration4. 配置 Filesystem images5. 禁止译 编译 Linux 内核和 uboot6. 配置 Target packages2. 编译buildroot3. buildroot根文件 阅读详情

相关推荐

基于Linux的Buildroot 制作根文件系统(rootfs)

基于Linux的Buildroot 制作根文件系统(rootfs)1.需要条件2.安装交叉编译链3.下载Buildroot代码包4.开始buildroot 制作根文件系统5.配置文件系统 menuconfig5.1、Target options —> 配置说明5.2.Build options —> 配置说明5.3.Toolchain —> 配置说明5.4.System configuration —> 配置说明5.5Kernel —> 配置说明5.6.Target packa

qq_39721016的博客 1万+

buildroot介绍

《buildroot介绍》

danshiming的博客 1万+

利用buildroot构建rootfs

利用buildroot构建rootfsbuildroot是一个开源项目,类似于busybox的一种集成包,其主要功能是提供了交叉编译工具链和rootfs的制作 对于厂商提供的bsp包,很多时候rootfs会以buildroot的方式提供,所以学会使用buildroot来构建rootfs是很有必要的

XiaoBaWu的博客 1万+

buildroot快速入门

buildroot使用例子

Austin_2020的博客 9333

构建定制化的嵌入式 Linux 系统:了解 Buildroot

configs/:该目录包含了Buildroot的配置文件,每个配置文件对应一个不同的目标平台。可以在此目录下找到示例配置文件和自定义配置文件。docs/:该目录包含了Buildroot的文档文件,包括用户手册、开发者手册、常见问题解答等。dl/:该目录用于存放下载的软件包源码压缩包。output/:该目录是构建过程的输出目录,其中包含完整的目标文件系统镜像和其他生成的文件。package/:该目录是Buildroot的核心目录之一,它包含了构建所需的各个软件包的描述文件。

小灰灰的博客 3725

用PyTorch手把手搭建液态神经网络(LNN):从微分方程到无人机避障实战

本文详细介绍了如何使用PyTorch搭建液态神经网络(LNN),从微分方程基础到无人机避障实战应用。LNN通过动态时序建模和微分方程实现高效计算,特别适合多传感器数据融合场景。文章包含完整的代码实现、训练技巧及性能优化方案,帮助开发者快速掌握这一前沿技术。

uber9的博客 436

Buildroot构建指南——根文件系统(Rootfs)

Buildroot构建指南——根文件系统(Rootfs) Buildroot的Rootfs构建流程有一个大框架,有些部分是Buildroot系统做好的,有些细节需要自己来实现,Rootfs也是Buildroot中最为复杂的部分。

zhou_chenz的博客 1万+

以太网物理层协议整理(2)-万兆以太网

在万兆以太网标准化过程中,IEEE和10GEA(万兆以太网联盟)是两个最重要的组织。 万兆以太网标准和规范都比较繁多,在标准方面,首先有2002年的IEEE 802.3ae,后来也不断有新的万兆以太网规范推出,如2006年的IEEE 802.3an标准(10GBase-T)就推出了基于双绞铜线的万兆以太网规范,同样的IEEE 802.3aq标准推出了基于光纤的10GBase-LRM;2007年的

NowOrNever 3万+

根文件系统(rootfs) 制作方法(BusyBox、Buildroot、Yocto、Ubuntu Base)

制作的四种主流方法(BusyBox、Buildroot、Yocto、Ubuntu Base)的详细教程与对比分析,结合不同场景的需求提供具体实现步骤和关键要点。

niuTyler的博客 2746

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 653

微信小游戏审核避坑指南:如何一次性通过微信审核(附最新审核要求)

本文详细解析微信小游戏审核全流程,提供从开发到上线的关键策略,帮助开发者一次性通过审核。涵盖合规性自查、材料优化、开发环境配置、版本管理、审核材料填写技巧等核心内容,并附最新审核要求和常见驳回问题解决方案,显著提升审核通过率。

weixin_28454475的博客 1362

浅谈ARM嵌入式中的根文件系统rootfs

根文件系统和 Linux 内核是分开的,单独的 Linux 内核是没法正常工作的,必须要搭配根文件系统。根文件系统的这个“根”字就说明了这个文件系统的重要性,它是其他文件系统的根,没有这个“根”,其他的文件系统或者软件就别想工作。嵌入式会把rootfs保存在NAND flash或EMMC中。内核可以直接挂载Emmc中的rootfs;也可以使用uboot把rootfs加载到ramdisk中,挂载内存中的rootfs。

katerdaisy的博客 2074

vue2 - 最新详细实现高德地图绘制动态热力图详细教程,在某区域或城市地图上做“热力图层“展示人流量、旅游人口密度、热量图、全国地区地理热力图,利用颜色的深浅表示密度或强度等场景(详细示例代码教程)

vue2,nuxt2,高德地图,热力图,绘制热力图层,报错,卡顿,出不来怎么办,无法关闭,怎么解决这个问题,出错,城市名称,城市某个街道,城区,省份,市区,县城,乡镇,村,各省份的热力图,交通流量,人口流量,密度,旅游出行,人口数量,颜色介绍,深浅代表,人流量,vue2使用高德地图实现某个区域热力图,vue高德地图api加载热力图及关闭,接收热力图数据并渲染热力图,关掉热力图,Vue使用高德API制作热力图,热力图加载不出来,电子围栏围住热力图,vue2中使用高德地图渲染热力图组件,高德地图使用热力图详细教

✅ 精选推荐文章 4194

Linux 基于buildroot移植根文件系统

目录简介buildroot简介移植目标编译构建根文件系统增加自启动脚本常见问题 简介 rootfs(root file system根文件系统),是一个文件系统,内核启动过后第一个挂载它,kernel会引导程序加载一些文件系统中的脚本和服务进行初始化。 Linux支持多种文件系统:ext3(extended file system)、nfs(network file system)、jffs、romfs(只读文件系统,可通过ramdisk访问)。 VFS(虚拟文件系统):对不同的文件系统做一个抽象,提供统一

fengweibo112的博客 1552

C 语言多文件编程 : 大型程序的组织与管理

本文介绍了C语言多文件编程的核心概念与实践方法。主要内容包括:1. 多文件编程的必要性:解决单文件编程在大型项目中的维护和协作问题;2. 文件组织方式:头文件(.h)负责声明接口,源文件(.c)实现具体功能;3. 编译链接过程:分阶段编译和链接多个源文件;4. 头文件设计原则:包含接口声明、使用保护机制、保持自包含性;5. 模块化实践:通过示例展示学生信息管理系统的模块划分;6. 构建工具:介绍Makefile的编写和使用方法。文章还提供了创建静态库和动态库的指导,并强调了模块化设计、信息隐藏等软件工程原则

2503_91057718的博客 1937

从 Open SQL JOIN 走向 ABAP CDS Association:把查询写成可复用的数据模型

摘要: 本文通过飞行模型示例,对比了ABAP中三种表关联实现方式:Open SQL JOIN、CDS显式JOIN和CDS Association。重点解析了Association的本质是将表关系声明为数据模型语言,使用时通过路径表达式按需展开为JOIN。文章指出路径表达式在不同位置会默认展开为不同JOIN类型(如SELECT列表默认为LEFT OUTER),并演示了如何用[inner]强制指定INNER JOIN。最后结合S/4HANA实际案例,说明Association通过中心化关系定义和路径复用,能有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 365

基于Buildroot的rootfs制作

基于Buildroot的rootfs制作 本文当记录使用buildroot制作rockchip-rk3288平台的rootfs过程。 1.准备工作 首先,需要到Buildroot的官网下载最新版本的源码,以及官方的使用手册。使用手册的第二章说明了Buildroot在Linux上编译时所依赖的工具以及第三方库。下面列列出了可能用到的软件包: sudo apt-get install repo git...

飞翔de刺猬 7479

S7-1200 PLC PID功能 | 调节PID参数

S7-1200 PLC PID功能 | 调节PID参数

Robot_PLC_HMI_Automation 1万+

使用 Buildroot 构建文件系统

使用 busybox 构建文件系统但是 busybox 构建的文件系统很多东西需要自己交叉编译添加,某些软件需要自己去移植,所以移植过程是非常繁琐的。有另外一种非常实用的根文件系统构建方法——使用 Buildroot 来构建根文件系统。Buildroot 不仅集成了 busybox,而且还集成了各种常见的第三方库和软件,需要什么软件,选择哪个软件就好。Buildroot 介绍和实操接下来我们直接使用 Buildroot 来制作根文件系统。如何决定是否编译某些包:菜单内容来自哪里?

wei_Embedded_z的博客 3998

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Buildroot构建指南--Overview

使用Buildroot,让嵌入式Linux系统构建更加便捷。本文以Buildroot-2016.05的版本为基础来讲解,不同版本之间有细节差异,需要根据读者使用的版本自行调整。 Buildroot是什么 Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(

zhou_chenz的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

根文件系统rootfs制作——使用buildroot工具(重制版)

之前使用的busybox构建根文件系统,在实际使用时缺少一些第三方库,所以补档了一个buildroot制作的。

weixin_45682654的博客 2529

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Buildroot 构建自定义 Linux 系统完整攻略:从 menuconfig 到 rootfs 裁剪的每一步

Buildroot 以 Makefile + Kconfig 的简单模型,在嵌入式 Linux 构建领域提供了极高效率。defconfig 即文档——注释完整的配置文件本身就是技术文档。post-build.sh 是尺寸控制的核心——通过删除编译产物可将 rootfs 压缩至原始体积的 30%。内部工具链优于外部工具链——版本锁定避免了"半年后构建不通过"的经典问题。更新单 package 用,但出问题时务必执行make clean。适用于快速原型和高确定性的小批量项目。

qq_42431428的博客 9976
上一篇: Buildroot构建指南--快速上手与实用技巧【转】
下一篇: vim插件:显示树形目录插件NERDTree安装 和 使用【转】
anfeng3664
博客等级 码龄10年 62粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值