Yocto学习笔记(三)配置Busybox

1 Busybox介绍

BusyBox 是一个开源的、轻量级的 Unix 工具箱,它集成了许多标准 Unix 工具的精简版本。它被设计用来运行在资源受限的环境中,例如嵌入式系统或者启动盘。BusyBox 将多个标准 Unix 实用工具整合到一个可执行文件中,这些工具包括文件操作、进程管理、网络配置、文本处理等。
BusyBox 的主要特点包括:

  1. 精简性:BusyBox 的设计理念是在小型的可执行文件中集成尽可能多的功能,以节省系统资源。
  2. 可配置性:可以根据需要选择性地编译包含或排除特定功能,以满足不同系统的要求。
  3. 可移植性:BusyBox 可以运行在各种不同的 POSIX 系统上,包括 Linux、BSD、Solaris 等。
  4. 开源性:BusyBox 是自由开源软件,采用 GPL 授权协议发布。

在嵌入式 Linux 系统中,BusyBox 被广泛应用于构建小型和高效的根文件系统。通过将多个功能整合到一个可执行文件中,BusyBox 可以显著减小系统的磁盘占用和内存占用。此外,BusyBox 也被用作启动脚本或者系统初始化脚本的工具箱,用于配置系统和启动服务。
总的来说,BusyBox 是一个功能强大、高效且灵活的工具箱,适用于各种嵌入式和资源受限的环境,为系统提供了基本的 Unix 命令行工具和脚本功能。

2 Yocto与busybox

嵌入式软件开发中,BusyBox 是一个轻量级的 Unix 工具箱,它集成了许多标准 Unix 实用工具的精简版本。通过在 Yocto 中配置 BusyBox,可以在嵌入式 Linux 系统中实现更小的文件系统和更低的资源消耗。
要在 Yocto 中使用 BusyBox,需要在 Yocto 的配置文件中将其包含到系统中,并指定要包含的 BusyBox 工具。下面是一些配置 BusyBox 的一般步骤:

  1. 打开 local.conf 或者其他配置文件,通常位于 /build/conf/ 目录下。
  2. 确保 busybox 被添加到 CORE_IMAGE_EXTRA_INSTALL 变量中,以确保 BusyBox 被包含在根文件系统中。
  3. 确保 BusyBox 中包含所需的工具。可以通过设置 BUSYBOX_FEATURES 变量来指定要包含的功能。例如,BUSYBOX_FEATURES 可以包含 “feature1 feature2 …” 的字符串。
  4. 重新构建你的 Yocto 映像,以包含 BusyBox。

在 BusyBox 配置中,你可以指定要包含的特定工具,以及在编译时要启用的功能。通过精心选择这些选项,可以确保 BusyBox 在系统中提供所需的功能,同时保持最小的系统资源占用。

3 Yocto配置busybox

使用busybox作为linux系统启动管理器,在distro/poky-customized.conf中添加如下代码将busybox作为默认的系统启动管理器,这样我们就可以通过编辑rcS,rcK文件来决定系统启动后和关机前执行的操作

# Use busybox as default init manager, config customized rcS, rcK
VIRTUAL-RUNTIME_init_manager = "busybox"

自定义的metalayer下的recipes-core文件夹中有imagesbusybox两个文件夹,在busybox文件夹中添加busybox_%.bbappendbusybox-inittab_%.bbappend文件,files中添加busybox-initutils.cfgbusybox-mdev.cfginittabrcKrcS文件
.
├── busybox
│ ├── busybox_%.bbappend
│ ├── busybox-inittab_%.bbappend
│ └── files
│ ├── busybox-initutils.cfg
│ ├── busybox-mdev.cfg
│ ├── inittab
│ ├── rcK
│ └── rcS
└── images
└── core-image-customized.bb

其中,files就是我们需要自定义配置的一些文件,用他们替代poky中busybox中的默认配置文件,因此在bbappend文件中,只需要在SRC_URI中添加这些文件即可,如下:

SRC_URI += " \file://busybox-initutils.cfg \file://busybox-mdev.cfg \file://rcS \file://rcK \"SRC_URI += " \file://inittab \"

