NFS服务器IP地址:10.23.6.196
开发板IP地址:10.23.6.100
网关:10.23.6.255
setenv ipaddr 10.23.6.100
setenv serverip 10.23.6.196
setenv ethaddr 00:00:00:00:00:03
setenv nfsroot /home/pengrui/nfs
setenv gateway 10.23.6.255
setenv netmask 255.255.255.0
#ip参数的格式如下:
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
client-ip:
你正在使用的这块板子,你要为它设置的ip
server-ip:
提供nfs服务的服务器的ip地址。如不需要NFS服务于板子,则此项可以空置
gw-ip:
网关的ip地址,如果nfs与目标板在同一个网段内,则此项可以空置
netmask:
子网掩码,如此项为空,则子网掩码为默认值255.255.255.0
hostname:
你希望给目标板设置的主机名,在linux的shell中的如bash,命令行最开始有一个形如 blacksword@laptop2:~ $ 这样的一个提示符,blacksword指当前的用户,而laptop2就是一个hostname.此项可以留空
device:
如果目标板上仅一个网卡,且只接了一个PHY,同时电路的设计没有将PHY拉出两个地址来,则此项为空。 如果不指有一个网卡,则可以指定要设置的ip地址是作用于哪一个网卡的。 如指定给第一块网卡,则该参数为eth0. 第二块为eth1,依此类推。
autoconf:
自动配置未明确指定参数的方式,可以是dhcp, rarp, bootp。如果不希望使用自动配置则可以使用off值来关闭 autoconf参数可以独立作用于ip参数,如ip=dhcp即表示由dhcp服务器给内核的ip参数提供所有数据。 ip=off则表示所有参数都不配置,留待系统启动进行配置。
最稳妥而简化的指定静态ip的方法为 ip=<clinet-ip>::::eth0:off 请注意中间冒号的个数。其他各项可以根据自己的实际情况来指定相应的值。
如果IP参数设置不正确的话,会出现如下问题:
Sending DHCP and RARP requests …
原因是为了支持NFS作为根文件系统,而在内核配置的时候选择自动配置IP。因为我们需要做的是再bootargs这个内核参数中给出固定的IP ,不然他就一直再哪里配置,配置完参赛再去启动内核。所以自己定义IP。
这个IP的格式也是第一次去详细了解如下(参考别人的文章):
setenv bootcmd_nfs 'setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=${ipaddr}:${serverip}:${gateway}:${netmask}::eth0:off nfsroot=${serverip}:${nfsroot}'
setenv bootcmd 'mmc dev ${mmcdev};run loadimage;run bootcmd_nfs;run loadfdt;bootz ${loadaddr} - ${fdt_addr}'