嵌入式Linux-根文件系统1_如何移植busybox和动态共享库

BusyBox构建嵌入式Linux根文件系统全攻略 Linux系统要正常运行,除了内核,还必须有一整套用户态工具与初始化逻辑,这些内容共同构成根文件系统。根文件系统承载了系统的第一个进程init、设备节点、动态库以及常用命令,是系统启动后赖以工作的基础。在资源受限的嵌入式环境中,完整桌面发行版体积过大,无法直接使用。BusyBox通过将数百个常用命令封装为单一可执行文件,配合符号链接与applet分发机制,显著降低存储占用,成为嵌入式Linux场景下的标准工具。其功能覆盖init进程管理、文件操作、网络配置等核心需求,可直接用于构建最小根文件系统。实际开发中 阅读详情

一.busybox

编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 这些目录下存储的主要是常用命令的二进制文件。有了busyb,就不需要自己编写这几百个常用命令的源程序,而是直接调用。

         下载BUSYBOX的源码包:http://busybox.net/downloads/

  1. tar xjvf busybox-1.7.0.tar.bz2解包
  2. 修改Makefile文件
  3. 175ARCH            ?= arm

         176 CROSS_COMPILE   ?= arm-linux-

    4.make menuconfig配置busybox


 配置和编译busybox:

    deconfig:默认配置

    allnoconfig:禁用所有的应用程序(空)

    alllyesconfig:启用所有的应用程序(完整)

    config:基于文本的 配置

    menuconfig:基于菜单配置

    clean:清除源代码树

    distclean:彻底清除源代码树

通常的 流程:

    配置 :make menuconfig

    编译 :make ARCH=arm  CROSS_COMPILE=arm-xilinx-linux-gnueabi-

    安装 :make ARCH=arm  CROSS_COMPILE=arm-xilinx-linux-gnueabi- install

安装之后默认生成_install 目录,里面有bin, sbin,usr/bin, usr/sbin 四个目录 。目录文件夹下是busybox的符合连接,bin下是可执行文件 。其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,而busybox本身的大小不到800K:将这四个文件夹拷贝出来:

    cd  _install

   cp -a  *  /zw/work/rootfs              


busybox配置主要分两部分。

第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:

1)、Build Options -- Build BusyBox as astatic binary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库。

2)、Installation Options -- Applets links(as soft-links) -- (X) as soft-links,表示安装busybox时,将各个命令安装为指向busybox的软链接还是硬链接。我们选择软链接。

3)、Installation Options --(/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安装位置。我们选择/work/nfs_root/fs_mini3

4)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab completion和Username completion以支持命令自动补全

第二部分是Applets,他将busybox的支持的几百个命令分门别类。我们只要在各个门类下选择想要的命令即可。这里我们基本保持默认设置。

1)选中Networking Utilities -- httpd下的Enable -u <user> option,以启用http服务器的功能allows the server to run as a specificuser


二。选择必要的动态共享库          

    如果出现error while loading shared libraries,表示动态连接器找不到动态共享库。

连接器的搜索目录顺序是 :

1.Makefile中 对GCC连接加入参数 “-Wl,-rpath”指定 动态库搜索路径

2.环境变量 LD_LIBRARY_PATH指定动态库搜索路径

3.默认动态库搜索路径 /lib

4. 默认动态库搜索路径 /usr/lib

嵌入式系统中 ,一般把所需要的库统一放到/lib目录中 ,

 



从零构建嵌入式Linux根文件系统:基于BusyBox的实战指南 根文件系统是Linux操作系统启动后加载的第一个文件系统,它包含了系统运行所必需的命令、库、配置文件和设备节点,是内核与用户空间交互的桥梁。其核心原理在于遵循FHS标准,构建一个层次化的目录树,每个目录都有特定职能,如/bin存放基础命令,/lib存放共享库。对于嵌入式开发而言,构建一个精简、可靠的根文件系统是降低存储成本、确保系统稳定运行的关键技术。在实际应用中,开发者常面临库依赖、启动流程配置、存储空间优化等挑战。本文聚焦于使用BusyBox这一集成了上百个Unix工具的软件包,它通过单一可执行文件配合 阅读详情

相关推荐

嵌入式Linux开发-busybox根文件系统制作

Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。根文件系统作为系统的`根`,系统启动之后为完成一些初始化配置,操作。比如:系统登录输入的开机密码、开机账户这些信息就是存放在根文件系统里的。

1137

编译busybox 动态链接库方式

编译busybox 动态连库方式

jenthyu的博客 1234

嵌入式Linux根文件系统制作:BusyBox从骨架到initramfs实战

