ubuntu下一种将linux文件系统烧写到nandflash的方法
2009-03-04 16:59
1,首先将开发板通过nfs的方式加载host端的nfs文件系统:(对host端操作)
1.1 假定我们host端已经将文件系统编译成功,存放在/ARM/rootfs下面。那么修改/etc/exports文件,添加如下一句: /ARM/rootfs *(rw, sync) 1.2 然后重启nfs服务: bash$:/etc/init.d/nfs-kernel-server restart//主义提示信息,是否重启成功,若失败,重复以上操作。 2, 准备文件系统:(对host端操作) cd /ARM/rootfs //切换目录 tar cvvf ~/Desktop/rootfs.tar ./ //压缩文件系统 这样在桌面上就会生成一个rootfs.rar的文件系统压缩包。 3 修改ARM开发半的启动参数:(对ARM开发板进行操作) 设置环境变量 setenv ipaddr 172.16.100.102 //板子的ip地址,可以自己重设,但是要和服务器的网段相同 setenv serverip 172.16.100.103 //服务器ip地址,可以自己重设 setenv ethaddr a:a:a:f:d:1 //mac地址,这里随便设置吧……? setenv bootargs 'mem=64M console=ttyS0,115200 root=/dev/nfs rw nfsroot=172.16.100.103:/ARM/rootfs ip=172.16.100.102:172.16.100.1:255.255.255.0' //第四个环境变量用来加载nfs根文件系统的。 setenv bootcmd ' tftp 0x22008000 uImage;bootm 0x22008000' saveenv(保存设置) ping 172.16.100.103 //测试服务器是否连通,alive表示通了 4, 进入系统后(nfs方式),查看nandflash的分区情况:(对ARM开发板进行操作) ls /dev/mtdblock* 可能有好几个,如mtdblock1 mtdblock2等。 然后我们用如下命令加载nandflash的分区: mount -t jffs2 /dev/mtdblock1(或者是mtdblock2) /mnt //如果提示你:No such file or directory,请到host端建立一个/ARM/rootfs/mnt目录。 //挂载时可能有读取错误,说明分区号有错,请更换其他分区号重试 挂载成功后,用如下命令查看分区大小: df -h 根据你的文件系统的大小,如果该分区太小,请更换其他分区(如mtdblock2等) 5,到host端操作: mv ~/Desktop/rootfs.tar /ARM/rootfs/root //或者cp复制 对ARM操作: ls /root //应该能看到rootfs.tar cd /root tar xvf rootfs.rar -C /mnt //这一步就是将根文件系统解压到我们的nandflash中了,也就是达到了“烧写”的效果。 cd /mnt ls /mnt //如果这一步能够看到etc mnt dev等目录就可以了。 如果你看到的只有一个rootfs目录,那就得执行: mv rootfs/* ./ rmdir rootfs 6,重新启动系统,设置u-boot参数 进入u-boot命令等待状态,执行: setenv bootargs 'mem=64M console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=jffs2' saveenv reset 之后就可以看到u-boot自动加载内核了 |