简单了解busybox

Yocto学习笔记(三)配置Busybox BusyBox 是一个开源的、轻量级的 Unix 工具箱,它集成了许多标准 Unix 工具的精简版本。它被设计用来运行在资源受限的环境中,例如嵌入式系统或者启动盘。BusyBox 将多个标准 Unix 实用工具整合到一个可执行文件中,这些工具包括文件操作、进程管理、网络配置、文本处理等。在嵌入式 Linux 系统中,BusyBox 被广泛应用于构建小型和高效的根文件系统。通过将多个功能整合到一个可执行文件中,BusyBox 可以显著减小系统的磁盘占用和内存占用。 阅读详情

BusyBox 的诞生

BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用。

BusyBox 许可证

BusyBox 是按照 GNU General Public License(GPL)许可证发行的。这意味着如果我们在一个项目中使用 BusyBox,就必须遵守这个许可证。我们可以在 BusyBox Web 站点(请参看本文后面 参考资料 一节的内容)上看到这个许可证的内容。BusyBox 团队似乎正忙于监视违反这个许可证的情况。实际上,他们维护了一个 “Hall of Shame” 页面来说明违反者的情况。

BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如 grep 和 find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。实际上,BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。我们可以对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。

BusyBox 是如何工作的?

为了让一个可执行程序看起来就像是很多可执行程序一样,BusyBox 为传递给 C 的 main 函数的参数开发了一个很少使用的特性。回想一下 C 语言的 main 函数的定义如下:

POSIX 环境

尽管 BusyBox 的目标 是提供一个相当完整的 POSIX(可移植操作系统接口)环境,这是一个期望,而不是一种需求。这些工具虽然并不完整,但是它们提供了我们期望的主要功能。

清单 1. C 的 main 函数

1

int main( int argc, char *argv[] )

在这个定义中,argc 是传递进来的参数的个数(参数数量),而 argv 是一个字符串数组,代表从命令行传递进来的参数(参数向量)。argv 的索引 0 是从命令行调用的程序名。

清单 2 给出的这个简单 C 程序展示了 BusyBox 的调用。它只简单地打印 argv 向量的内容。

清单 2. BusyBox 使用 argv[0] 来确定调用哪个应用程序

1

2

3

4

5

6

7

8

9

10

11

12

13

// test.c

#include <stdio.h>

 

int main( int argc, char *argv[] )

{

  int i;

 

  for (i = 0 ; i < argc ; i++) {

    printf("argv[%d] = %s\n", i, argv[i]);

  }

 

  return 0;

}

调用这个程序会显示所调用的第一个参数是该程序的名字。我们可以对这个可执行程序重新进行命名,此时再调用就会得到该程序的新名字。另外,我们可以创建一个到可执行程序的符号链接,在执行这个符号链接时,就可以看到这个符号链接的名字。

清单 3. 在使用新命令更新 BusyBox 之后的命令测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$ gcc -Wall -o test test.c

$ ./test arg1 arg2

argv[0] = ./test

argv[1] = arg1

argv[2] = arg2

 

$ mv test newtest

$ ./newtest arg1

argv[0] = ./newtest

argv[1] = arg1

 

$ ln -s newtest linktest

$ ./linktest arg

argv[0] = ./linktest

argv[1] = arg

BusyBox 使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于 BusyBox 中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用 BusyBox 了。BusyBox 然后可以通过 argv[0] 来调用内部工具。

配置并编译 BusyBox

我们可以从 BusyBox 的 Web 站点上下载最新版本的 BusyBox(请参看 参考资料 一节的内容)。与大部分开放源码程序一样,它是以一个压缩的 tarball 形式发布的,我们可以使用清单 4 给出的命令将其转换成源代码树。(如果我们下载的版本不是 1.1.1,那就请在这个命令中使用适当的版本号以及特定于这个版本号的命令。)

清单 4. 展开 BusyBox

1

2

$ tar xvfz busybox-1.1.1.tar.gz

$

结果会生成一个目录,名为 busybox-1.1.1,其中包含了 BusyBox 的源代码。要编译默认的配置(其中包含了几乎所有的内容,并禁用了调试功能),请使用 defconfig make 目标:

BusyBox 源代码树

