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

【buildroot】buildroot使用总结 一、buildroot使用步骤 1、构建图形配置界面 make menuconfig 编译出图形配置界面,如下图所示: 2、配置Target options ​ 在该项下,主要有以下配置选项: 这里以ARM contex-A7型处理器为例,配置选项如下: Target options -> Target Architecture = ARM (little endian) -> Target Binary Format = ELF -> Ta 阅读详情

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最后的名字

 

config BR2_TARGET_ROOTFS_TINY4412_EXT4                                                                                  
        bool"ext4 root filesystem for tiny4412"                                   
        help                                                                       
          Build aext4 root filesystem specify for tiny4412                        
                                                                                   
if BR2_TARGET_ROOTFS_TINY4412_EXT4                                                 
                                                                                   
                                                                                   
config BR2_TARGET_ROOTFS_TINY4412_EXT4_LEN                                         
        string"length of rootfs"                                                  
        default"397508608"                                                        
                                                                                    
                                                                                   
config BR2_TARGET_ROOTFS_TINY4412_EXT4_MK_TOOL_PATH                                
        string "make image toolpath"                                              
        default"$(TOPDIR)/fs/tiny4412_ext4/make_ext4fs"                           
                                                                                   
                                                                                    
config BR2_TARGET_ROOTFS_TINY4412_EXT4_IMAGE_NAME                                  
        string"image name"                                                        
        default"rootfs_qtopia_qt4.img"                                            
endif        

                     

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

 

################################################################################                                        
#                                                                                   
# Build the TINY4412_EXT4 root filesystem image                                    
#                                                                                  
################################################################################
                                                                                   
TINY4412_EXT4_OPTS := -s -l$(BR2_TARGET_ROOTFS_TINY4412_EXT4_LEN)                 
TINY4412_EXT4_OPTS += -a root -L Linux                                             
                                                                                   
ifeq ($(BR2_TARGET_ROOTFS_TINY4412_EXT4),y)                                        
PACKAGES_PERMISSIONS_TABLE :=                                                      
endif                                                                              
                                                                                   
                                                                                   
define ROOTFS_TINY4412_EXT4_CMD                                                    
       $(BR2_TARGET_ROOTFS_TINY4412_EXT4_MK_TOOL_PATH) $(TINY4412_EXT4_OPTS)$@  $(TARGET_DIR)
endef                                                                              
                                                                                   
$(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系统。

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

相关推荐

Buildroot构建根文件系统时,为什么你的rootfs.tar总比别人的大?深度解析裁剪技巧

本文深入解析Buildroot构建根文件系统时rootfs.tar体积过大的问题,揭示五大元凶并提供优化方案。从冗余库文件到无用内核模块,详细指导如何通过配置优化、软件包精选和高级裁剪技术,将镜像从1GB+缩减到300MB以下,提升嵌入式Linux开发效率。

weixin_29235923的博客 411

buildroot介绍

《buildroot介绍》

danshiming的博客 1万+

Buildroot实战:如何用BR2_ROOTFS_OVERLAY定制你的嵌入式根文件系统(附PX30案例)

本文详细介绍了如何使用Buildroot的BR2_ROOTFS_OVERLAY机制高效定制嵌入式根文件系统。通过非侵入式覆盖目录,开发者可以快速替换配置文件、添加应用和资源,无需修改源码包。文章以Rockchip PX30平台为例,从原理、目录规划、配置集成到构建验证,提供了完整的实战指南和避坑技巧,帮助开发者大幅提升固件定制效率。

weixin_29193359的博客 272

buildroot快速入门

buildroot使用例子

Austin_2020的博客 9333

Buildroot实战:如何用BR2_ROOTFS_OVERLAY快速定制你的嵌入式根文件系统(附PX30开发板案例)

本文深入探讨了如何使用Buildroot的BR2_ROOTFS_OVERLAY功能快速定制嵌入式根文件系统,特别以PX30开发板为例,详细解析了文件覆盖机制、实战配置步骤及高级优化策略。通过模块化覆盖和动态生成技术,开发者能高效预置固件、服务脚本等资源,显著提升嵌入式系统的开发效率和维护性。

fff88的博客 956

Linux根文件系统构建指南与优化技巧

Linux根文件系统(rootfs)是操作系统启动时挂载的第一个文件系统,包含系统运行必需的基础目录、配置文件和工具程序。作为Linux系统的基础架构,其设计直接影响系统的稳定性和性能。在嵌入式开发中,根文件系统需要特别考虑空间优化和硬件适配,常用的构建工具包括Buildroot和Yocto Project。通过合理选择文件系统格式(如ext4、squashfs)和采用动态链接优化等技术,可以显著提升系统效率。这些技术在物联网设备、嵌入式系统和服务器初始化等场景都有广泛应用,特别是在资源受限环境下,根文件系

weixin_30367169的博客 333

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

本文转载自; 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] Buildroot构建指南——根文件系统(Rootfs) Buildroot的Rootfs构建流程有一个大框架,有些部分是Buildroot系统做好的,有些细节需要自己来实现,Rootfs也是Buildroot中最为复杂的部分。 Rootfs...

215

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

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

小灰灰的博客 3725

Linux第59步_“buildroot”构建根文件系统第1步_生成rootfs.tar和rootfs.ext4以及通过nfs下载测试

学习Linux第59步,就是安装“buildroot”,通过配置构建根文件系统,编译生成rootfs.tar和rootfs.ext4,以及通过nfs下载测试。

weixin_42550185的博客 3232

GitLab社区版vs企业版:本地部署性能对比与选型建议(含实测数据)

