基于S3C2440之TQ2440文件系统yaff2制作步骤

2023-11-08

TQ2440 yaff2文件系统制作


#####【环境】
开发板:tq2440 2M-NOR 256-NAND W43
虚拟机:ubuntu14.04 LTS
编译器版本:arm-linux-gcc-4.3.2
busybox版本:busybox-1.13.0
注:busybox、arm-linux-gcc,均使用的天嵌光盘里的。

####1、创建yaffs2文件系统基本结构

         ~~~~~~~~         复制以下内容,在ubuntu根目录下创建名为creat_yaffs2.sh脚本文件。会生成目录/yaffs2

#!/bin/sh

rm -rf /yaffs2
echo “——Create yaffs2 directons start…——–” 
mkdir yaffs2 
cd yaffs2 
echo “——–Create root,dev….———-” 
mkdir root dev etc boot tmp var sys proc lib mnt home usr opt
mkdir etc/init.d etc/rc.d etc/sysconfig 
mkdir usr/sbin usr/bin usr/lib usr/modules usr/local
echo “make node in dev/console dev/null” 
mknod -m 600 dev/console c 5 1 
mknod -m 600 dev/null c 1 3 
mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp 
mkdir var/lib var/lock var/run var/tmp 
chmod 1777 tmp 
chmod 1777 var/tmp 
echo “——-make direction done———”
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*  /yaffs2/lib -rf


cd /yaffs2/etc

touch fstab inittab mdev.conf profile sysconfig/HOSTNAME init.d/rcS
chmod 744 init.d/rcS
echo "root@tq2440" > sysconfig/HOSTNAME


结果如图:
这里写图片描述


2、配置编译busybox

######执行命令make menuconfig配置busybox。
  ~  

  1. Busybox Settings —>Build Options —>

  2. 选中Build BusyBox as a static binary (no shared libs)静态编译的方式。

  3. 选中Build with Large File Support (for accessing files > 2 GB) () Cross Compiler prefix,括号内指定编译器为arm-linux-

2.   ~  Busybox Settings —>Installation Options —>

  1. ()BusyBox installation prefix,括号内指定安装目录为你的根文件系统目录/yaffs2

3.   ~  Busybox Settings —>Busybox Library Tuning —>

  1. 选中Fancy shell prompts
  2. 选中Username completion
    没有这两项,开发板启动后,文件系统识别不出HOSTNAME

4.   ~  Networking Utilities —>

  1. 取消选择:ip tunnel

5.   ~  保存退出
         ~~~~~~~~         执行命令 make
         ~~~~~~~~         执行命令 make install


3、填充文件系统文件内容

进入到创建的文件系统的etc目录下:

1. 填充文件【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
ramfs		/dev		ramfs	defaults		0	0

2. 填充文件【initttab】如下内容:

# /etc/inittab
::sysinit:/etc/init.d/rcS
# 进入文件系统需要点一下回车
#tq2440_serial0::askfirst:-/bin/sh
# 直接进入根文件系统
::respawn:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

3. 填充文件【mdev.conf】如下内容:

sd[a-z]*[0-9]		0:0	0660	@(mount -t vfat -o iocharset=cp936 /dev/$MDEV /mnt/udisk)
sd[a-z]*[0-9]		0:0	0660	*(umount /mnt/udisk)
mmcblk[0-9]*p[0-9]	0:0	0660	@(mount -t vfat -o iocharset=cp936 /dev/$MDEV /mnt/sd)
mmcblk[0-9]*p[0-9]	0:0	0660	*(umount /mnt/sd)

4. 填充文件【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="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
PATH=$PATH

HOSTNAME=`/bin/hostname`

export USER LOGNAME PS1 PATH



5. 填充文件【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 subprocesses.
#

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

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

source /etc/profile



echo 
echo 
echo "********************<< TQ2440 ARM9 >>********************"
echo "              Kernel version:linux-2.6.30"
echo "              Author: KunGe"
echo "              Data: 2017/03/23"
echo "*********************************************************"
echo
echo


到此,yaffs2根文件系统制作完毕!


4、使用NFS将开发板挂在到ubuntu

  1. 将u-boot下载到tq2440 nor flash,重启开发板
  2. 格式化NAND(有两个选项,都格式化掉),下载u-boot到nand flash
    这里写图片描述
  3. 下载内核
  4. 将开发板开关拨到NAND,从NAND启动,快速按电脑的空格键,启动下载模式。
  5. 执行一下操作:
    5.1 setenv serverip 192.168.0.252 // Ubuntu的ip地址
    5.2 setenv ipaddr 192.168.0.250 // 开发板ip地址
    5.3 setenv gatewayip 192.168.0.1 // 设置网关
    5.5
    setenv bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.251:/yaffs2 ip=192.168.0.250:192.168.0.252:192.168.0.250:255.255.255.0:SKY2440.embedsky.net:eth0:off
    5.6 save,多save几次。
    5.7 reset重启开发板
    这里写图片描述

5、结果

这里写图片描述

挂载成功~!


end…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于S3C2440之TQ2440文件系统yaff2制作步骤 的相关文章