BusyBox 的源代码树组织得很好。这些工具都基于它们的用途进行了分类,并存储在单独的子目录中。例如,网络工具和守护进程(如 httpd、ifconfig等)都在 ./networking 目录中;标准的模块工具(包括 insmod、rmmod 和 lsmod)都在 ./modutils 目录中;编辑器(例如 vi 和流编辑器,如 awk和 sed)都在 ./editors 目录中。makefile 配置、编译和安装所使用的各个文档都在这个目录树的根目录中。

清单 5. 编译默认的 BusyBox 配置

1

2

3

4

$ cd busybox-1.1.1

$ make defconfig

$ make

$

结果是一个相当大的 BusyBox 映像,不过这只是开始使用它的最简单的方法。我们可以直接调用这个新映像,这会产生一个简单的 Help 页面,里面包括当前配置的命令。要对这个映像进行测试,我们也可以对一个命令调用 BusyBox 来执行,如清单 6 所示。

清单 6. 展示 BusyBox 命令的执行和 BusyBox 中的 ash shell

1

2

3

4

5

6

7

$ ./busybox pwd

/usr/local/src/busybox-1.1.1

$ ./busybox ash

/usr/local/src/busybox-1.1.1 $ pwd

/usr/local/src/busybox-1.1.1

/usr/local/src/busybox-1.1.1 $ exit

$

在这个例子中,我们调用了 pwd(打印工作目录)命令,使用 BusyBox 进入了 ash shell,并在 ash 中调用了 pwd。

手工配置

如果您正在构建一个具有特殊需求的嵌入式设备,那就可以手工使用 menuconfig make 目标来配置 BusyBox 的内容。如果您熟悉 Linux 内核的编译过程,就会注意到 menuconfig 与配置 Linux 内核的内容所使用的目标相同。实际上,它们都采用了相同的基于 ncurses 的应用程序。

使用手工配置,我们可以指定在最终的 BusyBox 映像中包含的命令。我们也可以对 BusyBox 环境进行配置,例如包括对 NSA(美国国家安全代理)的安全增强 Linux(SELinux),指定要使用的编译器(用来在嵌入式环境中进行交叉编译)以及 BusyBox 应该静态编译还是动态编译。图 1 给出了 menuconfig 的主界面。在这里我们应该可以看到可以为 BusyBox 配置的不同类型的应用程序(applet)。

图 1. 使用 menuconfig 配置 BusyBox

使用 menuconfig 配置 BusyBox

多体系结构支持

可以简单地为 BusyBox 指定交叉编译器意味着我们可以为很多体系结构编译 BusyBox。要为您的目标体系结构编译 BusyBox,我们需要一个交叉编译器和一个已经为特定目标体系结构编译好的 C 库(uClibc 或 glibc)。

要手工配置 BusyBox,请使用下面的命令:

清单 7. 手工配置 BusyBox

1

2

3

$ make menuconfig

$ make

$

这为我们提供了可以调用的 BusyBox 的二进制文件。下一个步骤是围绕 BusyBox 构建一个环境,包括将标准 Linux 命令重定向到 BusyBox 二进制文件的符号链接。我们可以使用下面的命令简单地完成这个过程:

清单 8. 构建 BusyBox 环境

1

2

$ make install

$

默认情况下,这会创建一个新的本地子目录 _install,其中包含了基本的 Linux 环境。在这个根目录中,您会找到一个链接到 BusyBox 的 linuxrc 程序。这个 linuxrc 程序在构建安装盘或急救盘(允许提前进行模块化的引导)时非常有用。同样是在这个根目录中,还有一个包含操作系统二进制文件的 /sbin 子目录。还有一个包含用户二进制文件的 /bin 目录。在构建软盘发行版或嵌入式初始 RAM 磁盘时,我们可以将这个 _install 目录迁移到目标环境中。我们还可以使用 make 程序的 PREFIX 选项将安装目录重定向到其他位置。例如,下面的代码就使用 /tmp/newtarget 根目录来安装这些符号链接,而不是使用 ./_install 目录:

清单 9. 将符号链接安装到另外一个目录中

1

2

$ make PREFIX=/tmp/newtarget install

$

使用 install make 目标创建的符号链接都来自于 busybox.links 文件。这个文件是在编译 BusyBox 时创建的,它包含了已经配置的命令清单。在执行 install 时,就会检查 busybox.links 文件确定要创建的符号链接。

到 BusyBox 的命令行链接也可以使用 BusyBox 在运行时动态创建。CONFIG_FEATURE_INSTALLER 选项就可以启用这个特性,在运行时可以这样执行:

清单 10. 在运行时创建命令链接

1

2

$ ./busybox --install -s

$

