天天看点

nfs挂载根文件系统用NFS方式挂载根文件系统

用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了

继续阅读