busybox rootfs

从零构建嵌入式Linux:BusyBox定制化根文件系统rootfs的实践指南 本文详细介绍了如何从零构建嵌入式Linux的BusyBox定制化根文件系统(rootfs),包括BusyBox配置与编译、根文件系统骨架构建、动态库与设备文件处理等关键步骤。通过实战指南帮助开发者掌握精简高效的rootfs构建技巧,适用于资源受限的嵌入式设备开发。 阅读详情

 下载busybox的源码,解压后,设定ARCH 和 CROSS_COMPILE的两个基本环境变量,选择defconfig作为默认配置,大部分的busybox 工具都会被编译出来。
      如果不指定输出目录,默认输出到根目录的_install目录下面,如果需要指定目录,配置CONFIG_PREFIX=/a/b/c/rootfs, 这样make生成的 /bin, /sbin, /usr三个默认文件夹就直接在rootfs目录下。      

make ARCH=arm CROSS_COMPILE=arm-linux-gnu-eabihf-   defconfig

      这样,busybox的工具文件都生成了, 默认情况下,busybox的可执行文件,不是静态链接的, 可以用readelf -d命令查看busybox依赖的库,所以需要把刚才用的交叉编译comipler的lib文件,都copy到rootfs的lib目录下。(这里要删除*.a *.la *.o等文件,只保留*.so文件)     

 mkdir rootfs/lib
   cp -rf /toolchain/arm-linux-gnu-eabi/lib/libc /rootfs/lib

      这里, 默认的libc库文件都比较大,包含了调试信息,符号信息等,不适合在嵌入式的有限内存空间场景,因此需要做好裁剪,使用strip命令去除debug信息。
      同样的, libc/usr/lib/下面的库文件,也需要复制到rootfs下面。这里要删除*.a *.la *.o等文件,只保留*.so文件。 同时也用strip命令裁剪库文件。
      

mkdir -p rootfs/usr/lib
cp -rf /toolchain/arm-linux-gnu-eabi/lib/libc/usr/lib


     添加其他rootfs要用的默认目录文件,dev,proc, mnt, sys, tmp, root,etc。
     到这里,rootfs的骨架已经成型,接着要做的是添加kernel挂载rootfs后,要运行的init事务。
     kernel挂载rootfs为根目录,替换掉系统刚刚启动时创建的临时的vfs,并开始运行第一个程序,该程序默认存放在rootfs根目录下,名字是linuxrc或者是init(如果bootargs设置了init=/linuxrc就允许linuxrc)。
     linux先执行 /etc/inittab, 然后调用/etc/init.d/rcS, 最后是执行/etc/profile。
     所以我们要做的修改inittab,让kernel按指定的次序,依次执行启动脚本。下面是实际的inittab的例子:
     

::sysinit:/etc/bspinit
::sysinit:/etc/rc.sysinit
::respawn:-/bin/sh


bspinit内容如下

#!/bin/sh
mount -n -t tmpfs tmpfs /tmp
mount -n -t proc proc /proc
mount -n -t sysfs sysfs /sys
mount -n -t tmpfs -o mode=0755 udev /dev

# telnetd need later line.
mkdir /dev/pts
mount -t devpts devpts /dev/pts

# Oprofile
if [ -e /var/lib/oprofile ]; then
        mount -t tmpfs tmpfs /root
        mount -t tmpfs tmpfs /var/lib/oprofile
fi

[ -e /proc/sys/kernel/hotplug ] && echo "" > /proc/sys/kernel/hotplug
start-stop-daemon --start --quiet --exec /sbin/udevd -- --daemon
/sbin/udevadm trigger --subsystem-nomatch=usb
/sbin/udevadm settle --timeout=10

    在实际项目中,可以自己定义etc里面的内容,然后生成一个单独的emmc分区文件如etc_rw,系统启动的时候,挂载在rootfs的/etc/目录上,替换掉默认的etc内容。
    这样,一个完整可用的rootfs就创建完成。由嵌入式image生成脚本,完成后续的打包,放入不同的分区文件,写入emmc之中。

