yaffs2根文件系统的制作.doc_第1页
yaffs2根文件系统的制作.doc_第2页
yaffs2根文件系统的制作.doc_第3页
yaffs2根文件系统的制作.doc_第4页
yaffs2根文件系统的制作.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Yaffs2文件系统移植到mini2440现在大部分开发板都可以支持yaffs2 文件系统,它是专门针对嵌入式设备,特别是使用nand flash作为存储器的嵌入式设备而创建的一种文件系统,早先的yaffs仅支持小页(512byte/page)的nand flash,使用 yaffs2 就可以支持大页的 nand flash。所谓的根文件系统,就是创建各个目录,并且在里面创建各种文件,比如在/bin,/sbin/目录下存放各种可执行的程序,在/etc目录下存放配置文件,在/lib目录下存放库文件,下面就开始文件系统的移植。一、准备工作1.Yaffs2源代码的获取在/node/346可以下载到最新的yaffs2 源代码, 如果使用git工具,在命令行输入:#git clone git:/www.aleph1.co.uk/yaffs2就可以下载到yaffs2的源代码,到当前目录下。2下载Busybox-1.13.3可以从/downloads/下载Busybox-1.13.3。3下载Yaffs2的制作工具可以到友善之臂的网站下载,mkyaffs2image.tgz,其中解压出来有两个可执行的文件,一个是针对小页的,一个是针对NandFlash大页的,其名字为mkyaffs2image-128M,一开始在这里犯了错误,我的NandFlash是128MB的,可以按照网上用的是mkyaffs2image文件,所以老是出来假坏块的提示,仔细一分析,NandFlash不可能一下子出来这么多的坏块,而且我用他们公司提供的根文件系统却没有任何的问题,所以问题处在了制作Yaffs2的工具上面。因为这两种大小NandFlash的ECC校验是不一样的,也就是spare区的大小是不一样的,造成了ECC校验出错。4链接库制作根文件系统时,要使用到链接库,这里直接使用友善之臂根文件系统中的链接库。从网站下载root_qtopia.tgz。使用lib目录下的链接库。5给内核打上YAffs2补丁然后进入yaffs2源代码目录执行:#cd yaffs2#./patch-ker.sh c /opt/mini2440/linux-此时进入linux-/fs目录,可以看到已经多了一个yaffs2目录。上面命令完成下面三件事情:(1) 修改内核fs/Kconfig增加一行:source fs/yaffs2/Kconfig(2) 修改内核fs/Kconfig增加一行:ojb-$(CONFIG_YAFFS_FS) +=yaffs2/(3) 在内核fs/目录下创建yaffs2目录将yaffs2源码目录下面的Makefile.kernel文件复制为内核fs/yaffs2/Makefie;将yaffs2 源码目录的Kconfig文件复制到内核fs/yaffs2目录下;将yaffs2源码目录下的*.c *.h文件复制到内核fs/yaffs2目录下.6配置内核以支持Yaffs2文件系统在Linux内核源代码根目录运行:make menuconfig,找到File Systems,再找到“Miscellaneous filesystems”菜单项,找到“YAFFS2 file system support”,并选中它(如上图),这样我们就在内核中添加了yaffs2 文件系统的支持,保存退出。然后在命令行中,执行make uImage,这时不要在执行mage mini2440_defconfig了,如果再执行的话,前面的配置就失效了,在这我也犯了一个低级的错误。二、构建根文件系统1根文件系统的目录结构bin 存放所有用户都可以使用的、基本的命令。sbin 存放的是基本的系统命令,它们用于启动系统、修复系统等。usr 里面存放的是共享、只读的程序和数据。proc 这是个空目录,常作为proc文件系统的挂载点。dev 该目录存放设备文件和其它特殊文件。etc 存放系统配置文件,包括启动文件。lib 存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。boot 引导加载程序使用的静态文件home 用户主目录,包括供服务账号锁使用的主目录,如FTPmnt 用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。opt 给主机额外安装软件所摆放的目录。root root用户的主目录tmp 存放临时文件,通常是空目录。var 存放可变的数据。2建立根文件系统的目录进入opt/mini2440/fs,创建一个shell的脚本用于构建根文件系统的各个目录。create_rootfs_bash,平且改变执行的权限。#chmod +x create_rootfs_bash在kernel目录下,运行./create_rootfs_bash,其脚本的内容如下:#!/bin/shecho -Create rootfs directons start.-mkdir rootfscd rootfsecho -Create root,dev.-mkdir root dev etc boot tmp var sys proc lib mnt home usrmkdir etc/init.d etc/rc.d etc/sysconfigmkdir usr/sbin usr/bin usr/lib usr/modulesecho make node in dev/console dev/nullmknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/tempmkdir var/lib var/lock var/run var/tmpchmod 1777 tmpchmod 1777 var/tmpecho -make direction done-改变了tmp目录的使用权,让它开启sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。3建立动态的链接库动态链接库直接使用友善之臂的,首先,下载友善之臂的根文件系统解压后得到root_qtopia,把该文件下的Lib下的文件全部复制到我们自己建立的lib/文件夹下。4编译和安装BusyboxBosybox 是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用 Busybox 可以自动生成根文件系统所需的bin、sbin、usr 目录和 linuxrc 文件。解压Busybox,然后#cd busybox-1.13.3/修改该目录下的makefile文件,修改平台为arm平台,修改编译器为默认的交叉编译器CROSS_COMPILE ?=arm-linux- /大约在164行ARCH ?=arm /大约在189行配置busybox,在busybox-1.13.3目录下,这里我们只关心改动的地方。执行make menuconfig,其各个选项的配置如下(只列出更改的):(1)Busybox Settings-Build Options-* Build BusyBox as a static binary(no shared libs)Busybox Library Tuning -(1024)Maximum length of input* vi-style line editing commands*Fancy shell prompts(2)Linux System Utilities -*Support /etc/mdev.conf*Support command execution at device addition/removal(3) Linux Module Utilities- simplified modutils* insmod* rmmod* lsmod* modprobe5编译busybox编译busybox到指定目录:#cd /opt/mini2440/busybox-1.13.3make CONFIG_PREFIX=/opt/kernel/rootfs install即:执行make CONFIG_PREFIX=根文件系统目录 install在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。6建立etc目录init进程根据/etc/inittab文件来创建其他的子进程,比如调用脚本文件配置IP地址,挂载其他的文件系统,最后启动shell等。(1)拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。(2)在etc/下创建mdev.conf文件内容为:# system all-writable devicesfull 0:0 0666null 0:0 0666ptmx 0:0 0666random 0:0 0666tty 0:0 0666zero 0:0 0666# console devicestty0-9* 0:5 0660vc/0-9* 0:5 0660# serial port devicess3c2410_serial0 0:5 0666 =ttySAC0s3c2410_serial1 0:5 0666 =ttySAC1s3c2410_serial2 0:5 0666 =ttySAC2s3c2410_serial3 0:5 0666 =ttySAC3# loop devicesloop0-9* 0:0 0660 =loop/# i2c devicesi2c-0 0:0 0666 =i2c/0i2c-1 0:0 0666 =i2c/1# frame buffer devicesfb0-9 0:0 0666# input devicesmice 0:0 0660 =input/mouse.* 0:0 0660 =input/event.* 0:0 0660 =input/ts.* 0:0 0660 =input/# rtc devicesrtc0 0:0 0644 rtcrtc1-9 0:0 0644# misc devicesmmcblk0p1 0:0 0600 =sdcard */bin/hotplug.shsda1 0:0 0600 =udisk * /bin/hotplug.sh(3)etc/inittab文件:仿照Busybox的examples/inittab文件,在etc/目录下创建一个inittab文件,写上以下内容:#etc/inittab:sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a -r(4)创建etc/init.d/rcS文件:这是一个脚本文件,可以在里面添加自动执行的命令#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=S /运行的级别prevlevel=Numask 022 /文件夹的掩码export PATH runlevel prevlevelecho- munt all-mount a /挂载/etc/fstab/文件指定的所有的文件系统echo /sbin/mdev/proc/sys/kernel/hotplugmdev -secho *echo *yuyang ARM*echo Kernel version:linux-2.33.3echo Author:yuyangecho Data:2010,05,08echo */bin/hostname -F /etc/sysconfig/HOSTNAME /主机的名字最后,还要改变它的属性,使它能够运行sudo chmod +x etc/init.d/rcS(5)etc/sysconfig目录下新建文件HOSTNAME,内容为”yuyang-mini2440”。(6)创建etc/fstab文件:内容如下,表示执行完,“mount -a”命令后将挂载proc,tmpfs等包含在该文件中的所有的文件系统。#device mount-point type option dump fsck orderproc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0none /tmp ramfs defaults 0 0sysfs /sys sysfs defaults 0 0mdev /dev ramfs defaults 0 0(7)创建etc/profile文件:#Ash profile#vim:syntax=sh#No core file by defaults#ulimit -S -c 0/dev/null 2&1USER=id -unLOGNAME=$USERPS1=uhW#PATH=$PATHHOSTNAME=/bin/hostnameex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论