Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78033
  • 博文数量: 66
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 31
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-14 23:13
文章分类

全部博文(66)

文章存档

2015年(38)

2014年(28)

分类: 嵌入式

2014-11-02 14:19:59

原文地址:yaffs2文件系统制作 作者:luozhiyong131

1、创建根文件系统的目录

mkdir rootfs

cd rootfs

mkdir bin dev etc lib proc sbin sys usr mnt tmp var

2、创建设备文件

#  cd dev/

#  mknod -m 666 console c 5 1

#  mknod -m 666 null c 1 3

3、安装/etc  etc.rar   :etC目录主要是一些启动时的脚本文件,一般不需要修改。

tar etc.tar.gz C /xxx/rootfs

4、编译busybox 获取:busybox-1.15.2.tar.bz2这个压缩包,下载,解压

进入源码目录,修改Makefile164行: 

CROSS_COMPILE = arm-linux- 

190行: 

ARCH = arm 

执行#make menuconfig  进行配置busybox 

配置选项大部分都是保持默认的,只需要注意选择以下这几个选项,其他的选项都不用动: 

Busybox Setting ---> 

Build Options ---> 

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

[*]Build with Large File Support (for accessing files > 2GB) 

Installation Options ---> 

(./_install) Busybox installation prefix  <进入这个选项,输入busybox的安装路径, 如:../rootfs 

Busybox Library Tuning ---> 

[*] vi-style line editing commands 

[*] Fancy shell prompts  <要选择这个选项:Fancy shell prompts,否则挂载文件系统后,无法正常显示命令提示符:[\u@\h \W]#

��

5、编译、安装busybox

make 

# make install

后,然后就会在上一级目录下生成rootfs文件夹,里面包含几个文件夹/bin/sbin/usrlinuxrc

安装gligc

进入lib 目录

#cpfa /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* ./

 

库文件是位于当前的交叉编译器目录下。由于交叉编译器的库文件比较多,体积较大,所以需要裁剪一下库文件,只保留常用的库文件。

到这里,文件系统的框架已经做好,我们需要把文件系统制作成可以烧写进Nandflash 中的yaffs2 镜像文件。

使用mkyaffs2image 工具,制作yaffs2 镜像,这个工具是在yaffs2 源码包中 utils 目录下的mkyaffs2image.c 文件编译得到的,如果使用的是大页NAND,需要修改源码

针对大页256M NAND

       mkyaffs2image.rar   

 针对小页64\128M NAND    mkyaffs2image 工具 

把解压出来的可执行文件复制到/usr/bin 目录下,

#cp mkyaffs2image /usr/bin

制作文件系统镜像:

#mkyaffs2image root_2.6.31 root_2.6.31.bin

root_2.6.31.bin 就是yaffs2 文件系统镜像,要先修改它的权限,否则该文件无法被复制:

#chmod 777 root_2.6.31.bin

把root_2.6.31.bin 下载到nandflash 中的文件系统分区中

其它:设置开发板IP地址:在init.d/rcS文件中加入:

ifconfig lo 127.0.0.1 

ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up 

route add default gw 192.168.1.1 

/etc/profile中加入: alias ll=`ls -l` 

alias mntnfs=`mount -t nfs -o nolock` 

alias mntud1=`mount /dev/sda1 /mnt/udisk1` 

alias umntud1=`umount /mnt/udisk1` 

alias 命令的作用是给一个命令取个别名,可以把较长的命令简化成简单易记的短命令,可以根据自己的需要添加这里的内容。

 

 

移植手册: 文件系统制作v1.5.pdf   

阅读(262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~