2018年8月1日 星期三

busybox 的 udhcpc 執行後,印出的訊息中有取到ip,但是本地端ip沒有更改

今天在我們自己Build的Linux kernel上要使用udhcpc -i eth0來自動分配ip

原先所設定的Static IP為 192.168.1.3 如下:








使用udhcpc -i eth0 指令後,結果出現如下的情形:











udhcpc有從Server端取到IP,但是卻沒設定到eth0介面,後來爬文發現,udhcpc執行的流程會去執行 /usr/share/udhcpc/default.script,這個script會把從Server端取到的IP設定到網路介面


/usr/share/udhcpc/default.script 內容如下:
#################################################
#!/bin/sh

# udhcpc script edited by Tim Riker <Tim@Rikers.org>

[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

RESOLV_CONF="/etc/resolv.conf"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"

case "$1" in
  deconfig)
    /sbin/ifconfig $interface 0.0.0.0
    ;;

  renew|bound)
    /sbin/ifconfig $interface $ip $BROADCAST $NETMASK

    if [ -n "$router" ] ; then
      echo "deleting routers"
      while route del default gw 0.0.0.0 dev $interface ; do
        :
      done

      for i in $router ; do
        route add default gw $i dev $interface
      done
    fi

    echo -n > $RESOLV_CONF
    [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
    for i in $dns ; do
      echo adding dns $i
      echo nameserver $i >> $RESOLV_CONF
    done
    ;;
esac

exit 0
####################################################

請自行新增這個檔案,並且使用 chmod 777 /usr/share/udhcpc/default.script,確保可執行。
之後再去執行udhcpc -i eth0 就可以了

沒有留言:

張貼留言