Yaffs2根文件系统移植

ARM9平台Linux内核移植实战:从2.6.29.4配置到YAFFS2根文件系统部署 嵌入式Linux系统开发中,内核移植与文件系统构建是核心基础环节。其原理在于通过交叉编译工具链,将针对特定处理器架构优化的Linux内核源码编译为可在目标硬件上运行的二进制镜像。这一过程的技术价值在于实现对底层硬件的精准控制与资源高效利用,是连接硬件平台与应用软件的桥梁。典型应用场景包括工业控制、物联网设备及消费电子等领域,开发者常需根据具体硬件调整内核配置、驱动及启动参数。本文聚焦于经典ARM9平台,详细解析Linux 2.6.29.4内核的配置、关键驱动(如NAND Flash与DM9000网卡)的适配 阅读详情
 Yaffs2根文件系统移植

一、创建文件夹

1.创建主工作文件夹【mkdir arm2410】

2.【cd arm2410】

3.创建内核移植文件夹【mkdir rootfs】

二.自动生成根文件系统文件夹结构【rootfs】文件夹

 1.进工作目录[cd rootfs]

 2.编辑生成脚本文件[gedit mkrootfs.sh] 将以下内容拷贝到弹出的窗口中,注意保存!!

#! /bin/sh

    echo "creatint rootfs dir......"

    mkdir rootfs

    cd rootfs

    echo "making dir : bin dev etc lib proc sbin sys usr"

    mkdir bin dev etc lib proc sbin sys usr #必备的8个目录

    mkdir usr/bin usr/lib usr/sbin lib/modules

# Don't use mknod ,unless you run this Script as root !

# mknod -m 600 dev/console c 5 1

# mknod -m 666 dev/null c 1 3

    echo "making dir : mnt tmp var"

    mkdir mnt tmp var

    chmod 1777 tmp

    mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

    mkdir var/lib var/lock var/log var/run var/tmp

    chmod 1777 var/tmp

    echo "making dir : home root boot"

    mkdir home root boot

    echo "done"

3.设置脚本文件可执行权限【chmod 777 mkrootfs.sh】并执行./mkrootfs.sh

三、安装busybox工具(我用的是busybox-1.13.3 ,也可以使用其他版本)

1. 解压缩工具包【tar jxvf busybox-1.13.3.tar.gz】

2.修改Makefile文件[gedit Makefile] ,修改以下两项

ARCH  ?= arm  

CROSS_COMPILE ?= arm-linux-  (已修改)

3. 【make defconfig】

4.配置make menuconfig

General Configuration应该选的选项

---Show terse applet usage messages

·  Show verbose applet usage messages

--- Support for SUID/SGID handling

·     Runtime SUID/SGID configuration via /etc/busybox.conf  

Build Options应该选的选项

·  Build BusyBox as a static binary (no shared libs)   //静态链接

同时去掉

·  Build with Large File Support (for accessing file>2GB)

【这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作】

Busybox library tuning应该选的选项

   *fancy shell prompts

   *username completion

Installation Options应该选的选项

·  Don't use /usr

(./_install) BusyBox installation prefix

注:(A) Build BusyBox as a static binary (no shared libs) 方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。

静态编译如:

arm-linux-gcc –static hello.c –o hello

(B)如果选择Build shared libbusybox方式进行编译时,要将交叉编译的动态库或符号链接复制到对应的目录中,否则程序不能运行。同时在配置时应去掉Build shared libbusybox目录下的两项:如下 

Build shared libbusybox->

Produce binary for each applet,linked against libbusybox

Produce additional busybox binary linked against libbusybox

5.另外,这两个不选

Miscellaneous Utilities ---> 
[ ] taskset 
Runit Utilities ---> 
[ ] runsv 

6.make

7.make install

8.打开安装文件夹【cd _install】

9.拷贝文件到【rootfs】文件夹【cp –rf  *  ../../rootfs/】

10.以root身份建立节点文件 /dev/console, /dev/null

11.打开驱动程序文件夹【cd dev】

 12.【mknod -m 600 console c 5 1】

   【mknod -m 666 null c 3 1】

    【cd ..】

四、配置etc文件夹

1. 打开etc文件夹【cd etc】

