制作jffs2根文件系统
准备一个可用的根文件系统,建议在次用nfs挂载,以确认文件系统没问题
做好的文件系统如下
root@linuxidc:/source/workplace/rootfs# ls
bin dev etc inittab lib linuxrc mnt proc root sbin sys tmp usr var
root@linuxidc:/source/workplace/rootfs# cd ..
用mkfs.jffs2制作jffs2文件系统
root@linuxidc:/source/workplace# mkfs.jffs2 -r rootfs/ -o rootfs.jffs2 -e 0x4000 --pad=0x800000 -n
参看一下
root@linuxidc:/source/workplace# ls -lh
是否有
-rw-r--r-- 1 root root 8.0M 2010-12-24 18:22 rootfs.jffs2
复制制作好的rootfs.jffs2到tftp服务器的共享目录
root@linuxidc:/source/workplace# cp rootfs.jffs2 /tftpboot/
用u-boot启动内核并加载jffs2文件系统
在u-boot下,用tftp下载rootfs.jffs2
TFTP from server 192.168.2.5; our IP address is 192.168.2.100
Filename 'rootfs.jffs2'.
Load address: 0x30008000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
##############
done
Bytes transferred = 8388608 (800000 hex)
擦除nandflash的一篇区域,注意这篇区域的起始地址必须是一个分区的起始地址
这里用的是nandflash的第3个分区([2]从0开始算的),参看前面一直nandflash驱动时,建立的nandflash分区表
120 [2] = {
121 .name = "root",
122 .offset = 0x00200000,
123 .size = 0x00800000,
124 },
jollen.org # nand erase 200000 800000 // 如果上面的offset改了,这里的起始地址也需要作相应的修改
NAND erase: device 0 offset 2097152, size 8388608 ... OK
将刚才通过tftp下载到30008000地址的文件系统写到nandflash中
jollen.org # nand write 30008000 200000 800000
NAND write: device 0 offset 2097152, size 8388608 ... 8388608 bytes written: OK
设置linux内核的启动命令和参数
setenv bootcmd tftp 30008000 zImage\; go 30008000
setenv bootargs root=/dev/mtdblock2 rootfstype=jffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M
保存
saveenv
启动
boot
耐心等待内核启动,在启动最后,如果能看到下面这行
Please press Enter to activate this console.
恭喜您,已经成功了,回车就能进入命令行。比如我的
[root@linuxidc/root]#