Linux教程

嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS问题

本文主要是介绍嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

描述:

前段时间在buildroot搭建的根文件系统中移植过wifi驱动并且调试成功,一般来说,buildroot构建的文件系统比较完整,但最近使用busybox来构建了根文件系统,后者就比较简陋,很多文件都是靠自己去创建等等,所以在移植wifi网卡的时候就出现了缺乏某些文件导致功能不能正常使用的问题,现在就记录一下使用busybox里的小工具udhcpc能成功动态获取ip地址,但没能自动设置DNS,也就没能上网的问题。

现象:

...
wlan0: associated
udhcpc: started, v1.32.0
udhcpc: sending discover
udhcpc: sending select for 192.168.1.14
udhcpc: lease of 192.168.1.14 obtained, lease time 3599
/ # 
/ # ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 70:F1:1C:27:C6:A4
          inet6 addr: fe80::72f1:1cff:fe27:c6a4/64 Scope:Link
          inet6 addr: 2408:8456:3000:abe4:72f1:1cff:fe27:c6a4/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:11065 (10.8 KiB)  TX bytes:1832 (1.7 KiB)

/ #

解决:

将busybox-1.xx.x/examples/udhcp/目录下的simple.script文件(注意不是sample.script)拷贝到根文件系统的/usr/share/udhcpc/目录下,将它重命名为default.script,并且chmod +x default.script加上可执行权限即可。

完成之后就可以正常使用了:

...
wlan0: associated
udhcpc: sending discover
udhcpc: sending select for 192.168.1.14
udhcpc: lease of 192.168.1.14 obtained, lease time 3599
Setting IP address 192.168.1.14 on wlan0
Deleting routers
route: SIOCDELRT: No such process
Adding router 192.168.1.228
Recreating /etc/resolv.conf
 Adding DNS server 192.168.1.228
/ #
/ # ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 70:F1:1C:27:C6:A4
          inet addr:192.168.1.14  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::72f1:1cff:fe27:c6a4/64 Scope:Link
          inet6 addr: 2408:8456:3000:abe4:72f1:1cff:fe27:c6a4/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7416 (7.2 KiB)  TX bytes:1690 (1.6 KiB)

/ #
/ # ping www.baidu.com
PING www.baidu.com (163.177.151.109): 56 data bytes
64 bytes from 163.177.151.109: seq=0 ttl=53 time=47.980 ms
...

参考文章:

  • Linux:命令行调试WiFi(iwlist/iwconfig/iw/wpa_supplicant/wpa_cli/dhclient/dhcpd/hostapd/hostapd_cli的使用方法)
  • Linux驱动:在imx6ull上适配RT3070 USB WiFi网卡
  • 使用udhcpc能获取到DHCP自动分配的IP,但是该IP却没有设置到网卡上
这篇关于嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!