操作系统启动时,内核完成硬件初始化后必须找到并挂载根文件系统,才能执行用户态进程。根文件系统提供了内核启动后所需的整个用户态环境,包括init、shell和各类命令。嵌入式Linux开发中,BusyBox通过将数百个常用命令压缩进单一ELF文件,配合少量软链接即可构建完整用户态,成为制作根文件系统的主流方案。使用交叉编译工具链为ARM等目标平台生成静态链接的BusyBox,搭好/proc、/sys、/dev等目录骨架并编写rcS脚本,再利用cpio打包成initramfs或制作ext磁盘镜像,即可完成一套可

weixin_29164185的博客 312

busybox动态库问题

本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。 作者:fireaxe_hq@hotmail.com 博客:fireaxe.blog.chinaunix.net 环境: Environment:Ubuntu 12.04 tool-chain:DENX的ELDK-P

rfidunion的博客 2325

用Busybox构建嵌入式Linux根文件系统:从配置到initrd制作全流程

嵌入式Linux系统的正常启动,离不开内核与根文件系统的紧密配合,而根文件系统的构建质量直接决定了系统能否进入用户态。Busybox凭借单二进制模型,将众多常用命令集成于一个可执行文件,大幅降低了嵌入式目标板对存储资源的需求。借助交叉编译工具链,开发者可以裁剪出适合特定硬件的运行环境,并通过initrd镜像机制在系统启动早期完成设备初始化与程序加载。掌握Busybox配置、目录骨架搭建、共享库复制、设备节点手工创建以及initrd.img.gz镜像制作流程,既能应对“Kernel panic”等启动异常,也

weixin_29175469的博客 244

GPS-SDR-SIM使用详解

GPS-SDR-SIM 是一款开源工具,能够生成 GPS 基带信号数据流,这些数据流可通过软件定义无线电(SDR)平台(如 ADALM-Pluto、bladeRF、HackRF、USRP 等)转换为射频(RF)信号。简单来说,它能模拟 GPS 卫星信号,帮助开发者或爱好者测试 GPS 接收设备的性能,而无需依赖真实的卫星信号。

qq_35621280的博客 1241

移植Busybox与构建Linux根文件系统

0.简介 本文旨在为以LOONGSON-1B开发板为平台,为移植busybox、构建根文件系统提供技术文档。 开发环境:     系统环境:Loongson-1B开发板(mips32指令集)、Linux3.0.0内核、Busybox1.19.2     编译环境:ubuntu10.04 ,gcc-3.4.6-2f 1. Busybox下载和配置: 1.1 下载Busybox 进入地址

Skyline的专栏 3617

电动汽车整车控制器 UDS诊断功能开发调试优化方法

摘要:通过某电动汽车VCU开发过程中,UDS诊断功能的调试,发现一些测试中存在的问题,比如覆盖度不够、效率低下等,提出了相应的优化方法,并经过测试验证其可行性,此方法亦可推广应用至BMS、HCM等其他控制器的UDS诊断开发调试过程中。希望能给相关技术人员带来参考和帮助。

qq_43011586的博客 2142

移植Busybox和构建根文件系统

本文摘取自韦东山老师的《嵌入式Linux应用开发完全手册》

饕餮的阿周 1720

【OpenClaw从入门到精通】命令行操作指南——TUI模式高效管理OpenClaw(2026避坑版)

本文将详细介绍OpenClaw的命令行操作,重点介绍TUI(Text User Interface)模式的高效使用方法,以及在实际使用中需要避免的常见陷阱。通过本文的学习,你将掌握OpenClaw命令行的精髓,提升工作效率。

一键难忘的博客 1691

uniapp+renderJS+google map开发安卓版APP非小程序

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 667

<linux> busybox制作rootfs

busybox制作rootfⅠ、下载busyboxⅡ、修改busybox支持中文字符Ⅲ、选择配置基于defconfig上选择一些基本配置1. 选择动态库编译busybox2. 选择vi支持命令行3.取消simplified modutils4. 选择mdev5.选择unicode,支持中文Ⅳ、交叉编译工具配置Ⅴ、编译busybox,输出到指定文件夹 Ⅰ、下载busybox 本次实验在ubuntu环境下进行。 busybox的官方链接https://busybox.net/ 找到某个版本的busybox,点击

weixin_43580872的博客 2267

桌面运维工程师面试题详解(一)

桌面运维工程师面试题详解(一)

jks212454的博客 1424

Linux根文件系统移植

Linux根文件系统移植

qq_52479948的博客 1327

手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第一节-ATK-ESP8266 WIFI模块通过USB-TTL实现连接原子云服务器与手机APP互相通信

