移植Busybox到宿主机

BusyBox系统移植中的常见问题与解决方案:全面讲解 深入探讨busybox在嵌入式系统移植过程中遇到的典型问题,结合实际场景给出高效解决方案,帮助开发者快速掌握busybox集成技巧,提升系统构建稳定性与效率。 阅读详情

移植Busybox到宿主机


今天,我们要做的不是把Busybox移植到开发板上,而是要移植到我们的主机上:


任何一个可启动的Linux都由三部分组成:引导程序,内核映像和文件系统,下面依次介绍。


一 引导程序:

为了不要太复杂,今天的实验假设我们的主机上已经安装好了grub(像本人,安装好Ubuntu后就自动装好了grub,因此这步直接跳过),我们就用它来启动我们的迷你Linux。



二 内核映像(vmlinuz)

直接在 http://www.kernel.org/ 上下载Linux的源代码,然后编译,注意目标平台是x86就行了,在此不再赘述(详细过程参见我的另一篇文章:http://blog.youkuaiyun.com/htttw/article/details/7215873),编译好之后,会在arch/x86/boot下生成bzImage(make bzImage)或zImage(make zImage),然后copy到/boot下:

sudo cp arch/x86/boot/bzImage /boot/vmlinuz



三  文件系统(initrd.gz)

我们用Busybox来构建我们的文件系统:

1.

在 http://busybox.net 下载Busybox,我的版本是busybox-1.19.3.tar.bz2

2.

tar jxvf busybox-1.19.3.tar.bz2

cd busybox-1.19.3

make menuconfig                                //跟配置Linux是一样的

这里特别注意,在Busybox Settings --> Build Options 里务必选上“Build BusyBox as a static binary (no shared libs)”表示把Busybox编译成静态库!

其他保持默认值,然后保存

make

make install

就会生成_install文件夹

(具体配置过程参见我的另一篇文章:http://blog.youkuaiyun.com/htttw/article/details/7215874)



这里插一句:其实我们现在就可以测试了,和最终的效果是一样的:

cd _install

cd ..

sudo chroot /_install /bin/sh

这样就进入了Busybox了~~



上面只是准备工作,下面才开始好玩了:


生成的_install目录下只有bin,sbin等目录,所以为了构建Linux文件系统,我们必须创建其他目录:

cd _install

mkdir proc sys etc dev


然后创建console和null设备文件

cd dev

sudo mknod console c 5 1

sudo mknod null c 1 3


然后创建etc下的相关文件:

init进程是内核创建的第一个进程,他会解释执行/etc/inittab里的命令,然后执行init.d/rcS脚本文件,在这个脚本文件里我们需要挂载文件系统,至于挂载哪一个文件系统,就由fstab文件决定:


首先创建fstab文件:

cd etc

vim fstab,输入以下内容:


然后创建rcS脚本文件:

cd etc

mkdir init.d

cd init.d

vim rcS,输入以下内容:

chmod +x rcS          这步不要忘记!


然后创建inittab文件:

cd etc

vim inittab,输入以下内容:



然后:

切换到_install目录下

rm linuxrc

输入如下命令:

ln -sv bin/busybox init(如图)



最后,我们把_install目录做成我们的根文件系统:

输入如下命令:

find . | cpio --quiet -H newc -o | gzip -9 -n > ../initrd.gz(如图)



最后把生成的initrd.gz复制到/boot下

sudo cp initrd.gz /boot




至此,以上三步全部完成,下面终于要启动我们的桌面版Busybox啦~~


重启,在grub引导菜单处输入“c"进入grub命令模式,在命令模式下,我们要告诉grub加载我们第二步做的内核映像vmlinuz和第三步做的文件系统initrd.gz,输入如下命令:

linux /boot/vmlinuz            //指定内核映像的路径(如果提示没有linux命令时,改成kernel /boot/vmlinuz试试)

initrd /boot/initrd.gz           //指定文件系统的路径

boot                                     //开始引导



如果一切没有问题,就会进入Shell,等待我们输入命令啦,这就是我们的桌面Busybox,呵呵,挺好玩的~~


我测试的时候,在_install下mkdir了一个目录,然后进入Busybox里ls了一下发现了这个目录,说明我确实进入了Busybox啦,另外,我还把生成的_install/bin下的date链接删除了,然后进入Busybox里输入date提示没有这个命令,但输入busybox date就输出当前时间了,也说明我确实进入了Busybox啦~~

另外,按“Ctrl+Alt+Del”可以重启哦~~


完成!



参考:

利用busybox制作一个小巧的linux系统(仅两个文件):

http://www.cnblogs.com/yangnas/archive/2010/04/26/1721607.html


BusyBox系统SSH移植避坑指南:解决zlib和openssl编译常见错误 本文详细介绍了在BusyBox嵌入式系统中移植SSH服务时,如何解决zlib和OpenSSL交叉编译过程中的常见错误。指南涵盖了从环境准备、依赖库编译(zlib与OpenSSL)到OpenSSH配置与目标板部署的全流程,重点解析了配置参数、静态链接、位置无关代码(PIC)等关键编译陷阱,帮助开发者成功在资源受限的BusyBox环境搭建稳定的SSH服务。 阅读详情

相关推荐

基于BusyBox文件系统,为i.MX6ULL构建OV5640摄像头驱动与V4L2应用实战

本文详细介绍了在基于BusyBox构建的精简文件系统上,为i.MX6ULL开发板移植并驱动OV5640摄像头的完整实战流程。内容涵盖从设备树配置、内核驱动模块交叉编译,到基于V4L2框架编写并部署图像采集与LCD显示应用程序的全过程,并提供了关键的调试技巧与常见问题排查方法,帮助开发者克服在最小化系统上集成复杂外设的挑战。

weixin_29178069的博客 242

ARM busybox 的移植实战1

先逐步构建 “文件夹形式”的根文件系统,然后制作烧录镜像。(1)(2) 我们先从空文件夹开始,逐步向其中添加一些 rootfs 中必备的东西,然后做一步就用 nfs 方式去挂载启动,观察启动后的现象,并且理论上去分析原因。

weixin_42109053的博客 1880

关于STM32编译报错:Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).

