分类: 嵌入式
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这个压缩包,下载,解压)
进入源码目录,修改Makefile第164行:
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、/usr、linuxrc。
安装gligc库
进入lib 目录
#cp–fa /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
针对小页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