首先配置虚拟机的nfs服务器,网上一大堆,基本都可以正常使用。配置好之后,使用下面命令测试一下:
mount -o nolock -t nfs 192.168.1.220:/usr/local/ti-sdk-am335x-evm/targetNFS /mnt
如果成功,说明nfs正常。就可以执行下面步骤。
配置bootargs启动参数,这个是关键,在am335x-evm.h文件中有默认CONFIG_EXTRA_ENV_SETTINGS环境变量设置,这是里面都是通用(常用)的设置,1,mmc 2 nand 3net
而我用的比比较特殊,我使用nand启动 u-boot、uImage (kernel),只有文件系统使用nfs,因此不能直接使用通过的环境变量,修改如下 :
修改前:
"rootpath=/export/rootfs\0" \
"nandargs=setenv bootargs console=${console} " \
"${optargs} " \
"root=${nandroot} " \
"rootfstype=${nandrootfstype}\0" \
修改后:
"rootpath=/usr/local/ti-sdk-am335x-evm/targetNFS\0" \
"nandargs=setenv bootargs console=${console} " \
"${optargs} " \
"root=/dev/nfs " \
"nfsroot=${serverip}:${rootpath},${nfsopts} rw " \
"ip=192.168.0.6:192.168.0.220:192.168.0.1:255.255.255.0::eth0:off\0" \
改完之后重新编译uboot,下载到nand中,重启板子,走到加载文件系统时,系统提示,
没有指定服务器地址, 然后继续从nand启动,失败。
检查了半天,我在uboot中增加下面命令,并保存
setenv serverip 192.168.0.220
saveenv
(后来发现,这u-boot中的这个配置不用编译生成,可以在u-boot命令行中设置也行,反正都是保存在env区域 )
重启后,板子可以挂载虚拟机的nfs文件系统,但是出现很多错误,
Permission denied
这些错误一般都是am335x没有权限写、执行nfs中的文件导致的,因此需要在虚拟机中执行下面操作来解决
chmod -R 777 /usr/local/ti-sdk-am335x-evm/targetNFS/*
重启nfs服务,TI 提供的SDK中启动nfs 服务是这样操作的,
sudo /etc/init.d/nfs-kernel-server stop
sudo /etc/init.d/nfs-kernel-server start
重启am3355x板子,又发现新问题。
启动NFS后出现错误: request_module: runaway loop modprobe binfmt-0000
经baidu一下,可能是nfs文件系统有问题,因为这个targetNFS是虚拟机本来就建好的,我猜想可能有问题。
执行安装目录下bin/setup-targetfs-nfs.sh文件,重新生成targetNFS目录,
重启板子,运行正常。
但串口不能使用,只能通过telnet登录,用户名root,没有密码