笔记整理—内核!启动!—kernel部分(6)buxybox详解

        上一章我们说到busybox,但还有一部分没有说完,busybox的配置与kernel的menuconfig几乎一样。也是配置然后make、makeinstall,kbuild是busybox的makefile,可以根据installtion options设定安装位置,安装后会出现/bin、/linuxrc、/sbin、/usr等文件夹。

        inittab文件与busybox有关,与init进程1文件有关,是一个配置文件,放在etc目录下。inittabs是一个文本格式的文件,其中的格式如下:

::sysinit:::是格式,sysinit是项目id:rulevels:action:processid为id字段,rulevels为运行级别,action为操作,process为执行进程

        busybox最终进入一个循环,当某个action满足,则执行这个操作的进程,所以inittab将会一直使用。

        action:respawm=>若process字段不存在,就会启动这个操作。

                     wait=>启动进程,等待处理结束后进入下一个进程

                      once=>只执行一次

                      boot=>只在系统启动时才启动一次

                      sysinit=>在访问控制台前执行(rcs)

                      askfirst=>让用户按下回车(控制台准备好了,可用respawn代替这样就不用回车了)

                      ctrlabtdel=>满足ctrl+alt+del则(重启)

                      shutdown=>关机就(取消挂载文件系统)

                       estart=>重启

        对于busybox而言coreutils是核心,用于存放核心指令。

        busybox的入口:kernel或uboot等的裸机程序入口不在main,而是在链接脚本,mian适用于应用层程序,作为其程序开始的标志,因为busybox是一个应用程序所以mian是其入口。

        kconfig是一个编译用工具文件夹,如果一个文件被使用了,会被编译为.o文件,但不是所有.o文件都有作用,在应用层上,有点编译了但并没有链接。

        busybox的main位置位于libbb/appletlib.c中,xxx_main()是支持的每一个程序的入口。

        busybox的ls、pwd、......都链接到了busybox,而非单独的一根个程序,通过如ls_main()去实现ls指令。在run_applet_and_exit(applet,argv)进行的指令调用,找不到就打印not find。

        inittab解析:busybox/init/initial.c/init_mian函数.console_init()初始化控制台,chdir("/")切换到根目录;setsid() super id;puyenv()保存环境变量;parse_inittab 解析inittab。

        inittab的作用:将action与process解析出来,然后执行一次sysinit、wait、once。在while(1)中执行respwan与askfurst。

        pwd指令:pwd_main()->buf=realloc_getcwd_or_warn->getcwd()(这是一个库函数)

        busybox的shell指令是阉割了的版本,能用但功能不全,只是对一些指令做了集合,ubuntu的vmlinuz作为内核是未压缩的。

        本章对busybox的解析就做到这,下一章将对rcs文件进行解析。

                

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

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

相关文章

启程Pulsar:深入剖析高速启动引擎,揭秘消息中间件巨兽的诞生

文章目录 一、简析二、何时、如何触发启动三、Broker启动流程四、总结 一、简析 Broker的启动流程框架基本如下 触发启动初始化 读取配置、检测、赋值 启动 Bookie启动Broker启动 启动Netty启动后台监控任务 二、何时、如何触发启动 Broker的启动基本都是靠维护人员主动触…

五大注入攻击网络安全类型介绍

