嵌入式linux动态ip问题

时间:2022-05-01 08:24:06
RT,如何查看自己的linux系统是不是支持动态ip 如何设置ip自动分配?是和内核还是文件系统有关?
我的板子是在脚本里用ifconfig在启动的时候配置的固定ip,如果想改ip只能改这个脚本,这样板子多了就麻烦了,请问如何设置成动态分配呢?

23 个解决方案

#1


1、内核网络配置里要支持dhcp
2、编译的文件系统要有dhcp命令
3、板子所在的局域网里要有dhcp服务器

#2


你可以找到网卡的配置文件
比如/etc/init.d/ifconfig-eth0
修改脚本内容,使用udhcpc 来自动获取

#3


编一个DHCPCD程序放到板子里,开机的时候执行起来
只要所连接的网络上有DHCP服务器,就能自动配了

#4


引用 1 楼 qiyu1988 的回复:
1、内核网络配置里要支持dhcp
2、编译的文件系统要有dhcp命令3、板子所在的局域网里要有dhcp服务器
如何检查内核和文件系统是不是支持dhcp?、、/bin,/sbin目录里也没有dhcp相关的命令

#5


引用 2 楼 Idle_Cloud 的回复:
你可以找到网卡的配置文件
比如/etc/init.d/ifconfig-eth0
修改脚本内容,使用udhcpc 来自动获取
init.d里没有那个文件,整个文件系统里都没有那个文件

#6


以太口抓包看看是否有DHCP请求命令发送出去

#7


引用 5 楼 ShenDuYouLan 的回复:
Quote: 引用 2 楼 Idle_Cloud 的回复:

你可以找到网卡的配置文件
比如/etc/init.d/ifconfig-eth0
修改脚本内容,使用udhcpc 来自动获取
init.d里没有那个文件,整个文件系统里都没有那个文件
但是/sbin里倒是有udhcpc命令,请问我如何使用这个命令?

#8


你能看到网卡设备吗,你可以写个脚本
里面这样
ifconfig nicx up
udhcpc nicx 

nicx是你的网卡名。

#9


引用 8 楼 Idle_Cloud 的回复:
你能看到网卡设备吗,你可以写个脚本
里面这样
ifconfig nicx up
udhcpc nicx 

nicx是你的网卡名。

#ifconfig eth0 192.168.1.15 netmask 255.255.255.0;
#route add default gw 192.168.1.1;
ifconfig eth0 up;
udhcpc eth0;
我把上面配置ip的脚本注释掉,换成那个不行;全部脚本如下
modprobe libphy;
modprobe hiether rv_strat=2 rv_qcnt=512 hwq_recv=32 hwq_xmit=32 flimit=256;
ifconfig eth0 hw ether 00:10:35:12:35:12;
#ifconfig eth0 192.168.1.15 netmask 255.255.255.0;
#route add default gw 192.168.1.1;
ifconfig eth0 up;
udhcpc eth0;

#10


你原来那个脚本是静态的ip,能正常工作吗?

#11


引用 10 楼 Idle_Cloud 的回复:
你原来那个脚本是静态的ip,能正常工作吗?
可以的

#12


那个可以就没问题,你等他静态起来,在直接敲udhcpc eth0 命令应该就能自动拿到ip地址,你在吧这个命令到脚本里去替换静态那一部分。

#13


引用 12 楼 Idle_Cloud 的回复:
那个可以就没问题,你等他静态起来,在直接敲udhcpc eth0 命令应该就能自动拿到ip地址,你在吧这个命令到脚本里去替换静态那一部分。

1,静态配置好了还怎么自动分配呢?
2,这样和直接替换不是一样吗?我的希望是启动的时候自动分配啊

#14


1. 我只是想证明你那的udhcpc 能否在你那的环境正常工作。
2. 你只有第一步正常工作了,你在考虑第二步。

#15


引用 14 楼 Idle_Cloud 的回复:
1. 我只是想证明你那的udhcpc 能否在你那的环境正常工作。
2. 你只有第一步正常工作了,你在考虑第二步。

/mnt/SD/tde $ ifconfig eth0 up
/mnt/SD/tde $ udhcpc eth0
udhcpc (v0.9.9-pre) started
Jan  1 01:25:13 udhcpc[305]: udhcpc (v0.9.9-pre) started
m
Jan  1 01:25:13 udhcpc[310]: [truncated] m
m
Jan  1 01:25:13 udhcpc[305]: [truncated] m
/mnt/SD/tde $ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:10:35:12:35:12
          inet addr:192.168.1.15  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3685 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:451237 (440.6 KiB)  TX bytes:3042 (2.9 KiB)
          Interrupt:15