参考链接: https://blog.youkuaiyun.com/u012247418/article/details/106021389 
 

Linux 之 rootfs、busybox、buildroot 编译busyBox download https://developer.arm.com/ make menuconfig setting - > build as a static binary (空格) make make install cd _install 编译内核 export ARCH=arm 阅读详情

相关推荐

ARM64 Linux kernel + busybox rootFS via NFS over QEMU with GDB

由于条件所限,一般选择软件做前期模拟,这里做一些ARM 64 Linux kernel模拟运行环境搭建工作的总结,记录以便后用。 本文只涉及kernel + busybox rootFS via NFS over QEMU,以及gdb trace kernel。主机环境选择这里所说主机指模拟软件运行在上面的主机,本文只针对在X64 Linux主机上搭建ARM64 Linux kernel运行环境。

huaz的博客 3346

[busybox]用busybox做一个rootfs

忘了到底前几年看的一篇什么busybox的教程,写的极其复杂,以至于让我这么久以来一直不敢再去碰这个东西,直到今天又再次有了这个需求,特来再搞一次,没想到不到俩小时,一次搞定,将这过程记录下来,以后也好有个参考。

wangyijieonline的博客 3806

基于立创·庐山派K230的红色激光点识别和锁定追踪

本文介绍了一种基于立创・庐山派K230开发板的红色激光点识别与追踪系统。该系统通过摄像头采集图像,采用RGB565格式和Gamma校正进行预处理,利用颜色阈值筛选实现红色激光点检测。核心追踪算法采用状态机设计,包含未锁定和已锁定两种状态,通过计算欧氏距离判断目标连续性,并具有丢失计数机制确保稳定性。系统通过UART接口以自定义二进制协议输出坐标数据,同时提供可视化反馈。该方案在800×480分辨率下实现了实时、稳定的单目标追踪,具有检测精度高、响应速度快的特点,适用于工业定位和机器人导航等嵌入式视觉应用场景

m0_73738367的博客 1652

2.3【Linux系统移植之三】:使用BusyBox构建根文件系统(rootfs)

文章目录一、搭建NFS服务器二、使用BusyBox构建跟文件系统2.1 修改顶层Makefile2.2 busybox中文支持2.3 配置busybox2.4 编译busybox2.5 向根文件系统添加lib库2.5.1 向{rootfs}/lib目录下添加库文件2.5.2 向{rootfs}/usr/lib目录下添加库文件2.6 创建其他文件夹三、测试文件系统(NFS挂载)3.1 设置uboot中环境变量3.2 命令解析四、完善文件系统4.1 创建{rootfs}/etc/init.d/rcS 文件4.2

Ace's Blog 1069

【k8s实战】 在离线项目混部 通过kubeflow(tf-operator)部署TensorFlow机器学习任务+prometheus/grafana监控资源使用全过程(最新 图文)

目录在离线混合部署概念最新版kubeflow部署TensorFlow部署二级目录三级目录 在离线混合部署概念 先举一个例子,众所周知的天猫双十一当天的流量非常之大,那么就需要成百上千台服务器构成一个超大集群来提供计算能力,但是双十一过去之后,集群资源就面临着浪费的局面。假设业务分为在线和离线两种模式:在线任务需要资源相对较少,但要求响应时间短;离线任务则不需要对任务进行迅速响应,但是计算量相对较大、占用资源多。那么我们应该怎么在K8S集群上完成这两种业务的部署、并且使得CPU利用率始终维持在一个比较高的水平

Eros1on的博客 1546

CMU开源NavRL:深度强化学习如何破解无人机动态避障难题?

卡内基梅隆大学(CMU)开源了NavRL框架,利用深度强化学习解决无人机在复杂环境中的动态避障难题。该框架通过创新的状态表示、多目标奖励函数设计以及独立的安全屏障机制,使无人机能够通过仿真训练自主学会灵活、安全的导航策略,并成功实现从仿真到真实环境的零样本迁移。

