用NFS方式挂载根文件系统
由于原来的内核是用ATBOOT的方式下载的,不知道怎么传递参数(好像不能,网上查的nfs方式都是用U-boot的方式挂载的),因此决定用u-boot重新下载内核。
1.下载u-boot和内核
1.1编译内核
1.1.1由于板子光盘自带的内核触摸屏驱动不是配套的,要修改驱动的一个宏定义
LCD driver info */<br/>//#define TFT3<br/>#define TFT_NEW3 //这是板子配套触摸屏的参数<br/>//#define vga800480 //这是默认的参数,需要注释掉<br/>//#define vga1024<br/>//#define vga800600
1.1.2修改参数
在arch/arm/mach-s3c2410/common-smdk.c 里的
static struct s3c2410_platform_nand smdk_nand_info = {<br/>.tacls = 10,<br/>.twrph0 = 30,<br/>.twrph1 = 10,<br/>...
原来是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了