Busybox编译及其yaffs2文件系制作

yaff2util的解析1--mkyaffs2工具 下载源码 目前在网络上还是以google提供的为主,其他的看上去好像不维护的样子,当然如果有读者看到的话,请帮忙提供一下。比这目前参考的是gitee上同步下来的code.google.com/p/yaffs2utils。目前笔者的VPN到期,只能拿别人的代码来分析了。当然放心,分析完,我也将源码附上。 编译 编译还是超级简单的。直接在项目根目录下make all即可。 [外链图片转存失败,源站可能... 阅读详情

 一、Busybox编译(版本busybox-1.13.0)

 1、在环境变量中设置交叉编译器 的路径(版本cross-4.3.3)

2、make menuconfig设置CROSS COMPILE为arm-linux-

3、make install即可在_install目录下生成bin sbin usr(bin,sbin)及其linuxrc文件 (该文件链接到/bin/busybox)

 

二、yaffs2文件系统制作

将_install目录下的文件拷贝至~/myroot文件夹下,按如下结构创建目录,并在相应目录下添加如下内容:

目录结构

/

|-- bin (busybox产生)
|-- dev  (设备名由mknod创建)
|-- etc
|   |-- init.d
|   `-- sysconfig
|-- home  (手工创建用户)
|   |-- san (空)与passwd文件对应
|   `-- sky (空)
与passwd文件对应
|-- lib (从交叉编译工具路径拷贝cp -r 4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib -a )
|-- mnt (空)
|-- proc (空)
|-- root (空)
|-- sbin  (busybox产生)
|-- sys (空)
|-- tmp (空)
|-- usr  (busybox产生)
|   |-- bin (busybox产生)
|   |-- lib  (busybox产生?)
|   `-- sbin  (busybox产生)
`-- var (空)

 

dev目录分析

 

dev

|-- console (mknod console c 5 1)
`-- null  (mknod null c 1 3)

 

etc目录分析

 

etc

|-- fstab (指明需挂载的文件系统)
|-- group (用户组)
|-- init.d (启动文件目录)
|   `-- rcS (存放系统启动时配置以及自启动加载的进程等)
|-- inittab (init进程的配置文件)
|-- passwd (密码文件)
|-- profile (用户环境配置文件)
`-- sysconfig
    `-- HOSTNAME (存放主机名)

【fstab】

#device    mount-point type options dump fsck order
proc    /proc    proc    defaults    0    0
tmpfs    /tmp    tmpfs    defaults    0    0
sysfs    /sys    sysfs    defaults    0    0
tmpfs    /dev    tmpfs    defaults    0    0
var    /dev    tmpfs    defaults    0    0

 

【group】

root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*5:
disk:*:6:
lp:*:7:
mail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floopy:*:25:
tape:*:26:
sudo:*:27:
audio:*:29:
ppp:x:99:
500:x:500:sky
501:x:501:sky

 

【init.d/rcS】

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesse.

mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock

/bin/hostname -F /etc/sysconfig/HOSTNAME

 

【inittab】

#/etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0 ::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

 

 s3c2410_serial为串口设备号,名称必须与 drivers/serial/samsung.c一致,或则,系统启动时无法找到串口!!

/*注意s3c2410上串口的设备名称是/dev/s3c2410_serial[0..3]*/

 

$vim drivers/serial/samsung.c

 

 879 static struct uart_driver s3c24xx_uart_drv = {
 880         .owner          = THIS_MODULE,
 881         .dev_name       = "s3c2410_serial",
 882         .nr             = CONFIG_SERIAL_SAMSUNG_UARTS,
 883         .cons           = S3C24XX_SERIAL_CONSOLE,
 884         .driver_name    = S3C24XX_SERIAL_NAME,
 885         .major          = S3C24XX_SERIAL_MAJOR,
 886         .minor          = S3C24XX_SERIAL_MINOR,
 887 };

 

系统启动后

[root@Sanux /]#ls dev/s3c2410_serial*
dev/s3c2410_serial0  dev/s3c2410_serial1  dev/s3c2410_serial2

 

【passwd】

root::0:0:root:/:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
sky::520:502:Linux User,,,,:/home/sky:/bin/sh
san::530:503:san user,,,,:/home/san:/bin/sh

 

【profile】

#Ash profile
#vim:syntax=sh

#No core files by default
#ulimit -S -c 0>/dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
PS1='[/u@/h /W]#'
PATH=$PATH

HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH

 

【sysconfig/HOSTNAME】

yourname

 

lib目录

 

lib (cp -r 4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib -a)

|-- ld-2.8.so
|-- ld-linux.so.3 -> ld-2.8.so
|-- libBrokenLocale-2.8.so
|-- libBrokenLocale.so.1 -> libBrokenLocale-2.8.so
|-- libSDL-1.2.so.0 -> libSDL-1.2.so.0.11.0
|-- libSDL-1.2.so.0.11.0
|-- libSDL-1.2.so.0.11.2
|-- libSDL.so -> libSDL-1.2.so.0.11.0
|-- libSegFault.so
|-- libanl-2.8.so
|-- libanl.so.1 -> libanl-2.8.so
|-- libc-2.8.so
|-- libc.so.6 -> libc-2.8.so
|-- libcidn-2.8.so
|-- libcidn.so.1 -> libcidn-2.8.so
|-- libcrypt-2.8.so
|-- libcrypt.so.1 -> libcrypt-2.8.so
|-- libdl-2.8.so
|-- libdl.so.2 -> libdl-2.8.so
|-- libgcc_s.so -> libgcc_s.so.1
|-- libgcc_s.so.1
|-- libm-2.8.so
|-- libm.so.6 -> libm-2.8.so
|-- libmemusage.so
|-- libnsl-2.8.so
|-- libnsl.so.1 -> libnsl-2.8.so
|-- libnss_compat-2.8.so
|-- libnss_compat.so.2 -> libnss_compat-2.8.so
|-- libnss_dns-2.8.so
|-- libnss_dns.so.2 -> libnss_dns-2.8.so
|-- libnss_files-2.8.so
|-- libnss_files.so.2 -> libnss_files-2.8.so
|-- libnss_hesiod-2.8.so
|-- libnss_hesiod.so.2 -> libnss_hesiod-2.8.so
|-- libnss_nis-2.8.so
|-- libnss_nis.so.2 -> libnss_nis-2.8.so
|-- libnss_nisplus-2.8.so
|-- libnss_nisplus.so.2 -> libnss_nisplus-2.8.so
|-- libpcprofile.so
|-- libpthread-2.8.so
|-- libpthread.so.0 -> libpthread-2.8.so
|-- libresolv-2.8.so
|-- libresolv.so.2 -> libresolv-2.8.so
|-- librt-2.8.so
|-- librt.so.1 -> librt-2.8.so
|-- libsqlite3.so -> libsqlite3.so.0.8.6
|-- libsqlite3.so.0 -> libsqlite3.so.0.8.6
|-- libsqlite3.so.0.8.6
|-- libthread_db-1.0.so
|-- libthread_db.so.1 -> libthread_db-1.0.so
|-- libutil-2.8.so
`-- libutil.so.1 -> libutil-2.8.so

 

说明:linuxrc执行时会依赖lib库文件

1)、如果将busybox编译成动态链接的形式,没有lib动态库或者缺少相应的库文件,那么linux会提示无法执行或者找不到相应的库。

2)、如果将busybox编译成静态链接的形式(实际就是调用编译器的静态链接库来编译可执行文件),没有lib动态库也是可以的。

[*] Build Busybox as a static binary (no shared libs)

实际上,在linux平台上编译可执行文件,如果调用的是动态链接库,那么我们在执行的时候,需要export LD_LIBRARY_PATH指向动态链接库的路劲,如果调用的是静态链接库,那就不用设置库的路劲了。道理都是一样的。

3)、如果将busybox编译成静态链接的形式,且lib目录下没有相应的动态链接库(如libc.so,libm.so等),那么编译出来的可执行程序无法运行,会提示说"[程序名]:Not found",因此,一般不会将busybox编译成静态链接的形式。这个问题是在编写watchdog测试程序时发现的。

 

三、使用mkyaffsimage_2制作yaffs2文件系统

mkyaffsimage_2 myroot myroot.bin

 

说明:

1)、在实际的嵌入是系统中,产品发行后,一般都不会使用终端登录的功能(除非返厂维修,debug时要用到),所以在终端登录时没必要设置密码,也没必要要bash。

所以,etc目录可简化为:

fstab

init.d/rcS

inittab

sysconfig/HOSTNAME

 

这样在终端登录后的提示符为“#”,而不会有用户名、主机名。

在移植Android系统时,也按这种方法制作系统就可以了。

2)、编译好内核,制作好文件系统后,我们的Linux系统是可以正常跑起来了,终端也可以使用命令了,但是,如果要做产品研发,离成品的要求还很远很远!除了做嵌入式学习,可以接受现在的情况,用户是绝对不会买这样的产品的。

我们好要做下面一些工作:

a)、驱动移植(BSP):没有驱动,LCD,USB,WIFI,声卡,显卡等许多外设都无法使用,AP也不可能跑在上面。

b)、Framewor修改:如sdcard挂载,屏幕旋转,屏幕校准,恢复出厂设置等。

c)、BSP、Framework与AP整合测试,并修改其中的大象Bug:在测试的过程中,肯定会发现大量的Bug,这是完全可以预料的。其中有一些是AP的问题,有些是Framework或BSP的问题,但是在实际的开发中,Bug往往都会是相互关联的,可能是AP的一个程序,发现了Framework或BSP的问题,但Framework或BSP却无法发现。所以,要真正让BSP,Framework达到完美,那就一定要与AP整合测试。


Yaffs2文件系统的制作和mkdosfs等命令工具的增加 2.1移植环境 内核版本: Linux-2.6.22.6; 交叉编译器版本: gcc-3.4.5-glibc-2.3.6; 操作系统平台: Ubuntu14; 开发板平台: S3C2440A; 使用的工具: Busybox-1.7.0。 2.2配置编译 Busybox 从 busybox官网 http://www.busybox.net/ 下载 busybox-1.7.0.t... 阅读详情

相关推荐

Linux Busybox编译问题解决方案

在Linux开发中,Busybox是一个常用的工具集合,它提供了许多常见的命令和实用程序,可以在嵌入式系统和资源受限的环境中使用。如果你已经安装了必要的开发包但仍然遇到此错误,请检查头文件和库文件的路径是否正确。你可以在Busybox的配置文件中检查相关路径,并确保这些路径中存在所需的头文件和库文件。如果你已经启用了正确的模块但仍然遇到此错误,请检查函数定义是否正确。你可以查看相应的源代码文件,确保函数的定义与使用一致。你可以使用系统包管理器安装这些开发包,具体命令可能因你使用的Linux发行版而异。

ByteJolt的博客 551

Linux下unyaffs mkyaffs2img 打包解包工具的安装使用

原文地址:[url]http://eagle0824.iteye.com/blog/1439071[/url] [align=center][color=darkred][b]------------本文为谁而准备:------------[/b][/color][/align] 像我这样的小白准备的入门级文章,感谢原作者eagle0824,本文在此基础上又更进一步的做了一些浅显易懂的...

yinghui9898的专栏 3352

mkyaffstoimage

mkyaffs2image映像文件制作

mkyaffs2image工具制作及龙芯板卡使用yaffs2系统

mkyaffs2image工具制作及龙芯板卡使用yaffs2系统 mkyaffs2image工具制作龙芯板卡使用yaffs2文集系统 mkyaffs2image工具制作 制作yaffs2文件系统时会用到mkyaffs2image工具,系统下默认没有这个工具,需要找到源码制作,源码如下: https://pan.baidu.com/s/1zmELDviR3SrY6vVioPBgIA 提取码: tx...

大猫的博客 3570

mkyaffs2image源码

yaffs2文件系统制作工具,yaffs2文件系统制作工具yaffs2文件系统制作工具

mkyaffs2image(yaffs2制作工具)

mkyaffs2image(yaffs2制作工具)

mkyaffs移植

<br />1. 下载mkyaffs源码:<br />http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs.tar.gz?view=tar<br />2. 解压缩,进入 yaffs/utils, 修改Makefile:<br />(1) MAKETOOLS = arm-linux-<br />(2) CFLAGS = 增加“-I /your-kernel-include-dir” 指向你的平台的内核目录,例如/src/preview-kit/linux-2.6.

小驹德尔驾的专栏 1237

Error: dependent ‘..\..\..\..\Qt\5.15.2\msvc2019\include\QtWidgets\QMainWindow‘ does not exist.

核心问题:修改 Build 目录为源码子目录后,MSVC 编译报错,本质是变量设置异常,导致 qmake 生成多余回溯路径;临时解决:在 .pro 文件添加;最优解决:将上述配置写入 Qt 的 msvc 对应 qmake.conf 全局文件,一劳永逸;禁止 qmake 计算路径时向上回溯,避免生成异常路径。

mumufan05的专栏 877

Busybox1.13.3制作yaffs2根文件系统(静态和动态)

准备工具1:mkyaffs2image 用途:用来制作目标文件系统映像。 工具2:busybox 用途:生成目标文件系统。网上有对它的介绍。 以上工具均来自友善之臂http://www.arm9.net/download.asp。交叉编译工具arm-linux-gcc4.3.2。(在此衷心感谢资源、资料提供者) 制作过程: 选定 busybox-1.13.3.tgz这个版本, 以静

l461269717的专栏 1001

保姆级教程:用YOLOv8/9/10搞定仪表盘指针识别,附完整数据集和Python环境配置

本文提供了一份基于YOLOv8/v9/v10的仪表盘指针检测全流程指南,涵盖环境配置、数据集构建、模型选型、训练调优和部署落地等关键步骤。通过详细的代码示例和实战经验,帮助开发者高效解决工业视觉中的仪表盘检测难题,特别适合电力巡检、智能监控等应用场景。

weixin_29031057的博客 1335

Ovito隐藏技巧:用Expression Selection快速提取分子链(附模糊背景配置参数)

本文详细介绍了Ovito软件中Expression Selection功能的隐藏技巧,用于从复杂的分子动力学模拟数据中快速、精准地提取目标分子链。通过结合Expand Selection和Invert Selection等修饰器,形成一套高效的工作流,并深入解析了实现SCI论文级渲染效果的景深模糊参数配置,帮助研究者大幅提升数据处理与图片生成效率。

pz890123的博客 867

Yaffs2根文件系统制作

Yaffs2根文件系统制作 zouxy09@qq.com 环境:    交叉编译环境:4.3.3 (天嵌科技提供,存放路径/home/xiaoyi/4.3.3) 开发平台:TQ2440 注:这里有一些东西没有提到,请结合天嵌提供的linux移植手册来进行移植     一、编译busybox(主要是获得linux下的工具包和函数库,如bin、sbin下的工具) 获取busybox

zouxy09的专栏 1万+

cut&tag学习笔记

上图是我得到的结果,下图是教程的结果,比对结果有一些差异,我也不知道具体原因是啥。谷歌了一下,发现原因可能是因为环境变量的问题,系统不知道picard的具体位置,需要设置全局环境变量,遂查了一下picard的位置。我发现我做出来的结果测序深度一致,但是比对的结果有一点差异,不知道是我的操作问题,还是参考基因组更新了导致比对结果出现了些许不同。上图是我得到的结果,下图是教程的结果,除了IgG_rep1外比对结果一致。上图是我的结果,下图是教程的结果,结果不太一致,不知道是具体的原因是什么。

weixin_52073820的博客 2422

用busybox制作yaffs2文件系统

使用的工具:busybox-1.15.2.tar.bz2(官网下载地址) 编译工具:arm-linux-gcc4.1.2  《》创建根文件系统目录,主要包括以下目录 /bin, /etc, /dev, /home, /lib, /mnt, /opt, /proc, /root, /sbin, /sys, /tmp, /usr, /var 首先建一个名为root_2.6.31的文件夹

liangliang19920226的博客 1610

IP2315高效同步降压充电IC在快充应用中的硬件与软件控制策略

本文深入解析IP2315高效同步降压充电IC在快充应用中的硬件与软件控制策略,涵盖其核心特性、硬件电阻调节技巧、I2C动态控制方案、散热设计优化及典型问题排查。IP2315支持多种快充协议,如Type-C PD、华为FCP等,适用于便携设备快速充电需求,并通过I2C实现灵活的充电参数设置,提升充电效率与安全性。

weixin_29248313的博客 538

JSSIP实战:5分钟搞定WebRTC电话功能(附完整代码示例)

本文通过JSSIP库实战演示如何在Web应用中快速集成WebRTC电话功能。文章提供了从环境准备、SIP服务器连接到完整代码示例的详细步骤,涵盖用户注册、拨号接听、媒体流处理等核心环节,并针对常见问题给出排查方案,帮助开发者高效实现网页端实时语音通信。

u8v9w0x1y的博客 517

利用busybox制作yaffs2 根文件系统镜像

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 编译busybox需要用arm-linux-gcc3.XX 编译器,用 arm-unknown-linx-gnueabi-gcc会出问题。1.从htt

shallen320的专栏 2232

为什么BGA焊点总在四个角先坏?一次热-振耦合仿真给你讲明白

本文通过Ansys Workbench进行热-振耦合仿真,深入分析了BGA焊点在四个角点先失效的机理。研究发现,角点焊点由于CTE失配、振动载荷放大及几何应力集中等因素,承受的等效塑性应变和动态应力显著高于中心区域,导致其疲劳寿命大幅降低。仿真数据揭示了角点焊点的应力分布和蠕变特性,为电子封装可靠性设计提供了重要依据。

weixin_42535461的博客 439

yaffs2文件系统制作

【环境】 1:Ubuntu 10.10 2:u-boot-2010.03 3:优龙FS2410 4:交叉编译器:arm-none-linux-gnueabi-gcc version 4.3.2 第一步:在内核里添加yaffs2的支持 1)下载源码 tony@Ubuntu:~/ win$ sudo apt-get install git tony@Ubuntu:~/

Tony 的专栏 5446

【WLAN】【调试】如何使用Wireshark分析加密的WiFi数据包

- 当配置网卡为monitor 模式的情况下,可以使用 wireshark来抓取空口报文; - 如果WiFi采用非Open加密方式,则从报文中仅能分析到 802.11协议层,更底层(如DHCP、ICMP、TCP等)被加密,此时可以使用 wireshark 来完成解密。 - 解密之后,可以通过icmp、tcp等关键词过滤报文。

一介草民,只为生活。 2984

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mini2440中busybox和yaffs2文件系统的移植

mini2440,bootloader为官方提供的supervivi,linux内核为linux-2.6.34.2。移植busybox和yaffs2文件系统的步骤: (1)    获取busybox源码包。 下载地址http://www.busybox.net/downloads/。在此,下载的版本为:busybox-1.20.2。 (2)    获取yaffs2源码包。 从官网上下载最新

沉默中的火柴 1083

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

制作yaffs2文件系统并移植到ok6410开发板上

首先用busybox制作根文件系统,参考我之前的博客:http://blog.youkuaiyun.com/start530/article/details/8018170     yaffs2源码下载:http://download.youkuaiyun.com/detail/chenxh/4186203   1.解压: tar -jxvf yaffs_source_util_larger_small_pag

天涯海阁 3738

VC中sqlite的使用

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

yaffs2文件系统移植

1、Linux2.6.37下移植yaffs文件系统 原始的linux内核是不支持Yaffs2文件系统的,我们首先需要下载yaffs2的内核补丁,给内核打上yaff2补丁才能使内核支持该文件系统。 yaffs2 老版本不支持2.6.36以上内核。 网上下载的yaffs2常见版本(点击http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下方的Do

好行者 8825
上一篇: busybox编译心得
下一篇: linux-2.6.30.4移植至2440开发板经验谈
sanlinux
博客等级 码龄17年 92粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值