-s 选项强制创建这些符号链接(否则就创建硬链接)。这个选项要求系统中存在 /proc 文件系统。

BusyBox 编译选项

BusyBox 包括了几个编译选项,可以帮助为我们编译和调试正确的 BusyBox。

表 1. 为 BusyBox 提供的几个 make 选项

make 目标说明
help显示 make 选项的完整列表
defconfig启用默认的(通用)配置
allnoconfig禁用所有的应用程序(空配置)
allyesconfig启用所有的应用程序(完整配置)
allbareconfig启用所有的应用程序,但是不包括子特性
config基于文本的配置工具
menuconfigN-curses(基于菜单的)配置工具
all编译 BusyBox 二进制文件和文档(./docs)
busybox编译 BusyBox 二进制文件
clean清除源代码树
distclean彻底清除源代码树
sizes显示所启用的应用程序的文本/数据大小

在定义配置时,我们只需要输入 make 就可以真正编译 BusyBox 二进制文件。例如,要为所有的应用程序编译 BusyBox,我们可以执行下面的命令:

清单 11. 编译 BusyBox 二进制程序

1

2

3

$ make allyesconfig

$ make

$

压缩 BusyBox

如果您非常关心对 BusyBox 映像的压缩,就需要记住两件事情:

  1. 永远不要编译为静态二进制文件(这会将所有需要的库都包含到映像文件中)。相反,如果我们是编译为一个共享映像,那么它会使用其他应用程序使用的库(例如 /lib/libc.so.X)。
  2. 使用 uClibc 进行编译,这是一个对大小进行过优化的 C 库,它是为嵌入式系统开发的;而不要使用标准的 glibc (GNU C 库)来编译。

BusyBox 命令中支持的选项

BusyBox 中的命令并不支持所有可用选项,不过这些命令都包含了常用的选项。如果我们需要知道一个命令可以支持哪些选项,可以使用 --help 选项来调用这个命令,如清单 12 所示。

清单 12. 使用 --help 选项调用命令

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$ ./busybox wc --help

BusyBox v1.1.1 (2006.04.09-15:27+0000) multi-call binary

 

Usage: wc [OPTION]... [FILE]...

 

Print line, word, and byte counts for each FILE, and a total line if

more than one FILE is specified. With no FILE, read standard input.

 

Options:

    -c  print the byte counts

    -l  print the newline counts

    -L  print the length of the longest line

    -w  print the word counts

 

$

这些特定的数据只有在启用了 CONFIG_FEATURE_VERBOSE_USAGE 选项时才可以使用。如果没有这个选项,我们就无法获得这些详细数据,但是这样可以节省大约 13 KB 的空间。

向 BusyBox 中添加新命令

向 BusyBox 添加一个新命令非常简单,这是因为它具有良好定义的体系结构。第一个步骤是为新命令的源代码选择一个位置。我们要根据命令的类型(网络,shell 等)来选择位置,并与其他命令保持一致。这一点非常重要,因为这个新命令最终会在 menuconfig 的配置菜单中出现(在下面的例子中,是 Miscellaneous Utilities 菜单)。

对于这个例子来说,我将这个新命令称为 newcmd,并将它放到了 ./miscutils 目录中。这个新命令的源代码如清单 13 所示。

清单 13. 集成到 BusyBox 中的新命令的源代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include "busybox.h"

 

int newcmd_main( int argc, char *argv[] )

{

  int i;

 

  printf("newcmd called:\n");

 

  for (i = 0 ; i < argc ; i++) {

 

    printf("arg[%d] = %s\n", i, argv[i]);

 

  }

 

  return 0;

}

接下来,我们要将这个新命令的源代码添加到所选子目录中的 Makefile.in 中。在本例中,我更新了 ./miscutils/Makefile.in 文件。请按照字母顺序来添加新命令,以便维持与现有命令的一致性:

清单 14. 将命令添加到 Makefile.in 中

1

2

3

MISCUTILS-$(CONFIG_MT)          += mt.o

MISCUTILS-$(CONFIG_NEWCMD)   += newcmd.o

MISCUTILS-$(CONFIG_RUNLEVEL)    += runlevel.o

接下来再次更新 ./miscutils 目录中的配置文件,以便让新命令在配置过程中是可见的。这个文件名为 Config.in,新命令是按照字母顺序添加的:

清单 15. 将命令添加到 Config.in 中

1

2

3

4

5