3.1 inittab文件

inittab 是 Unix 和类 Unix 操作系统中的一个配置文件,用于指定系统引导时初始化进程(init)启动时应该执行的程序。该文件通常位于 /etc 目录下。
在 Linux 系统中,inittab 文件的作用是定义系统启动时要执行的初始化任务和服务,以及控制系统如何处理不同的运行级别(runlevel)。
inittab 文件的内容通常以行为单位组织,每行定义了一个任务或者服务的启动方式。每行的格式通常为:

id : runlevels : action : process

其中:

  • id 是一个唯一的标识符,用于表示要执行的任务或服务。
  • runlevels 指定了在哪些运行级别下要执行该任务或服务。运行级别是指系统的不同状态,通常用数字表示(如0、1、2、…、6),每个运行级别对应一组系统服务的状态。可以使用单个运行级别或者运行级别范围来指定,用逗号分隔。
  • action 指定了当系统运行到指定的运行级别时要执行的动作,常见的动作包括:
    ○ respawn:表示如果进程意外终止,则立即重新启动。
    ○ wait:表示等待指定的进程结束后再执行后续操作。
    ○ once:表示只执行一次,不会自动重新启动。
    ○ boot:表示在系统引导时执行。
  • process 是要执行的进程或者命令。

例如,一个简单的 inittab 文件可能如下所示:

::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty -L tty1 9600 vt100
::shutdown:/etc/init.d/rcK

这个文件表示在系统启动时执行/etc/init.d/rcS脚本(sysinit 动作),并在终端 tty1 上启动一个 getty 进程(respawn 动作),在系统结束时执行/etc/init.d/rcK 脚本
inittab 文件的内容可以根据需要进行自定义和调整,以满足特定系统的要求。

3.2 rcS文件

rcS 是一个用于系统初始化的脚本文件,在许多 Linux 系统中都可以找到。它通常位于 /etc/init.d 目录下,是在系统引导过程中被执行的一个重要的初始化脚本。
rcS 脚本的作用包括但不限于以下几个方面:

  1. 系统初始化任务的执行:rcS 脚本负责执行系统引导时需要进行的初始化任务,例如加载驱动程序、挂载文件系统、启动网络等。这些任务是在系统引导过程中必须要完成的操作,确保系统能够正常运行起来。
  2. 启动和管理系统服务:在一些 Linux 发行版中,rcS 脚本也负责启动和管理系统的各种服务。它可能会根据配置文件中的设置,启动指定的服务进程,并在需要时监控和重新启动这些服务。
  3. 设置环境变量和系统参数:rcS 脚本可能会设置一些系统级的环境变量和参数,以确保系统在运行时具有正确的配置和环境。
  4. 执行其他初始化任务:根据具体的系统配置和需求,rcS 脚本可能还会执行一些其他的初始化任务,例如清理临时文件、设置时钟等。

rcS 脚本在系统引导过程中是在早期阶段被执行的,它的作用是确保系统能够顺利启动并达到基本可用状态。因此,rcS 脚本的编写和配置非常重要,直接关系到系统的启动过程和稳定性。rcS的例子如下:

#!/bin/sh# Start all init scripts in /etc/rcS.d and /etc/rc5.d
# executing them in numerical order.
#
echo "<< rcS running scripts in /etc/rcS.d >>"for i in /etc/rcS.d/S??* /etc/rc5.d/S??* ;do# Ignore dangling symlinks (if any).[ ! -f "$i" ] && continuecase "$i" in*.sh)# Source shell script for speed.(trap - INT QUIT TSTPset start. $i);;*)# No sh extension, so fork subprocess.$i start;;esac
doneifconfig usb0 192.168.8.88start-stop-daemon -S -b -n your-app -a /usr/bin/your-appstart-debug-tools

3.3rcK文件