再次查看,还是那个静态ip

#16


那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。

#17


引用 16 楼 Idle_Cloud 的回复:
那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。
电脑dhcp可以分配到ip

#18


引用 16 楼 Idle_Cloud 的回复:
那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。

我在脚本里把设置静态ip的注释掉,换成udhcpc,不行:
modprobe mmz mmz=ddr,0,0xE2000000,128M;
modprobe libphy;
modprobe hiether rv_strat=2 rv_qcnt=512 hwq_recv=32 hwq_xmit=32 flimit=256;
ifconfig eth0 hw ether 00:10:35:12:35:12;
#ifconfig eth0 192.168.1.15 netmask 255.255.255.0;
route add default gw 192.168.1.1;
ifconfig eth0 up;
udhcpc eth0;

出现如下提示:
udhcpc (v0.9.9-pre) started
Jan  1 00:15:06 udhcpc[320]: udhcpc (v0.9.9-pre) started
m
Jan  1 00:15:06 udhcpc[325]: [truncated] m
m
Jan  1 00:15:06 udhcpc[320]: [truncated] m
网上有人说这是中断错误,请问了解吗

#19


另外补充一下,如果设置了静态ip再调用udhcpc会有什么结果?调用udhcpc正确的配置是不是只配置

#20


学习了,继续飘过。。

#21


我需要重新做文件系统吗?

#22


udhcpc (v0.9.9-pre) started
Jan  1 00:15:06 udhcpc[320]: udhcpc (v0.9.9-pre) started
m
Jan  1 00:15:06 udhcpc[325]: [truncated] m
m
Jan  1 00:15:06 udhcpc[320]: [truncated] m

以上提示表示程序运行出错吗?

#23


引用 16 楼 Idle_Cloud 的回复:
那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。

网上搜了一点资料,有人说可能是内核编译的时候相关选项没选上,我打开内核编译选项查看了下
  [*] TCP/IP networking
  [*]   IP: kernel level autoconfiguration
  [*]     IP: DHCP support
  [*] Network packet filtering framework (Netfilter)  --->
这几个我的内核好像  [*]   IP: kernel level autoconfiguration该项未选,另外 
 [*]     IP: DHCP support此项我怎么未找到在哪儿呢,了解吗?

#1


1、内核网络配置里要支持dhcp
2、编译的文件系统要有dhcp命令
3、板子所在的局域网里要有dhcp服务器

#2


你可以找到网卡的配置文件
比如/etc/init.d/ifconfig-eth0
修改脚本内容,使用udhcpc 来自动获取

#3


编一个DHCPCD程序放到板子里,开机的时候执行起来
只要所连接的网络上有DHCP服务器,就能自动配了

#4


引用 1 楼 qiyu1988 的回复:
1、内核网络配置里要支持dhcp
2、编译的文件系统要有dhcp命令3、板子所在的局域网里要有dhcp服务器
如何检查内核和文件系统是不是支持dhcp?、、/bin,/sbin目录里也没有dhcp相关的命令

#5


引用 2 楼 Idle_Cloud 的回复:
你可以找到网卡的配置文件
比如/etc/init.d/ifconfig-eth0
修改脚本内容,使用udhcpc 来自动获取
init.d里没有那个文件,整个文件系统里都没有那个文件

#6


以太口抓包看看是否有DHCP请求命令发送出去

#7


引用 5 楼 ShenDuYouLan 的回复:
Quote: 引用 2 楼 Idle_Cloud 的回复:

你可以找到网卡的配置文件
比如/etc/init.d/ifconfig-eth0
修改脚本内容,使用udhcpc 来自动获取
init.d里没有那个文件,整个文件系统里都没有那个文件
但是/sbin里倒是有udhcpc命令,请问我如何使用这个命令?

#8


你能看到网卡设备吗,你可以写个脚本
里面这样
ifconfig nicx up
udhcpc nicx 

nicx是你的网卡名。

#9


引用 8 楼 Idle_Cloud 的回复:
你能看到网卡设备吗,你可以写个脚本
里面这样
ifconfig nicx up
udhcpc nicx 

nicx是你的网卡名。