hope8的博客 720

[架构之路-30]:目标系统 - 系统软件 - Linux OS根文件系统rootfs的概念、组成、制作以及用busybox制作根文件系统

根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而内核系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。根文件系统并不是Linux内核镜像的一部分,而独立于Linux内核镜像的镜像,在嵌入式系统中,根文件系统是文件系统,存放着除了Linux内核之外的所有设备厂家的程序、配置、数据。Linux内核的代码是由Linux官方提供的,根文件系统的结构也是Linux内核决定的,然而根文件系统的内容是由设备厂家决定的。

文火冰糖(王文兵)的博客 5625

信道估计准则演进:从LS、MMSE到LMMSE的工程权衡

本文深入探讨了信道估计准则的演进历程,从LS、MMSE到LMMSE的工程权衡。通过对比分析三大经典算法的数学本质、工程实现及适用场景,揭示了在计算复杂度、实时性和性能之间的关键取舍。文章结合4G/5G基站项目实战经验,提供了算法选型的三维决策模型和前沿发展建议,为无线通信系统设计提供实用指导。

weixin_29327525的博客 282

[busybox] busybox生成一个最精简rootfs(上)

这篇文章是承接着来的,再回看这篇我很久之前写的文章的时候,有一个问题出现在我的脑海中,创建了这个文件那个文件,但确实是每个文件都是必需的吗?这篇文章我们就来讨论下这个问题。

wangyijieonline的博客 1316

MATLAB并行开不了的解决办法

在服务器上新安装了MATLAB 2013b,在开并行计算的时候出现了下列问题 经过在网上搜多这个问题,我感觉这个问题应该是安装的时候的验证问题或者激活不成功之类的。注意其中有一句validate the profile ‘local’ in the Cluster Profile Manager.在matlab官网上找到了设置Cluster Manager的教程,如下 parallel>

sinat_36713319的博客 5987

【ESP32-IDF】I2S音频协议实战:从PDM麦克风到PCM扬声器的全链路解析

本文深入解析ESP32-S3的I2S音频协议,从PDM麦克风采集到PCM扬声器输出的全链路实现。详细介绍了硬件PDM转PCM、Standard模式配置及混合模式协同工作,提供实战代码与性能优化建议,助力开发者高效完成嵌入式音频项目开发。

pea55的博客 886

详细介绍使用busybox创建root_fs的完整流程(硬件:mini2440)

本文主要介绍制作root_fs的详细流程。笔者以mini2440为例,制作了该开发板的root_fs,内容包括:配置和编译busybox1.13.4,编写etc目录下文件内容,制作.imp镜像的方法等。最后,下载.imp文件到开发板中,验证其是否可以正常工作。

mftang的博客 1989

内窥镜胶囊(胶囊内镜)硬件方案

