原创 用NFS方式挂载根文件系统

2010-5-20 17:17 4525 6 6 分类: MCU/ 嵌入式

用NFS方式挂载根文件系统


由于原来的内核是用ATBOOT的方式下载的,不知道怎么传递参数(好像不能,网上查的nfs方式都是用U-boot的方式挂载的),因此决定用u-boot重新下载内核。


1.下载u-boot和内核


1.1编译内核


1.1.1由于板子光盘自带的内核触摸屏驱动不是配套的,要修改驱动的一个宏定义




LCD driver info */
//#define TFT3
#define TFT_NEW3 //这是板子配套触摸屏的参数
//#define vga800480 //这是默认的参数,需要注释掉
//#define vga1024
//#define vga800600


1.1.2修改参数




在arch/arm/mach-s3c2410/common-smdk.c 里的


static struct s3c2410_platform_nand smdk_nand_info = {
.tacls = 10,
.twrph0 = 30,
.twrph1 = 10,
... 


原来是20,60,20,但这个参数会找不到nand flash,需要修改为上面几个。否则得到的uImage 文件会下载运行不了。


1.1.3修改交叉编译器


vi Makefile
找到
CROSS_COMPILE ?= arm-linux


这一行,将arm-linux-修改为交叉编译器的路径(Linux系统上交叉编译工具的路径为下)



/usr/local/arm/3.4.1/bin/arm-linux-


输入:wq 保存并退出。


1.1.4编译


make clean


make uImage


(在执行命令之前要执行make menuconfig,进行配置内核:


networking options-》IP:kernel level autoconfiguralion项
选中file systems-》network file systems-》下的root file system on nfs和nfs file system support


由于我解压的是板子自带的内核,发现这些都已经选中了,因此直接编译即可,执行make uImage后,最后会提示一个错误,说不能创建某个文件,但我发现uImage已经生成了,就没理会错误,直接拿来用了)



1.2下载u-boot和内核


1.2.1下载u-boot


1.2.1.1  SJF2440 环境设置(见前面部分图文介绍)



下载u-boot用板子自带工具SJF2440.exe,安装其驱动,具体见说明文档





1.2.1.2  烧写u-boot.bin 到Nand flash 中


新建D:\atboot,把sjf2440.exe 和u-boot.bin复制到文件夹内


(sjf2440.exe 和u-boot.bin 必须在同一目录下)



具体见说明文档


1.2.1.3  利用u-boot下载uImage和文件系统到arm板上


由于板子自带是用autoflash.img自动下载uImage和文件系统到arm板上,现在我还不太明白具体的地址,因此就自动把文件系统也下载上去了,但是这个文件系统不用,下面将用nfs挂载linux主机上的文件系统rootfs文件


具体见说明文档


2. 用nfs挂载根文件系统


2.1  在虚拟机Linux上建立文件夹


/home/water/rootfs


把板子自带的系统直接拷进rootfs文件夹内



2.2linux主机 配置nfs 文件系统



修改/etc/exports 文件,格式为共享目录开发板ip 地址(权限设置):cat <<EOM >/etc/exports



/home/water/rootfs *(rw,sync,insecure,no_root_squash)



重启nfs 服务器:


/etc/init.d/nfs restart




2.3  IP设置


XP:192.168.1.100


linux:192.168.1.128


arm:192.168.1.7(这个一会用U-boot给内核传递)




2.4 给u-boot传递参数


启动u-boot,在倒计时结束前,按下空格键,进入输入参数界面


输入:


AVANTECH# set bootargs root=/dev/nfs
nfsroot=192.168.1.128:/home/water/rootfs rw noinitrd
init=/linuxrc ip=192.168.1.7:192.168.1.128:192.168.1.128:255.255.255.0:avantech:eth0:off console=ttySAC0,115200



(注:上面为一行代码,只是可能自动换行的缘故,因此输入是可以一部分一部分的复制)


AVANTECH# saveenv


AVANTECH# reset



2.5然后就ok了

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条