#ifconfig eth0 192.168.1.15 netmask 255.255.255.0;
#route add default gw 192.168.1.1;
ifconfig eth0 up;
udhcpc eth0;
我把上面配置ip的脚本注释掉,换成那个不行;全部脚本如下
modprobe libphy;
modprobe hiether rv_strat=2 rv_qcnt=512 hwq_recv=32 hwq_xmit=32 flimit=256;
ifconfig eth0 hw ether 00:10:35:12:35:12;
#ifconfig eth0 192.168.1.15 netmask 255.255.255.0;
#route add default gw 192.168.1.1;
ifconfig eth0 up;
udhcpc eth0;

#10


你原来那个脚本是静态的ip,能正常工作吗?

#11


引用 10 楼 Idle_Cloud 的回复:
你原来那个脚本是静态的ip,能正常工作吗?
可以的

#12


那个可以就没问题,你等他静态起来,在直接敲udhcpc eth0 命令应该就能自动拿到ip地址,你在吧这个命令到脚本里去替换静态那一部分。

#13


引用 12 楼 Idle_Cloud 的回复:
那个可以就没问题,你等他静态起来,在直接敲udhcpc eth0 命令应该就能自动拿到ip地址,你在吧这个命令到脚本里去替换静态那一部分。

1,静态配置好了还怎么自动分配呢?
2,这样和直接替换不是一样吗?我的希望是启动的时候自动分配啊

#14


1. 我只是想证明你那的udhcpc 能否在你那的环境正常工作。
2. 你只有第一步正常工作了,你在考虑第二步。

#15


引用 14 楼 Idle_Cloud 的回复:
1. 我只是想证明你那的udhcpc 能否在你那的环境正常工作。
2. 你只有第一步正常工作了,你在考虑第二步。

/mnt/SD/tde $ ifconfig eth0 up
/mnt/SD/tde $ udhcpc eth0
udhcpc (v0.9.9-pre) started
Jan  1 01:25:13 udhcpc[305]: udhcpc (v0.9.9-pre) started
m
Jan  1 01:25:13 udhcpc[310]: [truncated] m
m
Jan  1 01:25:13 udhcpc[305]: [truncated] m
/mnt/SD/tde $ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:10:35:12:35:12
          inet addr:192.168.1.15  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3685 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:451237 (440.6 KiB)  TX bytes:3042 (2.9 KiB)
          Interrupt:15

再次查看,还是那个静态ip

#16


那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。

#17


引用 16 楼 Idle_Cloud 的回复:
那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。
电脑dhcp可以分配到ip

#18


引用 16 楼 Idle_Cloud 的回复:
那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。

我在脚本里把设置静态ip的注释掉,换成udhcpc,不行:
modprobe mmz mmz=ddr,0,0xE2000000,128M;
modprobe libphy;
modprobe hiether rv_strat=2 rv_qcnt=512 hwq_recv=32 hwq_xmit=32 flimit=256;
ifconfig eth0 hw ether 00:10:35:12:35:12;
#ifconfig eth0 192.168.1.15 netmask 255.255.255.0;
route add default gw 192.168.1.1;
ifconfig eth0 up;
udhcpc eth0;

出现如下提示:
udhcpc (v0.9.9-pre) started
Jan  1 00:15:06 udhcpc[320]: udhcpc (v0.9.9-pre) started
m
Jan  1 00:15:06 udhcpc[325]: [truncated] m
m
Jan  1 00:15:06 udhcpc[320]: [truncated] m
网上有人说这是中断错误,请问了解吗

#19


另外补充一下,如果设置了静态ip再调用udhcpc会有什么结果?调用udhcpc正确的配置是不是只配置

#20


学习了,继续飘过。。

#21


我需要重新做文件系统吗?

#22


udhcpc (v0.9.9-pre) started
Jan  1 00:15:06 udhcpc[320]: udhcpc (v0.9.9-pre) started
m
Jan  1 00:15:06 udhcpc[325]: [truncated] m
m
Jan  1 00:15:06 udhcpc[320]: [truncated] m

以上提示表示程序运行出错吗?

#23


引用 16 楼 Idle_Cloud 的回复:
那你查查为什么不能dhcp工作啊,你电脑能够dhcp工作吗,你的板子udhcpc为什么不能工作啊,这些查完了。你9楼的脚本就能正常工作了。

网上搜了一点资料,有人说可能是内核编译的时候相关选项没选上,我打开内核编译选项查看了下
  [*] TCP/IP networking
  [*]   IP: kernel level autoconfiguration
  [*]     IP: DHCP support
  [*] Network packet filtering framework (Netfilter)  --->
这几个我的内核好像  [*]   IP: kernel level autoconfiguration该项未选,另外 
 [*]     IP: DHCP support此项我怎么未找到在哪儿呢,了解吗?