config CONFIG_NEWCMD

    bool "newcmd"

    default n

    help

      newcmd is a new test command.

这个结构定义了一个新配置项(通过 config 关键字)以及一个配置选项(CONFIG_NEWCMD)。新命令可以启用,也可以禁用,因此我们对配置的菜单属性使用了 bool (Boolean)值。这个命令默认是禁用的(n 表示 No),我们可以最后放上一个简短的 Help 描述。在源代码树的 ./scripts/config/Kconfig-language.txt 文件中,我们可以看到配置语法的完整文法。

接下来需要更新 ./include/applets.h 文件,使其包含这个新命令。将下面这行内容添加到这个文件中,记住要按照字母顺序。维护这个次序非常重要,否则我们的命令就会找不到。

清单 16. 将命令添加到 applets.h 中

1

USE_NEWCMD(APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER))

这定义了命令名(newcmd),它在 Busybox 源代码中的函数名(newcmd_main),应该在哪里会为这个新命令创建链接(在这种情况中,它在 /usr/bin 目录中),最后这个命令是否有权设置用户 id(在本例中是 no)。

倒数第二个步骤是向 ./include/usage.h 文件中添加详细的帮助信息。正如您可以从这个文件的例子中看到的一样,使用信息可能非常详细。在本例中,我只添加了一点信息,这样就可以编译这个新命令了:

清单 17. 向 usage.h 添加帮助信息

1

2

#define newcmd_trivial_usage    "None"

#define newcmd_full_usage   "None"

最后一个步骤是启用新命令(通过 make menuconfig,然后在 Miscellaneous Utilities 菜单中启用这个选项)然后使用 make来编译 BusyBox。

使用新的 BusyBox,我们可以对这个新命令进行测试,如清单 18 所示。

清单 18. 测试新命令

1

2

3

4

5

6

7

8

9

10

$ ./busybox newcmd arg1

newcmd called:

arg[0] = newcmd

arg[1] = arg1

$ ./busybox newcmd --help

BusyBox v1.1.1 (2006.04.12-13:47+0000) multi-call binary

 

Usage: newcmd None

 

None

就是这样!BusyBox 开发人员开发了一个优秀但非常容易扩展的工具。

工具推荐:Linux Busybox BusyBox是一个开源的、轻量级的、可嵌入式的、多个Unix工具的集合。BusyBox提供了各种Unix工具的实现,包括文件处理工具、网络工具、shell工具、系统管理工具、进程管理工具等等。它被设计为一个小巧、高效、可靠、易于维护的工具,适用于嵌入式系统和小型Linux发行版等环境。BusyBox的工作原理是将多个Unix工具集成在一起,形成一个单独的可执行文件,通过命令行参数的方式来调用具体的工具。这种方式可以减少系统资源的占用,提高使用效率,同时也可以减少系统的复杂性和维护成本。 阅读详情

相关推荐

busybox和busybox镜像是什么

很多人用 busybox,但是不是很多人能说出来 busybox 是个什么东西。 用过 busybox 镜像的同学都知道,busybox 没有 curl,另很多习惯用 curl 的同学会有点不习惯,然后会找各种 yum, apt-get, apk 等这些常见的 Linux 发行版的软件包管理工具会安装,但是最终都是徒劳的…因为 busybox 里压根就没有这些,唯一能做的,可能就是不用 curl,该用 wget 好了。 这样自然大家都会有疑问,为什么会没有 curl,又为什么装不了,本文就简单的给大家做个介

runzhliu大数据/容器日记 2420

Linux-文件系统-学习笔记(15):利用busybox构建根文件系统

Linux-文件系统-学习笔记(15):利用busybox构建根文件系统 前言:一整套linux在只有内核的情况下是不能工作的,它需要由根文件系统的配置支持。同时根文件系统提供了根目录、shell命令集和linuxrc应用程序,使得系统能够从进程1中衍生出其他进程。所以rootfs对于操作系统来讲是不可缺少的。 一、busybox移植 1、什么是busybox? 上一篇博客中简单介绍了busybo...

qq_42826337的博客 1万+

安卓系统BusyBox的安装和使用

手机需要有root权限,如果没有root请参考这里

m0_60352504的博客 1万+

busybox概述

busybox是什么? (1)busybox是Linux上的一个应用程序(application),即只有一个ELF文件头。 (2)它整合了许多Linux上常用的工具和命令(utilities), 如rm, ls, gzip, tftp等。对于这些工具和命令,busybox中的实现可能不是最全的,但却是最常用的,因此它的特点就是短小精悍,特别适合对尺寸很敏感的嵌入式系统。 (3)busybox的官方网站是http://www.busybox.net/,在这里你可以找到与b...