随机推荐

  • Linux进阶

    创作不易 来了的客官点点关注 收藏 订阅一键三连 前言 运维之基础 Linux 我是一个即将毕业的大学生 超超 如果你也在学习Linux 不妨跟着萌新超超一起学习Linux 拿下Linux 一起加油 共同努力 拿到理想offer 系列文章
  • python os.path.expanduser os.path.expandvars

    os path expanduser path 在linux平台下 可以用 来代表 home 你的用户名 这个路径 那么python是不认识 这个符号的 如果你写路径的时候直接写 pic 程序是执行不了的 但是你非要用 这时候这个os pa
  • http原理与dns原理总结

    1 HTTPS原理 HTTPS 超文本传输安全协议 是一种以安全为基础的HTTP传输通道 HTTP是超文本传输协议 是TCP IP组中协议之一 也是互联网上应用最为广泛的协议之一 所有的WWW 万维网 文件都必须遵循这个标准 因为HTTP也
  • 输出100以内所有能被3整除但不能被5整除的数,按每5个数的形式输出。

    include
  • vue 数组添加元素_用vue.js做一个列表,类似于百度的搜索排名,用v-for来循环

    先看效果吧 如下图 用vue来实现 比较简单 更多文章请关注我的头条号 我是落笔承冰 一 加入vue js链接库 添加一个父组件 一个全局子组件 二 这个时候网页一定是空的 所以我们在子组件添加模板吧 然后在vmd中调用 三 我们把三行li
  • 代码注入:动态解析代码_保护您的代码:开发更安全代码的17个技巧

    代码注入 动态解析代码 网络上的恐怖故事变得越来越糟 首先 一些信用卡号被盗 然后有几千 现在 我们听到数以百万计的财务记录被安全漏洞暴露 并且我们对潜在的威胁变得麻木了 信用卡号码几乎无法触及坏蛋的目标 而且研究网络战争的实验室还传出了更
  • iOS_Unity打包报错MapFileParser.sh:Permission denied

    1 前言 使用unity打包出的IOS包 在XCode进行ARchive到最后的时候出现了MapFileParser sh Permission denied的错误 2 解决办法 打开终端输入如下命令后回车即可 chmod a x User
  • 剪切板复制粘贴工具 PopClip mac中文版

    PopClip mac是一款文本操作工具 它可以在你选中文本时自动弹出菜单 提供了多种常用的文本操作选项 包括复制 剪切 粘贴 搜索 翻译 发送到其他应用程序等 PopClip 通过插件的形式支持了许多第三方应用程序 例如 Google T
  • 安装ceres-solver

    2023 6 8 10 11 安装ceres solver 开源C 库 用于建模和解决大型 复杂的优化问题 它可用于解决具有边界约束的非线性最小二乘问题和一般无约束优化问题 是谷歌开发的一款用于非线性优化的库 在谷歌的开源激光雷达slam项
  • Kotlin集合框架分析

    一 Kotlin中集合框架和Java集合框架特别相似 掌握以下例子就Ok了 package cn kotliner kotlin collections Created by wangdong 集合框架 kotlin中集合的映射 最终都映射
  • 2020-10-14

    今天为大家分享一些可以接私单的平台 相信大家学习编程未来是希望成为一个软件工程师或者码农 找到好的工作 有好的发展 但是在还没有找工作之前 大家可以通过一些平台接一些兼职 一来能够赚钱 在主页保持稳定的情况下能够发展自己的副业 二来通过接项
  • java知乎爬虫源码_java知乎爬虫写作过程和思路

    0 需要的知识点 正则表达式 java多线程线程池池知识 httpclient网络库及json和html结构 1 获取主话题 在知乎中一共有33个主话题 在33个主话题下又有15776个子话题 因此我们首先要获取到33个主话题 ps 一开始
  • Word Amalgamation 【HDU - 1113】【题意+map】

    题目链接 题意 我们先给出一系列基础字符串 之后用 XXXXXX 隔开 我们将列写查询字符串 假如查询字符串换一种排列可以得出上面的字符串 那么 我们就输出上面的字符串 不然输出 NOT A VALID WORD 这就是一道关于STL中ma
  • opencv线段绘制

    opencv线段绘制 线段绘制采用cv2 line函数 import cv2 import numpy as np newImageInfo 500 500 3 dst np zeros newImageInfo np uint8 cv2
  • Springboot框架整合freemarker开发【干货满满】

    晚安独角兽 hello你好我是独角兽 很高兴你能来阅读 昵称是希望自己能不断精进 向着优秀程序员前行 博客来源于项目以及编程中遇到的问题总结 偶尔会有读书分享 我会陆续更新Java前端 后台 数据库 项目案例等相关知识点总结 感谢你的阅读和
  • pathspec 'master' did not match any files known to git

    出现的场景 在本地init一个仓库 然后创建一个develop分支 并在这个分支上进行文件操作 接着commit所做的修改 git init Initialized empty Git repository in D practice te
  • PyTorch量化报错后端不匹配

    环境 PyTorch 1 7 1 错误描述 使用PyTorch Quantization包进行量化感知训练 QAT 时 最后一步convert报错 Traceback most recent call last File train py
  • 使用python创建一个新execl

    1 创建一个新的excel文件 import openpyxl wb openpyxl Workbook 创建一个excel文件 sheet wb active 获得一个的工作表 sheet title 表单名 wb 代表一个excel文件
  • golang 中 cannot use ** (type interface {}) as type **解决方案

    在beego中从session中取值的时候 取出来的是intergace 但是我先返回的值是int型 或者是string 这个时候会出现一个错误 cannot use 变量 type interface as type 类型 错误代码 fu
  • 基于S3C2440之TQ2440文件系统yaff2制作步骤

    TQ2440 yaff2文件系统制作 环境 开发板 tq2440 2M NOR 256 NAND W43 虚拟机 ubuntu14 04 LTS 编译器版本 arm linux gcc 4 3 2 busybox版本 busybox 1 1