碰到这个问题我们需要做的是在bootargs这个内核参数中给出固定的IP ,不然他就一直再哪里配置,配置完参赛再去启动内核。所以自己定义IP。
原因是为了支持NFS作为根文件系统,而在内核配置的时候选择自动配置IP如下:
但是在内核又不能正确的自动配置,因此就卡在这里了。这个IP参数是在uboot传递过来的。
ip参数的格式如下:
ip=::::::
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=::::eth0:off 请注意中间冒号的个数。其他各项可以根据自己的实际情况来指定相应的值。
现在时有两种办法解决以上问题,
第一是在内核配置的时候,不选择自动配置。
第二是可以在uboot里面设置禁用自动配置。
例如:
setenv bootargs mem=84M console=ttyS0,115200n8root=/dev/mtdblock3 rw ip=192.168.1.29:192.168.1.211:192.168.1.1:255.255.255.0:::off
通常情况下,如果不需要nfs,则只需配上ip=