生活需要深度 1万+

Busybox源码包深度解析与实战教程

Busybox被誉为”嵌入式Linux的瑞士军刀”,是一个集成了多达数百个最常用的Linux命令和工具的单一可执行文件。其核心设计是提供一个具有多种功能的小巧系统,适合资源受限的环境。Busybox在嵌入式系统开发中扮演了至关重要的角色,因为它能够大幅度减少所需占用的空间资源,同时又不牺牲太多的功能性。在不同的项目中,可能需要不同的交叉编译工具链。Busybox允许用户通过环境变量或者Makefile中的配置来指定工具链。以下是自定义工具链的示例:# 自定义工具链的示例配置ARCH?= arm。

weixin_42584507的博客 1102

ComfyUI入门学习-教程篇

深入的 ComfyUI 教程,不同功能节点的详细指南。一个比较有意思的Comfyui教程,动画式学习。从安装到基础教程、高级教程再到各种工作流。非常全面,有教程有搭建好的工作流。

wincyfu的博客 1329

用QEMU搭建arm开发环境之三:编译BusyBox建立最简单的文件系统

1.BusyBox简介 2.BusyBox下载与编译 官方下载地址:https://busybox.net/downloads/ 3.QEMU启动内核加BusyBox

Android Scanner 的空间 1532

两相变频交错PFC实战:从论文理论到PSIM仿真的完整避坑指南

本文详细解析了两相变频交错PFC技术从理论到PSIM仿真的完整实现过程,特别针对CRM模式下的BOOST PFC设计挑战提供实用解决方案。涵盖周期值比较法与RS触发器法的对比实施、PSIM仿真中的过零处理与收敛性优化等核心问题,并给出硬件实现的进阶建议,助力工程师高效完成高功率密度PFC设计。

weixin_30632089的博客 422

CentOS 6.5结合busybox完成自制Linux系统及远程登录和nginx安装测试

前言    系统定制在前面的博文中我们就有谈到过了,不过那个裁减制作有简单了点,只是能让系统跑起来而,没有太多的功能,也没的用户登录入口,而这里我们将详细和深入的来谈谈Linux系统的详细定制过程和实现用户例如、远程登录和Nginx安装过程、一步一步从头开始定制属于我们自己的系统。 正文    首先我们先来简单的介绍一下我们这里定制属于自己的Linux系统的基本元素,其中一些相关的信

reblue520的专栏 3314

Windows系统中 Xmanager 6 企业版下载安装激活教程

Xmanager 6 企业版安装激活教程 1.Xmanager 6 下载网址:https://yunpan.360.cn/surl_yrJrWq3GmjN 2. 双击 Xmanager-6.0.0169r 安装 3. 点击运行按钮 4. 点击下一步 5. 选择我接受许可证协议中的条款(A), 点击下一步。 6. 输入用户名:byg,公司名称:microsoft,序...

mry6的博客 9873

基因的富集分析

