现在的位置: 首页 > 综合 > 正文

nfs挂载根文件系统

2014年12月12日 ⁄ 综合 ⁄ 共 2057字 ⁄ 字号 评论关闭
 1075人阅读 评论(0) 收藏 举报

目录(?)[+]

用NFS方式挂载根文件系统

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

1.下载u-boot和内核

1.1编译内核

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

 

 

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

1.1.2修改参数

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

[c-sharp] view
plain
copy

  1. static struct s3c2410_platform_nand smdk_nand_info = {  
  2. .tacls = 10,  
  3. .twrph0 = 30,  
  4. .twrph1 = 10,  
  5. ...  

 

原来是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了

抱歉!评论已关闭.