本文深入对比GitLab社区版(CE)与企业版(EE)在本地部署中的性能差异与功能特性,提供实测数据与选型建议。测试显示EE版在并发克隆、CI流水线启动等场景性能提升显著,尤其适合需要高级安全合规与CI/CD功能的团队。文章还包含硬件配置指南与成本效益分析,帮助技术决策者做出明智选择。

weixin_28828243的博客 284

李沐之数值稳定性+模型初始化和激活函数

层记为t,这里的y不是预测,还包括了损失函数,y是优化函数,不是预测的结果y。第t层是输出。所有的h都是一些向量,向量关于向量的导数是一个矩阵,所以用了很多次的矩阵乘法,出问题就在这里。

m0_51133942的博客 1519

Linux rootfs:编译buildroot-2020.02.9构建根文件系统

环境准备 PC:Ubuntu 16.04 Soc:imx6ull Linux kernel:4.1.15 toolchains:arm-linux-gnueabihf-gcc 4.9.4 buildroot:2020.02.9 (点击下载) 1、编译 1.1 编译说明 参考buildroot官方说明文档docs/manual/manual.pdf的第4章Buildroot quick start,在编译时与内核或busybox的编译类似,都可以执行make menuconfig进行配置后执行make

weixin_44498318的博客 1305

AIGC内容溯源技术:如何追踪AI生成内容的原始来源

本文旨在系统性地介绍AIGC内容溯源的技术体系,帮助读者理解如何追踪AI生成内容的来源。我们将覆盖从基础概念到前沿技术的完整知识链,包括但不限于数字水印、区块链存证、内容指纹等技术方案。文章将从AIGC的基本概念出发,逐步深入探讨各种溯源技术,分析其原理和实现,最后讨论实际应用和未来趋势。AIGC:AI Generated Content,人工智能生成内容内容溯源:追踪数字内容的创作、修改和传播历史数字水印:嵌入在数字内容中的不可见识别信息数字水印:隐藏在内容中的识别信息,像隐形墨水内容指纹。

SuperAGI2025 2062

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

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

katerdaisy的博客 2073

如何使用Ray和PyTorch训练模型

用户编写训练函数 → 定义单机训练逻辑。通过扩缩容配置 → 指定需要多少资源(Worker 数量、CPU/GPU)。训练器整合训练函数和配置 → 自动将训练函数分发到多个 Worker 上并行执行。Worker 运行训练函数 → 在分布式环境中完成模型训练。通过这种模式,Ray Train 实现了对分布式训练的抽象,用户只需关注单机训练逻辑,无需手动管理分布式通信和资源分配。

m0_62464865的博客 1916

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法

LeeKwen的专栏 2156

Buildroot构建根文件系统避坑大全:从rootfs.tar生成到开发板部署的5个关键检查点

本文详细解析了使用Buildroot构建嵌入式Linux根文件系统时,从生成rootfs.tar镜像到开发板部署的完整流程。重点梳理了工具链配置、文件系统镜像大小设置、内核模块支持、系统配置细节以及部署后验证等五个关键检查点,帮助开发者有效避开常见陷阱,确保系统稳定部署。

snow3的博客 194

TI单芯片毫米波雷达1642demo代码走读(一)

今天我们来实际看下代码。 首先使用CCS软件导入demo工程,工程有两个,一个是ARM的工程,工程名是mmw_mss_16xx;另一个是DSP的工程,工程名为mmw_dss_16xx。我们将这两个工程的主函数打开,分别位于mss_main.c和dss_main.c文件中。 先看mss的主函数,代码如下。我为每行代码都加了中文注释和自己的理解。 int main (void) { Task_Params taskPara...

1万+

1. 制作根文件系统rootfs

雯辰的博客 175

SAP项目中 Waterfall vs Agile 的深度对比分析背景:方法论的演进SAP项目实施方法论经历了显著的代际更替。早期以 ASAP(Accelerated SAP) 为代表,采用经典瀑

本文对比分析了SAP项目实施中瀑布模型(ASAP)与敏捷方法(SAP Activate)的核心差异。瀑布模型采用线性流程,需求固定但变更成本高;敏捷方法则通过迭代开发实现动态调整,强调最佳实践和用户持续参与。文章指出,SAP系统的复杂性使纯粹敏捷难以实施,需在标准化与定制化间取得平衡。最终建议根据项目特性选择方法论:稳定需求适用瀑布模型,变化频繁则推荐敏捷,而SAP Activate本质上是两者的结构化融合,代表未来趋势。关键在于匹配项目实际需求,而非盲目追随方法论潮流。

金牌架构师 336

Xilinx FPGA平台DDR3设计保姆式教程(1)DDR3基础简介

xilinx平台DDR3设计(1)DDR3简介 如果我们只是拿来用ddr搬砖,那么它就简单,知道IP怎么使用就好,但是要想知其所以然,理论知识是必备的,这也是我们初学者所欠缺的东西,慢慢修炼吧! 目录 一、DDR3简介 二、地址的概念及容量计算 三、重要给概念理解 3.2 列地址脉冲选通潜伏期 3.4 掩码 四、参考资料 一、DDR3简介 DDR3全称double-data-rate 3 synchronous dynamic RAM,即第三代双倍速率同步动态随机存储器。...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

buildroot-文件系统

Buildroot构建指南——根文件系统(Rootfs)     Buildroot的Rootfs构建流程有一个大框架,有些部分是Buildroot系统做好的,有些细节需要自己来实现,Rootfs也是Buildroot中最为复杂的部分。 Rootfs的构建流程概述 Rootfs的构建流程如图1所示。其中浅色框中为Buildroot实现的框架,深紫色框为用户实现的脚本。 Figure...

xiaoyu1233的博客 1872

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: Buildroot构建指南——Linux内核
下一篇: Linux内核重点精要
zhou_chenz
博客等级 码龄11年 1068粉丝 20原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值