rcK 文件通常是 Linux 系统中的一个脚本文件,用于在系统关机或者重启时执行一些操作。它位于 /etc/init.d 目录下,是系统引导过程中的一个重要组成部分。
在 Linux 中,rcK 脚本的作用主要包括以下几个方面:

  1. 停止系统服务:rcK 脚本负责停止系统中正在运行的服务。在系统关机或者重启时,需要确保所有的服务都能够正常停止,以避免数据丢失或者系统资源泄露等问题。
  2. 卸载文件系统:rcK 脚本可能会卸载一些临时挂载的文件系统,释放系统资源并确保数据的完整性。
  3. 执行其他关机前的清理操作:根据系统的配置和需求,rcK 脚本可能会执行一些其他的关机前的清理操作,例如关闭网络连接、保存系统状态等。

rcK 脚本在系统关机或者重启时是在最后阶段被执行的,它的作用是确保系统能够安全地关闭并保存状态。因此,rcK 脚本的编写和配置非常重要,直接关系到系统的关机过程和数据的完整性。rcK的一个例子如下:

#!/bin/sh# Stop all init scripts in /etc/rc6.d
# executing them in numerical order.
#
echo "<< rcK stop all init scripts in /etc/rd6.d >>"for i in /etc/rc6.d/K??*; do# Ignore dangling symlinks (if any).[ ! -f "$i" ] && continuecase "$i" in*.sh)# Source shell script for speed.(trap - INT QUIT TSTPset stop. $i);;*)# No sh extension, so fork subprocess.$i stop;;esac
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何加密保护U盘?U盘加密方法盘点

U盘是目前最常用的移动存储设备&#xff0c;可以帮助我们存储大量数据。而为了保护数据安全&#xff0c;我们需要加密保护U盘。下面我们就来盘点一下U盘加密的方法。 BitLocker加密 BitLocker是Windows的一种磁盘保护工具&#xff0c;通过加密整个磁盘来保护数据&#xff0c;同…

基于Springboot的校园疫情防控信息管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园疫情防控信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

react生命周期及用法

React生命周期是React组件在挂载、更新和卸载过程中的一系列方法的集合。通过生命周期方法&#xff0c;我们可以在不同阶段执行特定的操作&#xff0c;例如初始化组件、更新状态、渲染UI等。 React生命周期分为三个阶段&#xff1a;挂载阶段、更新阶段和卸载阶段。以下是React…

Vscode编辑器 js 输入log自动补全

最近换了新电脑&#xff0c;新下载了Vscode&#xff0c;记录一下设置项。 Vscode 版本 想要的效果 js文件中输入log&#xff08;点击tab键&#xff09;&#xff0c;自动补全为 console.log() Vscode 文件》首选项》设置 搜索&#xff1a;snippets Emmet: Show Suggestions…

暗区突围TWITCH掉宝领测试资格后,steam激活显示是无效激活码

自《暗区突围》测试启动以来&#xff0c;吸引了大量玩家关注&#xff0c;特别是通过在Twitch平台上观看直播即可获得测试资格的活动&#xff0c;更是掀起了热潮。然而&#xff0c;部分玩家在成功获得激活码后&#xff0c;在Steam平台激活时遭遇了“无效激活码”的问题。本文将提…

nginx 配置域名SSL证书HTTPS服务

下载 上传根目录 /home/wwwroot/xx.com/ssl 从新执行 添加域名命令 选择添加SSL SSL Certificate file: 填写 完整目录 PEM文件地址 SSL Certificate Key file:填写 完整目录 key文件地址

python 对矩阵与矩阵之间对应位置的元素,做softmax操作,代码实战

1.对矩阵中对应位置的元素&#xff0c;做softmax 对于一个向量&#xff0c;softmax函数会对其中每一个元素进行指数运算&#xff0c;然后除以所有元素指数和的结果。当将其应用到多个矩阵的相应位置上时&#xff0c;我们实际上是在对每个位置的一组数&#xff08;从各个矩阵的同…

45.WEB渗透测试-信息收集-域名、指纹收集(7)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;计算机王-CSDN博客 WEB指纹&#xff1a;Web指纹也叫web应用指纹。由于所使用的工具、技术…

PHP 自提时间