内窥镜胶囊(胶囊内镜)硬件方案 前言 说明:该方案为作者2018年上半年完成的第一版,后来搁置了一段时间,才重启这个项目。目前(2020.07)第二版已经快要完成。[联系v:1#7#6#3#3#3#5#0#8#7#0]先给一下第一版和第二版的基本参数。 第一版: 续航时间:3h 帧率:0.5fps 尺寸:12mm * 25mm 角度:45° 第二版: 续航时间:12h 帧率:2-6fps 尺寸:9.8mm * 25mm 角度:130° 第一版属于尝试版,整体方案不是很成熟。第二版这个数据就非常优秀了。我拿了

CrekerLi的博客 4778

基于busybox构建rootfs

它整合了许多Linux上常用的工具和命令(utilities), 如rm, ls, gzip, tftp等。对于这些工具和命令,busybox中的实现可能不是最全的,但却是最常用的,因此它的特点就是短小精悍,特别适合对尺寸很敏感的嵌入式系统。 官网:https://busybox.net/ 参考: http://www.tldp.org/HOWTO/Bootdisk-HOWTO/buildroot.html busybox有两个作用: 基于busybox构建rootfs 编..

ARM-Linux 3380

【阿里AgentScope框架】多框架组合:AgentScope加LangChain,让你的开发效率直线上升

本文以一个例子来看下AgentScope框架和LangChain如何实现融合使用,真的超级简单,一看就懂。这是一种思路,为多种框架的融合使用提供借鉴。

同学小张的博客 3471

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

<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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用busybox快速创建rootfs系统(硬件:atk-dl6y2c)

本文主要介绍如何使用busybox工具创建rootfs系统,交叉编译器版本为:gcc-linaro-4.9.4-arm-linux-gnueabihf。笔者通过实操的方式介绍制作rootfs的全过程。并将每个文件中的要编写的内容罗列出来,方便使用其作为一个设计的模版。

mftang的博客 1989

假人有限元模型

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

【原创】busybox 制作rootfs

busybox 制作rootfs 试验平台:TI 公司 AM335X

wfeng 1899

busybox制作的rootfs,启动脚本修改定制

对于busybox做的rootfs, linuxrc 是一个link,指向busybox /sbin/init是一个link,指向busybox。 追根溯源,流程大致如下: init程序(linuxrc) -> busybox -> /etc/inittab -> /etc/init.d/rcS 直接在/etc/init.d/rcS脚本文件末尾添加需要的脚本代码。 我们可以修改/...

Huskar_Liu的博客 1864

使用busybox制作rootfs

1  获取源码解压 从busybox的官方主页http://www.busybox.net ,下载busybox的源码,目前最新的版本为busybox-1.13.3.tar.bz2 #tar –jvxf busybox-1.13.3.tar.bz2 进入解压后的busybox源码目录 #cd busybox-1.13.3 2  配置busybox 步骤跟编译linux内核时很像 #m

larryliuqing的专栏-xxx 2778

利用busybox制作zedboard使用的rootfs

FHS(Filesystem Hierarchy Standard)标准介绍 /bin 必备的用户命令,例如ls、cp等 /sbin 必备的系统管理员命令,例如ifconfig、reboot等 /dev 设备文件,例如mtdblock0、tty1等 /etc 系统配置文件,包括启动文件,例如inittab等 /lib 必要的链接库,例如C链接库、内核模块 /home 普通用户主目录 /root r...

Huskar_Liu的博客 813

如何使用busybox编译和生成最简linux根文件系统(rootfs)

继前几天对uboot和内核编译进行了初步了解之后,昨天开始研究如何制作rootfs根文件系统。昨晚对busybox这个工具有了初步的了解,今天继续深入研究,终于成功的制作出了一套完整可用的最简linux rootfs根文件系统。现记录详细步骤以备日后查阅。一、准备工作1、首先交代系统版本和开发环境 操作系统:ubuntu 12.04(64bit); 交叉编译工具链:arm-linux-gcc 4.4

不积跬步,无以至千里! 1万+

busybox制作rootfs

用busybox创建基于Linux2.6.24内核的nfs根文件系统   一、主机环境   Linux version 2.4.20-8, RedHat9, VMWare5.5.3;   gcc version 3.4.4, Thread model: posix;   GNU Make 3.81;   arm-linux-gcc 4.2.1 (此创建过程见另贴用crosstool脚本

云行雨施 品物流形 4366

rootfs的制作(busybox)和安装

1、创建根文件系统的目录 [root@localhost fs]# ls [root@localhost fs]# mkdir myrootfs [root@localhost fs]# cd myrootfs/ [root@localhost myrootfs]# mkdir bin dev etc lib proc sbin sys usr mnt tmp var [root@l

chuanzhilong的博客 3262
上一篇: initrd ramfs
下一篇: HDR HDR10+ DolbyVision
liveloading
博客等级 码龄7年 53粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值