本节实现ATK-ESP8266 WIFI模块通过USB-TTL实现连接原子云服务器与手机APP通信。具体来说,本节使用串口CH340(USB-TTL)连接正点原子ATK-ESP8266 WIFI模块,通过AT命令实现连接原子云服务器与手机APP互相通信,实现硬件设备(WIFI模块)与云服务器和手机APP的互相通信。后面章节不用串口CH340(USB-TTL),通过编写单片机程序实现数据远程互相通信,并介绍手机APP的程序设计。单片机任意款即可,STM32F1系列,F4系列,H系列等都可以。本系列为(手把手实

嵌入式阿齐Archie 8419

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

linux系统移植篇(四)—— 根文件系统使用介绍

linux系列目录: linux基础篇(一)——GCC和Makefile编译过程 linux基础篇(二)——静态和动态链接 ARM裸机篇(一)——i.MX6ULL介绍 ARM裸机篇(二)——i.MX6ULL启动过程 ARM裸机篇(三)——i.MX6ULL第一个裸机程序 ARM裸机篇(四)——重定位和地址无关码 ARM裸机篇(五)——异常和中断 linux系统移植篇(一)—— linux系统组成 linux系统移植篇(二)—— Uboot使用介绍 linux系统移植篇(三)—— Linux 内核使用介绍 li

sinat_31039061的博客 3876

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux--根文件系统移植

BusyBox是一个集成了大量的 Linux命令和工具的软件,像lsmvifconfig等命令BusyBox都会提供。BusyBox就是一个大的工具箱,这个工具箱里面集成了 Linux的许多工具和命令。一般下载BusyBox的源码, 然后配置 BusyBox,选择自己想要的功能,最后编译即可。BusyBox可以在其官网下载到,官网地址为:,官网比较简陋,BusyBox 准备好以后就可以构建根文件系统了。

qq_47258284的博客 1388

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux系统裁剪移植:Busybox

类比windows的启动流程,linux系统的启动流程如下:系统上电后会加载bootloader,由bootloader去启动linux内核,内核会加载根文件系统,通过跟文件系统运行APP。那么bootloader如何找到内核,首先学习一下EMMC的存储布局。

qq_45132517的博客 745

busybox根文件系统移植

BusyBox 根文件系统移植主要可以分为两个部分:一是 BusyBox 的编译过程,二是 BusyBox 根文件系统的启动流程。1、BusyBox是一个“多调用可执行程序”,编译时会根据.config把lscatmountinitsh等多个applet功能链接进同一个busyboxELF;执行/bin/ls时,内核先沿着软链接加载,BusyBox再从argv[0]取得命令名ls,查找applet表并调用ls_main(),并不是先查表再寻找软链接。2、根文件系统则是Linux挂载为。

2501_92596338的博客 193

BusyBox与嵌入式Linux根文件系统搭建实战:从原理到调试

BusyBox是嵌入式Linux中最基础的工具集,一个二进制集成数百个常用命令,被誉为“瑞士军刀”。理解其applet分发机制是构建最小根文件系统的前提。通过交叉编译和make install可快速生成精简rootfs,结合NFS挂载实现宿主机与开发板的高效调试。实际工程中常需集成dropbear以提供安全的SSH访问,同时还需处理init、设备节点、动态库等启动问题。本文从BusyBox原理出发,讲解如何从零搭建可运行的根文件系统,并给出常见故障的排查思路,适合嵌入式Linux bring-up开发者参考

weixin_29174013的博客 162

linux系统移植和根文件系统制作,linux文件系统的移植-根文件系统制作

linux文件系统的移植-根文件系统制作根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚linux文件系统的移植-根文件系统制作根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于...

weixin_33585152的博客 387

根文件系统实验

 本实验完成如何构建自己所需要的根文件系统,包括初始化脚本、常用的命令、库文件及设备等。1. 创建空的目录树         首先创建一个空的目录树,来作为根文件系统的基础。mkdir rootfscd rootfs/mkdir bin dev etc lib mnt proc sbin sys tmp usr

chenglian_999的专栏 1183

BusyBox移植到ARM架构的核心要点解析

深入解析将busybox成功移植到ARM架构过程中的核心问题与解决方案,涵盖配置、编译及系统集成等关键环节,帮助开发者高效构建轻量级嵌入式系统。

weixin_42153793的博客 405

嵌入式开发实战:用BusyBox 1.21.1构建最小根文件系统的完整流程(附常见错误排查)

本文详细介绍了使用BusyBox 1.21.1构建嵌入式Linux最小根文件系统的完整流程,涵盖环境准备、BusyBox交叉编译、C库补全、关键配置文件编写以及NFS调试与部署。重点解析了构建过程中的常见错误,如工具链配置、动态链接器缺失、NFS挂载失败等,并提供了具体的排查与解决方案,帮助开发者快速搭建稳定可用的嵌入式系统基础环境。

qsc901234的博客 331
上一篇: 嵌入式Linux-定制根文件系统
下一篇: 嵌入式Linux-根文件系统2_(利用交叉编译工具链,构建/lib目录)
linux_0416
博客等级 码龄9年 79粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值