1. SQL注入(SQL Injection) SQL注入流程 1.1. 概述 SQL注入是最常见的注入攻击类型之一,攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句,来操控数据库执行未授权的操作(如拖库、获取…

极光参展2024年服贸会并荣获“年度出海领航企业”荣誉

近日,由商务部和北京市人民政府共同主办的2024年中国国际服务贸易交易会(以下简称:服贸会)圆满落下帷幕。领先的客户互动和营销科技服务商,极光(Aurora Mobile,纳斯达克股票代码:JG&…

《JavaEE进阶》----15.<Spring Boot 日志>

本篇文章将记录我学习SpringBoot日志 1.日志文件的用途 2.SpringBoot日志文件的配置 3.用lombook依赖引入Slf4j注解,从而引入log对象。方便我们打印日志。 一、日志的作用 日志主要是为了发现问题、分析问题、定位问题。除此之外、日志还有许多其他的用途。 1.系统监…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)

往期知识点记录: OpenHarmony(鸿蒙南向开发)——轻量系统STM32F407芯片移植案例 OpenHarmony(鸿蒙南向开发)——Combo解决方案之W800芯片移植案例 OpenHarmony(鸿蒙南向开发)——小型系统STM32M…

leetcode:验证回文串

[题目链接] string func(string s)//先将大写转换成小写&#xff0c;并且去除空格等&#xff0c;只保留小写字母 {string tmp;string::iterator it s.begin();while (it ! s.end()){//大写字母if (*it < 90 && *it>65)//A-Z的ASCII码为65-90{tmp *it 32;//a-z…

蓝桥杯DS18B20程序源码

蓝桥杯DS18B20程序源码解析 蓝桥杯&#xff0c;作为一项全国瞩目的电子设计竞赛&#xff0c;其核心挑战在于参赛者需深度融合单片机编程与各类电子元件的应用能力。在众多项目中&#xff0c;涉及DS18B20数字温度传感器的程序源码尤为引人注目&#xff0c;它巧妙地将单片机技术…

【JAVA基础】实现Tomcat基本功能

文章目录 TCP/IP协议Socket编程ServletTomcat 在搜索了两三天之后&#xff0c;也是大概弄懂了Tomcat是个什么东西&#xff0c;我们在说Tomcat之前&#xff0c;先来了解一下下面这三个东西&#xff1a; TCP/IP协议 TCP/IP 是互联网通信的基础协议。TCP&#xff08;传输控制协议…

《华为交换机堆叠配置》

目录 1. 扩展端口数量: 2. 提高可靠性: 3. 简化管理: 4. 实现负载均衡: 5.华为交换机堆叠通常有两种方式: 6.下面举例介绍一下华为交换机堆叠的详细配置步骤。 华为交换机堆叠是一种将多台华为交换机组合在一起,形成一个逻辑上统一的交换机设备的技术。通过堆叠,可以…

CSP-J 算法基础 广度优先搜索BFS

文章目录 前言广度优先搜索是什么广度优先搜索的实现BFS 的具体编程实现举例&#xff1a;广度优先搜索的具体步骤初始状态&#xff1a;步骤 1&#xff1a;加入起点节点 1步骤 2&#xff1a;访问队列中的节点 1&#xff0c;加入其邻居节点 2 和 4步骤 3&#xff1a;访问队列中的…

Java | Leetcode Java题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; class Solution {public String toHex(int num) {if (num 0) {return "0";}StringBuffer sb new StringBuffer();for (int i 7; i > 0; i --) {int val (num >> (4 * i)) & 0xf;if (sb.length() > 0 || val …

开发后台管理系统-开发环境搭建

文章目录 需求设计环境搭建创建项目工程测试结果 安装Element Plus安装路由安装Vue Router配置Vue Router 测试 需求 开发一个后台管理系统 这里以CDN后台管理系统为例 设计 参照 CDN后台管理系统功能说明文档 环境搭建 确保已经安装了Node.js和npm 执行 npm install -g vu…

映射map

Hello,大家好&#xff0c;我是菜就多练&#xff0c;输不起就别玩&#xff0c;今天我们来讲映射。 由于近期有事&#xff0c;所以停更了一段时间&#xff0c;请大家谅解。 在 C 标准模板库&#xff08;STL&#xff09;中&#xff0c;map 是一种关联容器&#xff0c;它存储键值…

Android 12系统源码_窗口管理(八)WindowConfiguration的作用

前言 在Android系统中WindowConfiguration这个类用于管理与窗口相关的设置&#xff0c;该类存储了当前窗口的显示区域、屏幕的旋转方向、窗口模式等参数&#xff0c;应用程序通过该类提供的信息可以更好的适配不同的屏幕布局和窗口环境&#xff0c;以提高用户体验。 一、类定…

水库监测布点的核心要求与策略解析

在水库的安全监测体系中&#xff0c;监测点位的合理布置是确保数据准确性和监测效果的关键。涵盖了常规监测、形变监控、应力分析以及地质灾害预警等多个维度&#xff0c;其中&#xff0c;形变监测尤为关键&#xff0c;直接关乎大坝的安全状态。形变监测通过测斜仪相关的传感器…

Qt开发技巧(四)“tr“使用,时间类使用,Qt容器取值,类对象的删除,QPainter画家类,QString的转换,用好 QVariant类型

继续讲一些Qt技巧操作 1.非必要不用"tr" 如果程序运行场景确定是某一固定语言&#xff0c;就不需要用tr,"tr"之主要针对多语种翻译的&#xff0c;因为tr的本意是包含英文&#xff0c;然后翻译到其他语言比如中文&#xff0c;不要滥用tr&#xff0c;如果没有…

【渗透测试】——DVWA靶场搭建

&#x1f4d6; 前言&#xff1a;DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用于安全漏洞测试的 PHP/MySQL 网络应用&#xff0c;旨在为安全专业人士提供一个合法的环境&#xff0c;以测试他们的技能和工具&#xff0c;同时帮助 Web 开发者更好地理解 …

大棚分割数据集,40765对影像,16.9g数据量,0.8米高分二,纯手工标注(arcgis标注)的大规模农业大棚分割数据集。

数据集名称&#xff1a; &#xff09;“Greenhouse Segmentation Dataset (GSD)” 数据集规模&#xff1a; 包含40,765对用于大棚分割的影像数据&#xff0c;每对影像包括一张原始图像和相应的分割标签图。 数据量&#xff1a; 总数据量约为16.9GB&#xff0c;适合存储在现…

【数据仓库】数据仓库常见的数据模型——维度模型

文章部分图参考自&#xff1a;多维数据模型各种类型&#xff08;星型、雪花、星座、交叉连接&#xff09; - 知乎 (zhihu.com) 文章部分文字canla一篇文章搞懂数据仓库&#xff1a;四种常见数据模型&#xff08;维度模型、范式模型等&#xff09;-腾讯云开发者社区-腾讯云 (ten…

Android插件化(四)基础之Hook

Android插件化(四)基础之Hook 1、寻找Hook点的原则 Android中主要是依靠分析系统源码类来做到的&#xff0c;首先我们得找到被Hook的对象&#xff0c;我称之为Hook点&#xff1b;什么样的对象比较好Hook呢&#xff1f;一般来说&#xff0c;静态变量和单例变量是相对不容易改变…