前端: 后台设置: 代码: public function getBusinessHour(){// 需求单门店$data (new StoreModel())->limit(1)->select()->toArray();$days explode(,, $data[0][shop_hours]);$businessHours $days[1];// 使用 explode 分割字符串&#xff0c;获取开始和结束时…

ListView[new]

activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_height"match_parent"android:layout_width"match_parent"…

服务器租用中包含哪些?

服务器在目前的互联网社会中起着十分重要的作用&#xff0c;服务器是网络业务部署的重要载体&#xff0c;越来越多的企业和用户选择租用服务器业务来减少整体的成本&#xff0c;那么服务器租用中主要都包含哪些呢&#xff1f;接下来小编就来介绍一些其中的内容吧&#xff01; 首…

nginx 发布静态资源

一. nginx 发布静态资源 在nginx中nginx.conf配置文件中添加内容如下&#xff1a; server {listen 90;server_name localhost;# 配置静态资源文件&#xff0c;就可以访问了location / {root /home/fooie-shop;index index.html;}# 配置音频和图片资源location /imoo…

企业内部文化社区究竟有哪些好处?

首先&#xff0c;我们来了解下&#xff0c;企业内耗是什么? 在企业文化管理中&#xff0c;内耗是一个常见的问题&#xff0c;它会影响企业的团队协作、执行效率和绩效表现。在2023《哈佛商业评论》中国年会上&#xff0c;北大汇丰商学院管理实践教授陈玮分享了他对组织管理的…

冯喜运:5.14今日黄金原油涨跌走势分析操作建议

【黄金消息面分析】&#xff1a;本周黄金市场将迎来关键的美国通胀数据&#xff0c;包括周二的生产者价格指数(PPI)和周三的消费者物价指数(CPI)。这些数据对美联储的政策路径至关重要&#xff0c;可能会影响市场对利率调整的预期。目前&#xff0c;现货黄金价格小幅上涨&#…

使用java.io库序列化Java对象

在我们使用诸如Redis这类缓存系统时&#xff0c;我们往往会存在如下需求&#xff1a;将Java对象保存到Redis缓存中&#xff0c;然后在其他机器上还原回来。 Json方案 我们可以引入Json库等方式&#xff0c;将Java对象序列化为Json字符串来实现这个目的&#xff0c;但是这样的…

《四》系统模块整体功能关联与实现

在上一篇里&#xff0c;我们完成了动作的创建&#xff0c;那么这一次&#xff0c;我们把它加载到界面上&#xff0c;把需要是实现的动作都加上。 MyWord::MyWord(QWidget *parent): QMainWindow(parent) {mdiAreanew QMdiArea;mdiArea->setHorizontalScrollBarPolicy(Qt::S…

【Cesium解读】Cesium中primitive/entity贴地

官方案例 Cesium Sandcastle Cesium Sandcastle 好文推荐&#xff1a;Cesium贴地设置_primitive贴地-CSDN博客 scene.globe.depthTestAgainstTerrain true; True if primitives such as billboards, polylines, labels, etc. should be depth-tested against the terrain…

释放系统C盘的ext4.vhdx

ext4.vhdx 是个虚拟磁盘&#xff0c;默认位置为 C:\Users{用户名}\AppData\Local\Docker\wsl\data\ext4.vhdx&#xff0c;会占用很大磁盘空间&#xff0c;可采用下列办法将其改到其它磁盘或分区&#xff0c;如D分区。 1、查看有哪些&#xff1a; # wsl -l -vNAME …

静态代码扫描问题修复之--(输入验证 重定向[NodeJS])

问题描述: 当应用程序直接使用未经验证的用户输入来控制重定向URL时,存在安全隐患。攻击者可借此机会操纵输入,引导用户访问恶意网站,实施网络钓鱼等攻击。这在JavaScript前端代码及Node.js后端逻辑中均需警惕。 案例分析: 应用程序允许未验证的用户输入控制重定向中的UR…

MYSQL主从灾难恢复

方案背景 MySQL一主一从,当主库操作系统宕机无法启动,vip已漂移到从库,原从库成为主库单实例支撑业务。在新建主机上新建MySQL实例,配置为当前vip所在实例的从库,恢复MySQL一主一从。 2 恢复步骤 2.1 新建MySQL实例 2.1.1 解压安装包 #将二进制包上传至/usr/local/然后解…