通过RNA_seq差异表达分析等获得一组基因,想要进一步了解这些基因可能参与哪些生物学过程,具有哪些功能,一般就会用到基因的富集分析了。现在小麦基因注释信息已经可以获得,目前来看包括两套。一个是TGACv1,另一个就是IWGSC1.0。需要用到一个叫“clusterProfiler”的R包。下面用到的数据集来自TGACv1。1、安装source("https://bioconductor.org/b

xxxxx 1万+

linux-arm下如何开启tftp传输,arm linux 下移植busybox 的tftp

(1)进入busybox目录,make menuconfig ,然后在networking中勾选tftp项跟tftpd项。(2)配置/etc/inetd.conf 中关于tftp的选项(此部未验证,不需要应该也可以)tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd(3)部分tftp指令(部分验证)Busybox下的tf...

weixin_39588911的博客 611

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南

本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。

weixin_32597009的博客 622

linux busybox详解

所谓制作根文件系统,就是创建各种目录,并且在目录里创建相应的文件。例如:在/bin目录下放置可执行程序,在/lib下放置各种库等等。通常配合chroot命令使用。Busybox是一个开源项目,遵循GPL v2协议。Busybox将众多的UNIX命令集合进一个很小的可执行程序中,可以用来替代GNU fileutils、shellutils等工具集。Busybox中各种命令与相应的GNU工具相比,所能提供的选项比较少,但是也足够一般的应用了。Busybox主要用于嵌入式系统。

m0_66596286的博客 4185

c语言国际象棋(easyx图形库)

c语言实现的国际象棋,先放源码,有空再更 所有图形资源均来源于网络,侵删 #include <graphics.h> #include<stdio.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include <time.h> #define HEIGHT 800 #define WIDTH 1100 #define SIZE 100 #define true.

Betelgeuse13的博客 1914

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

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

weixin_28828243的博客 295

简单的busybox创建_动态连接的busybox的简单使用

开发环境:Redhat 9.0busybox 1.0.1实现目标:用busybox生成一个简单的initrd,busybox采用动态连接的方式进行编译。同时在busybox上运行简单的动态连接的helloword程序。1.busybox从busybox的官方网站上下载busybox-1.0.1.tar.bz2(我的Redhat好象无法编译通过高版本的busybox)解压#tar -jxvf bus...

weixin_34476159的博客 1268

2024年数字IC秋招-速腾聚创-数字芯片验证工程师-笔试题

笔试题型:单选 + 问答题笔试平台:牛客(手机+电脑监控)笔试时间:1hA. len取10的概率是1/2;B. len取10的概率是1/3;C. len取10的概率是1/4;D. len取10的概率是1;

qq_42135020的博客 1399

【busybox记录】【shell指令】基于的Busybox的版本和下载方式

从busybox指令相关开始记录

44083579的博客 4152

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

busybox简介及其简单用法

BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。  1、BusyBox 的诞生  ...

weixin_34049948的博客 1165

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Busybox Login登录简单设置

Busybox Login登录简单设置 编译设置 在Menuconfig中进入如下配置: 配置项目如下: 因为我有且仅设置一个root账户,因此只做如上简单配置,为了保险起见,大家也可以都选上 make&&make install编译完成后会产生登录所需要的文件/bin/login和/sbin/getty 配置文件修改 修改/etc/inittab,添加: ::respawn:-/bin/login 或者 ::respawn:/sbin/getty 115200 console 配置文

9527的博客 3953

linux基础之 busybox的源码了解

最近发现用到的很多功能都是busybox,或是kernel自带的一些功能。但没有认真去分析下,这里记录一些查到的资料。 一、busybox的运行与调试 我们能看到的所有功能程序,包括date,udhcpc...很多的这些进程他都是和最后连接到busybox的bin文件下。 我们调试新编的busybox时,可以不用去直接替换文件系统里面的bin文件,可以直接使用 busybox date这样就可以在后台打印出我们直接输入date产看到的时间信息 二、busybox的源码框架 (如何去读源码)

lailaiquququ11的博客 1799

BusyBox原理简单分析

BusyBox原理简单分析刚刚接触嵌入式不久,花了半天的时间大体上看了看BusyBox,下面我对BusyBox的原理进行一个肤浅的分析(在网上我不有找到相关的内容). 1、介绍 BusyBox称作是嵌入式开发的瑞士军刀,实用,短小,稳定。 BusyBox利用Linux实用工具中代码大量重复的事实,将重复的代码重新整理,放到一个文件中,减少了多次包含。 BusyBox通过简化非必要的

frog845的专栏 834

用busybox做一个简单的文件系统

利用BusyBox做一个简单的根文件系统1、下载BusyBox源代码包 http://busybox.net/2、找个地方解压缩包,例如tar -xjvf busybox-1.00.tar.bz23、进入busybox的文件夹,使用make menuconfig进入设置[attach]244[/attach]4、在build options中有一些选项要注意Build BusyBox as a s

6975

busybox详解

1.根文件系统简介 所谓制作根文件系统,就是创建各种目录,并且在目录里创建相应的文件。例如:在/bin目录下放置可执行程序,在/lib下放置各种库等等。通常配合chroot命令使用。 2.Busybox简介 2.1Busybox简介 Busybox是一个开源项目,遵循GPL v2协议。Busybox将众多的UNIX命令集合进一个很小的可执行程序中,可以用来替代GNU fileutil...

whatday的专栏 9703

Android Studio的笔记--BusyBox相关

busybox下载的是1.31.0版本,用于安卓设备上,进行安装使用。 busybox源码下载,应用下载,安装使用教程

weixin_45208598的博客 1340
上一篇: linux查看系统版本
下一篇: linux进程间IPC通信
wiggens
博客等级 码龄15年 84粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值