返回信息流想用NFS,同时又想上网,想把ARM板直接插到交换机上,但这个交换机是自动获取IP的。在ARM板上要怎么设置,容不容易实现?
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #8284同步于 2010/4/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
[求助]如何实现ARM板自动获取IP
nail
2010/4/19镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
简单的方法是:选一个目前未被使用的公网IP,将其静态配置给开发板。这样的配置就怕出现IP冲突,一旦冲突了,NFS就断,而且改为其他IP还要再重新配置。
不过虽然如此,我还是建议你静态配置!(或者给你的PC装个双网卡,开发板和第二网卡配置到同一网段,使用私有IP)
此问题还可以通过指定“uboot引导内核的参数”来实现,在引导参数中有个参数是ip,其中可以静态配置开发板ip和nfs server的ip,其中有个字段叫做autoconf(它可以指定使用RARP或者BOOTP或者IP地址等信息),当然这样就需要你的网络里有相应的server去响应了。
详细信息请参考linux kernel的doc,包括kernel-parameters.txt和nfsroot.txt
附件是kernel2.6.13的doc,仅供参考~
【 在 hobby 的大作中提到: 】
: 简单的方法是:选一个目前未被使用的公网IP,将其静态配置给开发板。这样的配置就怕出现IP冲突,一旦冲突了,NFS就断,而且改为其他IP还要再重新配置。
: 此问题还可以通过指定“uboot引导内核的参数”来实现,在引导参数中有个参数是ip,其中可以静态配置开发板ip和nfs server的ip,其中有个字段叫做autoconf(它可以指定使用RARP或者BOOTP或者IP地址等信息),当然这样就需要你的网络里有相应的server去响应了。
: 详细信息请参考linux kernel的doc,包括kernel-parameters.txt和nfsroot.txt
附件(43.6KB) kernel-parameters.txt
附件(7.8KB) nfsroot.txt
busybox有dhcp client功能的吧。
在KERNEL中需要将 Packet socket和IP: DHCP support编译进内核或编译成模块。在编译Busybox时把 Networking Utilities下udhcp Server/Client中的 udhcp Client (udhcpc)选上。
关键点要把examples/udhcp/simple.script 脚本文件做为default.script拷贝到/usr/share/udhcpc/default.script
运行udhcpc
~ # udhcpc
udhcpc (v1.5.1) started
Sending discover...
Sending select for 59.64.134.99...
Sending select for 59.64.134.99...
Sending select for 59.64.134.99...
Lease of 59.64.134.99 obtained, lease time 10800
deleting routers
route: SIOC[ADD|DEL]RT: No such process
adding dns 211.68.71.4
adding dns 211.68.71.5
adding dns 202.106.196.115
adding dns 202.106.0.20
补充一下,这两天看uboot的代码,发现也有dhcp支持。由此看来,uboot和kernel都支持多种方式获取IP,就看你需要什么了。
补充一下uboot下的相关内容的说明
上面说的bootp和RARP是可以在uboot引导内核时使用的,具体的:是在bootm命令运行时,uboot会读取环境变量bootargs的设置,并将其作为参数传递给kernel。因此也可以看到bootp和rarp的parameter说明是在kernel的doc里面。
另一方面,uboot自带了bootp, rarp和dhcp的命令。为了适用这些命令,需要在开发板头文件中定义一些宏(包括:CONFIG_COMMANDS,CFG_CMD_NET,CFG_CMD_DHCP等命令)。具体的执行过程,如果uboot启动后并未引导内核而是进入命令交互界面,可以通过这几个命令获取IP地址等信息。具体的命令及其实现请参考:uboot/net/bootp.c uboot/net/net.c uboot/common/cmd_net.c等文件
【 在 nail 的大作中提到: 】
: 谢谢版主,下附件再学学
嗯 这个也可行
单是这样就是执行到shell的时候才去获取IP了吧,如果应用场景类似于nfs中放着rootfs,那可能还是要在uboot里面获取好IP然后传给内核,或者内核启动时去自动获取了
【 在 hiboy 的大作中提到: 】
: busybox有dhcp client功能的吧。
: 在KERNEL中需要将 Packet socket和IP: DHCP support编译进内核或编译成模块。在编译Busybox时把 Networking Utilities下udhcp Server/Client中的 udhcp Client (udhcpc)选上。
: 关键点要把examples/udhcp/simple.script 脚本文件做为default.script拷贝到/usr/share/udhcpc/default.script
: ...................
【 在 hobby 的大作中提到: 】
: 补充一下,这两天看uboot的代码,发现也有dhcp支持。由此看来,uboot和kernel都支持多种方式获取IP,就看你需要什么了。
: 补充一下uboot下的相关内容的说明
: 上面说的bootp和RARP是可以在uboot引导内核时使用的,具体的:是在bootm命令运行时,uboot会读取环境变量bootargs的设置,并将其作为参数传递给kernel。因此也可以看到bootp和rarp的parameter说明是在kernel的doc里面。
: ...................
赞 真热心啊
最近uboot看的有不少收获啊
呵呵 是啊
这不趁着做师兄安排的那个volunteer task的时候顺便看了下嘛~
【 在 ssailing 的大作中提到: 】
: 赞 真热心啊
: 最近uboot看的有不少收获啊