2.将busybox工具生成的配置文件模板拷贝到etc文件夹:【cp -r ../../ busybox-1.15.2/examples/bootfloppy/etc/* ./】

以下文件可用gedit指令打开,修改后注意保存呢!!!

3.修改profile文件: 

#!/bin/sh
#/etc/profile:system-wide .profile file for the Bourne shells
echo
echo -n "Processing /etc/profile......"
# Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib
# set user path
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
#Set PS1

echo "Set PS1 in /etc/profile"
export PS1="[\u@\h\W]\$" 
echo "Done!"

4.修改inittab文件:

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init 
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a

5.修改fstab文件:

proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0

none /var ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0

6.修改初始化脚本init.d/rcS

#! /bin/sh
echo "----------mount all"
/bin/mount -a

echo "----------Starting mdev......"
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

echo "********************************************************"
echo " S601 2410 Rootfs 2011.11 "
echo " Love Linux ! ! @@ Love S601 ! ! "
echo "********************************************************"

五、创建登录账户

1.【cd …/etc】

2.【cp /etc/group ./】

3.【cp /etc/passwd ./】

4.【cp /etc/shadow ./】

六、填加静态库

1.【tar zxvf arm920t-eabi.tgz】

2.【cp /opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib/*.so* rootfs/lib】

七、安装yaffs文件格式制作工具

1.【tar zxvf mkyaffs2image.tgz】

2.【cp usr/sbin/mkyaffs2image-128M /usr/sbin】

3.【mkyaffs2image-128M rootfs rootfs.bin】

八.编译好后,生成rootfs.bin 

(注:将Vivi,内核,和制作的Yaffs2根文件系统下载到目标板后,启动系统到操作界面,关于user名字,可添加自己喜欢的用户名,操作如下:

cd /etc/init.d/

gedit rcs

只需要在rcS中添加

/bin/hostname -F /etc/hostname

然后再/etc目录下vi hostname ,编辑你想要的用户名并保存,后重启系统

)

摘自:

http://blog.youkuaiyun.com/fzf151/article/details/7426186

Linux内核移植与yaffs2根文件系统制作指南 Linux系统的启动是一个从BIOS/UEFI到操作系统内核的渐进过程。在这一阶段,内核的加载是关键步骤,它负责初始化硬件设备,设置内存空间,并加载必要的服务与驱动程序,从而为运行用户空间程序打下基础。U-Boot(Universal Boot Loader)是目前最广泛使用的引导加载程序之一。它支持多种架构的处理器,如ARM、x86、MIPS等,并被许多嵌入式系统采用。U-Boot之所以受欢迎,是因为它具有以下特点:跨平台支持。 阅读详情

相关推荐

基于正点原子板子移植yaffs文件系统

在开发板上移植nand flash文件系统。

yaffs2裸机移植

yaffs2在am335x的裸机移植

小树的博客 2591

yaffs2裸机移植过程.pdf

yaffs2指导文档,帮助开发人员进行yaffs2裸机移植,步骤详细方向明确。介绍yaffs2的使用方法和测试函数接口。

Yaffs 文件系统分析

1 Yaffs文件系统结构1.1 简介1.1.1 应用场合        Yaffs(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的NAND FLASH芯片。Yaffs文件系统有些类似于JFFS/JFFS2文件系统,与

colorant的专栏 2万+

微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南

数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础

weixin_30764883的博客 570

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化

大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系

weixin_33443333的博客 352

YAFFS2移植指南

YAFFS2移植指南 版本V2.0 翻译自YAFFS官方版文档,译者做了少许修改。 原文地址: http://www.yaffs.net/yaffs-porting-guide – prife 2011/07/02 17:27 – prife 2011/07/03 13:53 背景知识和NAND Flash特性 (暂略部

harhy的专栏 9439

快乐8 Ai大模型XGBoost LightGBM预测系统

随机森林回归:通过集成多个决策树模型,提高预测的准确性和稳定性。XGBoost:一种基于梯度提升的强大模型,擅长处理结构化数据。LightGBM:一种高效的基于决策树算法的分布式梯度提升框架,具有快速的训练速度和低内存消耗。高预测准确率:通过集成多种模型,提供更为精准的预测结果。多种预测方法:支持同尾号、重号、温号、连号和综合预测等多种预测策略,满足不同用户的需求。实时日志:在预测过程中,用户可以实时查看系统的预测进度和结果。

m0_72636583的博客 1万+

利用Busybox移植Yaffs2根文件系统

现在大部分开发板都可以支持yaffs2 文件系统,它是专门针对嵌入式设备,特别是使 用 nand flash作为存储器的嵌入式设备而创建的一种文件系统,早先的yaffs 仅支持小页 (512byte/page)的nand flash,,使用 yaffs2 就可以支持大页的 nand flash。    所谓的根文件系统,就是创建各个目录,并且在里面创建各种文件,比如在/bin,/sbin/目

allen6268198的专栏 1818

LTspice进阶技巧-031.一键加密仿真模型:LTspice Encrypt Tool实战指南

本文详细介绍了LTspice Encrypt Tool的使用方法,帮助工程师一键加密LTspice仿真模型,保护知识产权。通过图形化界面简化操作流程,支持批量加密和兼容性处理,适用于电路设计中的模型保护需求。

weixin_28304023的博客 202

3步搞定专利数据爬取:用Selenium绕过国家知识产权局反爬(附完整代码)

本文详细介绍了3种高效获取专利数据的技术方案,重点解析了使用Selenium绕过国家知识产权局反爬的实战方法,并提供了完整代码示例。文章还探讨了Requests+lxml轻量级方案和混合技术策略,帮助开发者根据需求选择最佳数据爬取方案,特别适合需要专利统计数据的开发者参考。

weixin_29029995的博客 1111

Mini2440之linux根文件系统yaffs2移植

什么是根文件系统?理论上说一个嵌入式设备如果内核能运行起来,且不需要用户进程的话(估计这种情况很少),是不需要文件系统的。文件系统简单的说就是一种目录结构,由于linux操作系统的设备在系统中是以文件的形式存在,将这些文件分类管理以及提供和内核交互的接口,就形成了一定的目录结构也就是文件系统。文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。 而根文件系统,就是一种特殊的文...

Graceful_scenery的博客 263

解密高并发系统的瓶颈:五大解决方案

在互联网应用中,高并发是指在短时间内同时有大量的用户访问一个网站或服务,造成系统压力过大,导致服务器宕机或服务停止响应的情况。高并发是互联网应用面临的一个重要问题,需要采取一系列措施来解决。负载均衡、缓存、数据库优化、异步处理和分布式架构是解决高并发问题的主要方法。在实际应用中,需要根据具体情况选择不同的方法来解决高并发问题。在高并发情况下,使用负载均衡是解决问题的一种常见方法。负载均衡可以通过将请求分配到多个服务器上,从而减少单个服务器的负载。这可以通过硬件设备或软件实现。

BUG制造者:图图 <p>这是一个P标签</p> 3903

Linux3.6.7在OK6410平台的移植(四)搭建YAFFS2根文件系统

1. 内核加入YAFFS2文件系统,编译    参考前面这篇:YAFFS2移植到linux3.6.72. make menuconfig 配置如下:    2.1Device Drivers配置         2.1.1. Generic Driver Options选择        [*] Maintain a devtmpfs filesystem to mount at /dev

qq874692826的专栏 1286

C# + NAudio:构建支持实时音频处理的语音聊天应用(含回声消除)

本文介绍了如何利用C#和NAudio库开发实时语音聊天应用,重点实现回声消除功能。首先概述了NAudio库在音频处理中的作用,包括音频录制、播放和实时处理能力。然后详细讲解了构建基础语音聊天应用的过程,包括麦克风录制和扬声器播放的实现。接着深入探讨了回声消除的原理和实现方法,提出通过比较麦克风输入和扬声器输出的音频信号来消除回声,并给出了核心代码示例。最后,文章还讨论了性能优化方向,如多线程处理和网络传输扩展。该方案为开发高质量实时语音应用提供了实用参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1010

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

嵌入式Linux NAND Flash上yaffs2根文件系统移植实战与避坑指南

NAND Flash具有page读写、block擦除、坏块和位翻转等物理特性,传统文件系统难以适配,而yaffs2作为专为NAND设计的日志型文件系统,通过顺序写入、坏块管理和OOB区利用,显著提升了数据可靠性与寿命。在嵌入式Linux开发中,将rootfs固化到NAND并启用yaffs2,是产品化落地的关键一环。本文从文件系统原理出发,围绕内核配置、MTD分区、mkyaffs2image镜像生成、uboot启动参数等环节,结合真实的踩坑经历(如ECC布局、坏块标记、mtdblockN对应关系),系统性讲解

weixin_34111790的博客 350

VC中sqlite的使用

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

嵌入式Linux实战:NAND Flash上yaffs2根文件系统移植全攻略

嵌入式Linux系统中,存储介质的选择直接影响文件系统的设计与实现。NAND Flash具备坏块、位翻转等物理特性,因此需要专门设计的闪存文件系统来保障数据可靠性。在JFFS2、UBIFS等方案中,yaffs2凭借对旧内核的良好适配和简洁的代码结构,成为许多嵌入式产品的优先选择。实际移植yaffs2根文件系统时,需要关注内核Kconfig配置、MTD层接口兼容、ECC与OOB布局协调以及镜像制作工具匹配等关键环节。针对挂载失败、读写异常等问题,本文结合工程实践提供了系统的排查思路与验证方法,帮助开发者在NA

weixin_34111790的博客 334

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NAND Flash根文件系统移植实践:基于yaffs2的完整解析

NAND Flash以其页读写、块擦除的物理特性,在嵌入式系统中广泛应用,但坏块与位翻转问题令普通块文件系统难以可靠运行。为此,Flash专用文件系统成为关键,其中yaffs2凭借日志结构设计、内建坏块管理及快速挂载能力,在固定NAND分区场景下展现出成熟稳定的优势。本文从文件系统选型逻辑出发,对比JFFS2与UBIFS的适用边界,进而梳理yaffs2内核接入、MTD分区对齐、BusyBox根文件系统构建及mkyaffs2image镜像生成的关键步骤,并结合启动阶段常见的挂载失败、ECC冲突、烧写对齐等问题

cuiji1279的博客 251

移植Linux根文件系统之yaffs2

1. 这里我的文档yaffs2和linux3.4.2在同一个文件下,假设在这个两个文件夹上一级,如下就是使用的脚本命令: cd yaffs2 ./patch-ker.sh c m ../linux-3.4.2/ 2.make menuconfig 在这个目录下进行选中yaffs2 : File systems/Miscellaneous file systems/ 3.4.2这里是yaffs2 file system support,使用Y就可,里面有个分页文件的大小,我使用的nand

行者 1417

at91sam9g15 linux内核移植,基于AT91SAM9261EK的嵌入式Linux+Yaffs2 根文件系统移植成功...

经过几天的尝试与摸索,终于把yaffs2根文件系统移植到AT91SAM9261EK上,移植中出现了一些问题,经过查找网络资源并分析,总结,终于测试成功。(1)Bootstrap V3.8.5 :官方最新release版本,我的开发板为:128M NandFlash,因此需要添加128M NandFlash的型号与参数,在Nand_ids:at91bootstrap-3.8.5/driver/nan...

weixin_32141253的博客 890

移植yaffs2根文件系统

一、准备源码包 busybox-1.21.1.tar.bz2 yaffs2-source.tar 二、编译busybox 1.解压busybox-1.21.1.tar.bz2到Ubuntu的家目录 tar -jxf /mnt/hgfs/share/busybox-1.21.1.tar.bz2 -C ~ cd busybox-1.21.1 2.设置顶层目录的Makefile文件 a.修改交叉编译 CROSS_COMPILE ?= /usr/local/arm/arm-2009q3/bin/arm-none

一只小白的博客 553

基于AT91SAM9261EK的嵌入式Linux2.6.32+Yaffs2 根文件系统移植成功

经过几天的尝试与摸索,终于把yaffs2根文件系统移植到AT91SAM9261EK上,移植中出现了一些问题,经过查找网络资源并分析,总结,终于测试成功。 (1)Bootstrap V3.8.5 :官方最新release版本,我的开发板为:128M NandFlash,因此需要添加128M NandFlash的型号与参数,在Nand_ids: at91bootstrap-3.8.5/driver

坚韧与专注 2273

zynq100 linux移植,Linux3.6.7在OK6410平台的移植(四)搭建YAFFS2根文件系统

1. 内核加入YAFFS2文件系统,编译2.make menuconfig配置如下:2.1Device Drivers配置2.1.1. Generic Driver Options选择[*] Maintain a devtmpfs filesystem to mount at /dev[*] Automount devtmpfs at /dev, after the kernel moun...

weixin_39608132的博客 444
上一篇: 总线,设备,设备驱动
下一篇: Android 源码分析
conceptcon
博客等级 码龄17年 84粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值