打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
做了一个yaffs的rootfs [转]

1 下载yaffs2.tar.gz,网址http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2.tar.gz
解压,里面有个patch-ker.sh,用来给内核打补丁使内核支持yaffs
./patch-ker.sh c KERNELDIR
执行了这个补丁就相当于在kernel/fs下面mkdir了一个文件yaffs2,把原来yaffs2目录下的.c .h都拷到kernel/fs/yaffs2中,并且修改了kernel/fs下的Makefile和Kconfig
这样子make mennuconfig的时File systems ---> Miscellaneous filesystems ---> 里面就有yaffs2啦

====================================================================================
2 编译内核 <*> YAFFS2 file system support
-*- 512 byte / page devices

====================================================================================
3 下载busybox:http://www.busybox.net/downloads/busybox-1.9.0.tar.bz2
编译busybox,注意在Makefile
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
我的arm-linux-gcc是3.3.2,make menuconfig,看需要的命令选上,不需要的就不选了
(待研究:在我的机子上,当arm-linux-gcc为3.4.1时,编译任意版本busybox的时候insmod命令会报错,
当arm-linux-gcc为3.3.2,编译1.9.0以上版本busybox时,brctl和ifenslave便不过去)
make,make install,在_install文件夹里有三个文件夹和一个文件:bin sbin usr linuxrc

====================================================================================
4 找个地方mkdir yaffs,把bin sbin usr linuxrc拷贝进来,另外还需要mkdir etc dev proc root lib等

====================================================================================
5 最重要的就是dev 和 etc啦,因为关系到rootfs能不能起来
dev 目录下要
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod ttySAC0 c 204 64
sudo mknod mtdblock0 b 31 0
sudo mknod mtdblock1 b 31 1
sudo mknod mtdblock2 b 31 2;
注:因为在启动init进程的时候,需要sys_open((const char __user *)"/dev/console",O_RDWR,0),所以至少在/dev下面建好两个设备节点console和null,
不然会报错:Warning:unable to open an initial console

---------------------------------------------------------------------------------
etc下主要有4个文件关系到启动:inittab fstab profile init.d/rcS HOSTNAME passwd
inittab:这是init进程启动的第一个子进程,他是一个脚本,可以执行用户想执行的操作
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh #把respawn换成askfirsk,init进程会先输出"Please press Enter to activate this console"才启动子进程
---------------------------------------------------------------------------------
fstab文件:表示执行mount -a后将要挂载的文件系统
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
---------------------------------------------------------------------------------
profile文件:
export HOSTNAME=`uname -s`
export USER=`id -un`
export PS1="[$USER@$HOSTNAME]# "
---------------------------------------------------------------------------------
init.d/rcS文件:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
trap ":" INT QUIT TSTP
/bin/mount -t proc none /proc
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.1.100 up
/bin/hostname -F /etc/HOSTNAME
---------------------------------------------------------------------------------
HOSTNAME文件中写上自己的HOSTNAME
---------------------------------------------------------------------------------
passwd文件:
root::0:0:root:/:/bin/sh
---------------------------------------------------------------------------------
6 把安装arm-linux-gcc的目录里的lib文件夹的库拷到lib文件夹里面
cp *.so* ~/rootfs/yaffs/lib -d
虽然并不是每个都能用到,不过还是这样最省事了,考虑镜像空大小的时候可以根据应用程序对库的依赖关系来决定拷哪个库文件
arm-linux-readelf -a ./busybox|grep shared
====================================================================================

7 到网上下载最新rzsz
http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz
解压 tar zxvf

rzsz-3.38.tar.gz
安装 cd src ; make posix 。
编译生成rz sz,放入yaffs/bin 里面
====================================================================================
8修改制作mkyaffsimage工具

我的内核时2.6.25.16,因为内核中的ECC校验码的位置和yaffs文件系统的不一样,需要修改yaffs2/util/mkyaffsimage.c,不修改的话即使挂载成功,
内核也不认识文件系统里的内容,出现init进程创建的时候报错:Warning:unable to open an initial console,所以需要打补丁
在yaffs2相同目录下运行 patch -p1<./yaffs_util_mkyaffsimage.patch
打好补丁后发现yaffs2/utils里多了几个文件,执行make生成mkyaffsimage mkyaffs2imsge两个工具:
====================================================================================
9 好了,现在使用这个工具来制作yaffs.img
mkyaffsimsge ./yaffs yaffs.img
10 现在把内核和rootfs烧进去看看能不能起来,起不来应该是etc里面的文件没有写好
vivi参数就用QQ2440默认的就行
Linux command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
建立根文件系统目录
创建设备节点文件以及主次设备号
构建嵌入式Linux系统-根文件系统的内容
容器虚拟化之LXC(LinuX Container)
ramdisk文件系统制作和移植
android 挂载NFS教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服