今天新建工程发现出现一个错误 —— …\Output\CG.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o). 但我觉得我的操作没有任何问题,而且配置和上一个文件比较是一模一样的。 于是我开始百度查询,然后发现了下面几个博客—— @weixin_44133391——STM32 编译错误 @dorlolok——iel5 编译报错 error: L6235E: More than one

纯粹,学术,热爱。 9404

Busybox文件系统的移植

相关软件下载地址:http://pan.baidu.com/s/16yo8Y fsc100开发板 交叉编译器:arm-cortex_a8-linux-gnueabi-gcc busybox-1.17.3.tar.bz2 一、根文件系统制作 1、 源码下载 我们选择的版本是busybox-1.17.3.tar.bz2下载路径为: http://busybox.net/downl...

weixin_30338497的博客 289

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2333

手把手教你用Zemax优化MTF:从‘离焦平衡球差’到高频像差控制的实战技巧

本文详细介绍了如何使用Zemax优化MTF性能,从基础设置到高级技巧的全流程。通过具体案例,讲解了如何利用离焦平衡球差提升中频MTF,以及识别和控制高频像差的方法,帮助光学设计工程师和学生有效提升成像质量。

weixin_30752699的博客 752

/boot目录下重要文件简介

一、/boot/initrd initrd(initial ramdisk)是一个在Linux启动过程中内核使用的临时文件系统。该文件系统为挂载真正的文件系统做准备。要想看看里面都是什么东西,可以进行下面的操作: # mkdir ~/initrd # cp /boot/initrd ~/initrd # cd ~/initrd # mv initrd in...

weixin_34008784的博客 419

FPGA实现串口升级及MultiBoot(九)BPI FLASH相关实例演示

与SPI相关知识并没有什么太多区别(别杠硬件或者架构上),相关知识点都在上面指出,大家有什么其他需要注意点,欢迎留言讨论。关于“四样错误”就不演示了,没什么太大区别,下一讲我们开始串口升级。PS:为了扩展ICAPE2原语的使用,在原来的基础上增加了几个常用FPGA ID,并在触发启动时候增加了可选电平触发或上升/下降沿触发(例化IP时选择),新版本号V1.1。

OpenFPGA的博客 1446

简单的busybox创建_使用busybox创建极简linux及相关扩展

busybox一个二进制程序,模拟实现众多程序。/bin/busybox查看本机硬件设备信息:#cat /proc/cpuinfo#cat /proc/meminfo#lsusb 显示usb接口信息。#lspci 显示pci总线上的所有设备。#hal-device 显示所有硬件的详细信息。hardware abstract layer 硬件抽象层。编译busybox:#tar xf busybox...

weixin_39619270的博客 352

AXI总线详解完结篇

经过几个月的整理和发文,AXI总线详解系列正式迎来最终篇,内容基本涵盖了上一篇文章的全部内容。 所有文章的链接如下: 1、 AXI总线详解 2、AXI总线详解-总线和接口以及协议 3、AXI协议中的通道结构 4、AXI总线详解-AXI4读写操作时序及AXI4猝发地址及选择 5、AXI4交换机制 6、ZYNQ中DMA与AXI4总线-DMA简介 7、AXI总线详解-不同类型的DMA 8、AXI总线详解-DMA内部寄存器的读写方式 9、AXI总线详解-几种应用DMA的场合 10、Altera Scatter-G.

OpenFPGA的博客 5493

Python爬虫实战:基于最新技术爬取国家企业信用信息公示系统数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的国家企业信用信息公示系统爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、数据解析与存储等高级话题,最终实现一个完整的爬虫系统。文章包含大量实战代码示例,适合中高级Python开发者学习参考。网络爬虫(Web Crawler)是一种自动获取网页内容的程序,广泛应用于搜索引擎、数据分析和商业情报收集等领域。通用爬虫:如搜索引擎爬虫,广泛抓取互联网公开信息聚焦爬虫:针对特定领域或网站的数据采集增量式爬虫:只抓取更新内容,减少资源消耗。

