让Linux内核不再卡死在DHCP请求上
作者:blacksword修订:XYZ@05072012(见红色部分)在做嵌入式产品时,大家通常都会遇到在bootloader里给linux传递ip地址的。在设置这个ip参数时,大部分人都是看着厂商或是其他人的设置依葫芦画瓢写上一个。但很少有人真正知道这个参数里面的每一项是怎么回事。然后当启动时内核走到:eth0: attached PHY driver [
·
作者:blacksword
修订:XYZ@05072012(见红色部分)
在做嵌入式产品时,大家通常都会遇到在bootloader里给linux传递ip地址的。
在设置这个ip参数时,大部分人都是看着厂商或是其他人的设置依葫芦画瓢写上一个。
但很少有人真正知道这个参数里面的每一项是怎么回事。
然后当启动时内核走到:
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, id=22161a)
Sending DHCP and RARP requests .
PHY: ffffffff:00 - Link is Up - 100/Full
..... timed out!
IP-Config: Retrying forever (NFS root)...
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, id=22161a)
Sending DHCP and RARP requests .
PHY: ffffffff:00 - Link is Up - 100/Full
..... timed out!
IP-Config: Retrying forever (NFS root)...
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, id=22161a)
Sending DHCP and RARP requests .
PHY: ffffffff:00 - Link is Up - 100/Full
这时内核卡死,系统死无法启动。很多人都在这里抓瞎,找人问,找厂商的FAE
而这样的问题通常厂商的FAE遇到都是非常头痛的。因为这些东西都非常detail的操作系统的问题(当然也与硬件的设计有一点点的小关系)。而对厂商的FAE而言,他们主要熟悉的还是硬件相关的。
那么今天在这里我们就讲述一下这个ip参数的问题。
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@laptop:~ $ 这样的一个提示符,blacksword指当前的用户,而laptop就是一个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 请注意中间冒号的个数。
其他各项可以根据自己的实际情况来指定相应的值。
修订:XYZ@05072012(见红色部分)
在做嵌入式产品时,大家通常都会遇到在bootloader里给linux传递ip地址的。
在设置这个ip参数时,大部分人都是看着厂商或是其他人的设置依葫芦画瓢写上一个。
但很少有人真正知道这个参数里面的每一项是怎么回事。
然后当启动时内核走到:
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, id=22161a)
Sending DHCP and RARP requests .
PHY: ffffffff:00 - Link is Up - 100/Full
..... timed out!
IP-Config: Retrying forever (NFS root)...
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, id=22161a)
Sending DHCP and RARP requests .
PHY: ffffffff:00 - Link is Up - 100/Full
..... timed out!
IP-Config: Retrying forever (NFS root)...
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, id=22161a)
Sending DHCP and RARP requests .
PHY: ffffffff:00 - Link is Up - 100/Full
这时内核卡死,系统死无法启动。很多人都在这里抓瞎,找人问,找厂商的FAE
而这样的问题通常厂商的FAE遇到都是非常头痛的。因为这些东西都非常detail的操作系统的问题(当然也与硬件的设计有一点点的小关系)。而对厂商的FAE而言,他们主要熟悉的还是硬件相关的。
那么今天在这里我们就讲述一下这个ip参数的问题。
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@laptop:~ $ 这样的一个提示符,blacksword指当前的用户,而laptop就是一个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 请注意中间冒号的个数。
其他各项可以根据自己的实际情况来指定相应的值。
更多推荐
已为社区贡献1条内容
所有评论(0)