2201_76125261的博客 2410

linux启动界面中的initrd,在Linux系统上开启Initrd文件系统的方法

initial RAM diskLinux初始RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM磁盘卸载,并释放内存。在很多嵌入式Linux系统中,initrd 就是最终的根文件系统。本文将探索 Linux 2.6 的初始 RAM磁盘,...

weixin_39850143的博客 1197

【Proteus仿真】74HC595+74LS154驱动显示16X16点阵

【Proteus仿真】74HC595+74LS154驱动显示16X16点阵

perseverance51博客 2893

尝试构建自己的busybox

BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。也包含了

310

基于FPGA的万兆以太网学习(1)

万兆(10G) 以太网测速视频:SFP+屏蔽笼可以插入千兆或万兆光模块。SFP+信号定义与 SFP 一致。

baidu_34971492的博客 2250

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用busybox制作最基本的嵌入式(yaffs)文件系统

宿主机:Fedora13目标 机:s3c2440交叉编译 器:arm-linux-gcc- 3.4.1 交叉编译器路径:/usr/local/arm/3.4.1busybox版本:1.17.2一、准备工作1、配置交叉编译环境从http://www.handhelds.org/download/projects/toolchain/ 下 载arm-linux-gcc-3.4.1.tar.bz2解压:将交叉编译工具装到/usr/local下2、从http://www.busybox.net/down

huihui1988的专栏 6054

STM32F407中文手册

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

linux GUI-移植QT5.6到mini2440

---------------------------------------------------------------------------------------------------------------------------- 内核版本:linux 5.2.8 根文件系统:busybox 1.25.0 u-boot:2016.05 开发板:Mini2440 宿主机:Ubun...

Graceful_scenery的博客 243

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

嵌入式Linux开发全流程解析:从Bootloader到应用部署实战指南

嵌入式系统开发是构建智能设备的核心技术,其原理在于为特定硬件平台定制精简、高效的操作系统。通过交叉编译技术,开发者能够在x86主机上生成ARM等架构的可执行代码,实现软硬件协同。这项技术的核心价值在于平衡性能、功耗与成本,为物联网、工业控制、消费电子等领域提供稳定可靠的软件基础。在应用场景中,嵌入式Linux系统通常由Bootloader引导程序、Linux内核和根文件系统三大组件构成,并通过NFS网络文件系统等工具实现高效开发调试。本文以嵌入式Linux开发为例,深入剖析了从环境搭建、系统构建到应用部署的

weixin_34401479的博客 514

linux kit的作用,LinuxKit初探

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?前言Docker 在DockerCon 2017大会上发布了一个自己的操作系统,宣称LinuxKit,安全,精简,强移植性。经过研究后发现LinuxKit就是kernel+busybox实现的一个微缩linux系统,其中直接安装了containerd和runc服务。其他服务全部都使用容器启动。一句话概括,LinuxKit...

weixin_42524610的博客 800

移植linux内核到s3c6410(使用busybox构建initrd ramdisk)

   busybox就是linux的一个应用程序,就是讲一套非常使用的命令工具集成到一个busybox命令下,它不一定是最全的,但是是非常使用的,被大家称为嵌入式linux的“瑞士军刀”,其编译和配置方法跟linux内核非常相似,使用比较方便。   下载地址:http://www.busybox.net/   busybox常用配置 make  defconfig 默认配置

roadtoforest的专栏 1286

移植busybox 1.4.2

 这是最简单的一个移植,但有几个需要注意的地方,1. busybox 1.6版找不到mount对nfs的支持,1.4.2是支持的2.有几个模块在编译过程中会出错,要去掉: Miscellaneous Utilities  --->       readahead 、    taskset、Linux Module Utilities  --->     Support version 2.2.x

1016

ARM开发板移植Busybox,ldd报‘不是动态可执行文件’?试试readelf这个命令

本文深入解析了在ARM开发板移植Busybox时遇到的ldd报‘不是动态可执行文件’错误,并提供了使用readelf命令进行跨架构分析的解决方案。通过详细的技术分析和实用案例,帮助开发者高效解决动态链接库依赖问题,提升嵌入式Linux开发效率。

weixin_30326515的博客 479

用busybox制作文件系统

s3c2440上 移植yaffs2文件系统 busybox-1.15.2 编译器:arm-linux-gcc 4.3.2 平台:某开发板(s3c2440) 宿主:redhat 9.0 得到源码 busybox-1.15.2.tar.bz2 在任意目录解压源码,在任意目录制作文件系统框架~!~!~! 我是在用户模式下 家目录中解压的源码和制作的文件系统框架~!~!如图:...

aidianzui5381的博客 213

ARM开发板移植lsusb命令

ARM移植lsusb

Andoubi的博客 2514
上一篇: Linux主机和VirtualBox虚拟机局域网互通
下一篇: 配置Samba
htttw
博客等级 码龄18年 378粉丝 73原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值