dhcpcd移植

【目的】

移植dhcpcd的目是在AM335X开发板上使用dhcp功能,获取WAN口设备的IP,并且可以通过参数指定其matric,matric值越小,其优先级越高。如设备可以以太网,WIFI,4G上网时,可定制外网功能,以太网优先级最高,WIFI次之,4G优先级最低。

【环境】

1、  Ubuntu 16.04发行版

2、  MC183平台

3、  交叉编译器arm-linux-gnueabihf-gcc-4.7.3

【步骤】

1、下载dhcpcd-6.7.1.tar.gz源码。

2.  交叉编译dhcpcd-6.7.1.tar.gz。

解压dhcpcd-6.7.1.tar.gz

tar zvxf  dhcpcd-6.7.1.tar.gz

cd dhcpcd-6.7.1

配置:

./configure --libexecdir=/lib/dhcpcd --dbdir=/var/lib/dhcpcd

编译:

make CC=arm-linux-gnueabihf-gcc

报如下错误:

arm-linux-gnueabihf-gcc  -o dhcpcd common.o control.o dhcpcd.o duid.o eloop.o if.o if-options.o script.o dhcp-common.o dhcpcd-embedded.o if-linux.o arp.o dhcp.o ipv4.o ipv4ll.o ipv6.o ipv6nd.o dhcp6.o if-linux-wext.o auth.o compat/arc4random.o compat/arc4random_uniform.o compat/closefrom.o compat/strlcpy.o crypt/hmac_md5.o crypt/md5.o crypt/sha256.o

common.o: In function `get_monotonic':

common.c:(.text+0x6a): undefined reference to `clock_gettime'

auth.o: In function `get_next_rdm_monotonic':

auth.c:(.text+0x12): undefined reference to `clock_gettime'

collect2: error: ld returned 1 exit status

Makefile:99: recipe for target 'dhcpcd' failed

make: *** [dhcpcd] Error 1

解决方法:在config.mk当中添加如下语句,重新make,即可编译通过。

LDADD+=-lrt

交叉编译之后,所需要的文件:

dhcpcd可执行文件

dhcpcd-run-hooks  需要给其赋可执行权限

hdcpcd-hooks  dhcpcd运行行,会通过dhcpcd-run-hook,调用dhcpcd-hooks下面的脚本,如生成/etc/resolv.conf等。

如下所示为集成到系统当中的位置。其中resolv.conf.head, resolv.conf.tail为dns服务器的配置:

# cat dynamic-configure-network/etc/resolv.conf.head

nameserver 114.114.114.114

# cat dynamic-configure-network/etc/resolv.conf.tail

nameserver 8.8.8.8

├── bin

│   ├── dhcpcd

├── etc

│   ├── dhcpcd.conf

│   ├── resolv.conf.head

│   ├── resolv.conf.tail

├── lib

│   └── dhcpcd

│       ├── dhcpcd-hooks

│       │   ├── 01-test

│       │   ├── 02-dump

│       │   ├── 10-mtu

│       │   ├── 10-wpa_supplicant

│       │   ├── 15-timezone

│       │   ├── 20-resolv.conf

│       │   ├── 29-lookup-hostname

│       │   ├── 30-hostname

│       │   ├── 50-dhcpcd-compat

│       │   ├── 50-ntp.conf

│       │   ├── 50-ypbind.in

│       │   └── 50-yp.conf

│       └── dhcpcd-run-hooks

3.  测试:

获取以太网口IP地址:

dhcpcd eth0

指定默认路由的metric值

dhcpcd –m 1 eth0

如果网线没有插的话,运行dhcpcd 时,会退出,

通过指定参数-t  0,保证以网未插入时,dhcpcd服务不退出,

这样的支持以太网线的插拔时

dhcpcd –m 1 –t 0 eth0

am335x system upgrade rootfs for dhcpcd cross compile(十三)的更多相关文章

  1. am335x system upgrade rootfs for bridge-utils cross compile (十四)

    bridge-utils移植 [目的] 移植bridge-utils的目是在AM335X开发板上使用bridge功能. [环境] 1.  Ubuntu 16.04发行版 2.  MC183平台 3.  ...

  2. am335x system upgrade rootfs using yocto make rootfs(十二)

    1      Scope of Document This document describes how to make am335x arago rootfs using ycoto project ...

  3. am335x system upgrade rootfs custom service using systemd script(十七)

    1      Scope of Document systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序.功能包括:支持并行化任务: ...

  4. am335x system upgrade set/get current cpufreq(二十一)

    1      Scope of Document This document describes am335x cpufreq technology insider. 2      Requireme ...

  5. am335x system upgrade kernel tf(五)

    1      Scope of Document This document describes TF hardware design 2      Requiremen 2.1     Functi ...

  6. am335x system upgrade uboot nand boot(三)

    在uboot 下初始化nand,一般需要做如下工作: 第一: 配置默认从NAND boot Index: include/configs/am335x_evm.h=================== ...

  7. am335x system upgrade uboot ethernet(二)

    系统可以通过SD卡引道之后,为了之后了调试方便 通过查看网卡的硬件设计 正常来说需要注意的有如下几点: 1) 网口 的接线方式: RMII 2) 网口的PHY地址两张网口,这里我们只需先初始化一张网卡 ...

  8. am335x system upgrade kernel ethernet(四)

    1      Scope of Document This document describes ethernet hardware design and porting KZS8081 to ubo ...

  9. am335x system upgrade kernel ec20 simcom7600ce(十一)

    1      Scope of Document This document describes 4G hardware design, support quectel ec20 4G module/ ...

随机推荐

  1. Django总结篇

    1.0 简述http协议和常用请求头 http协议: ( 基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)) HTTP协议是Hyper Text Transfer Pro ...

  2. 开源图像识别库OpenCV基于Maven的开发环境准备

    1.安装 JDK 8+,并设置 JAVA_HOME 环境变量 2.安装 Maven,并将 “/bin” 子目录设置到 path 环境变量 3.下载 OpenCV,官网传送门 也可以直接下载本人瘦身之后 ...

  3. JavaScript中的原型prototype和__proto__的区别及原型链概念

    问题 初学js的同学,总是搞不清楚js中的原型是什么东西,看着控制台打印出来的一串串__proto__,迷惑不已. 例如我定义一个Person,创建一个实例p,并打印实例. function Pers ...

  4. postman调用webapi错误记录

    1.webapi ,接口中header中,value 不能太长,太长会报错 结局:value中不要存太长的数据 2.如果key 中有中文,会获取不到数据 , 解决:需要把中文转码,然后后端解码 3.如 ...

  5. java之struts2之异常处理

    1.在应用项目中,异常的出现时很正常的.而且项目上线后发生异常也很正常的.那么需要对这些异常有相应的处理机制,以便客户能够看你到更加友好的界面.Struts2中提供了异常处理机制. 2.Struts中 ...

  6. bat批处理删除多少天前的文件

    @echo off ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件. ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除. ::本例需要Win2003/Vist ...

  7. Unity UnityWebRequest实现与后端的交互

    一般我们与后端对接的时候会用到UnityWebRequest这里简单使用这个与后端进行交互这个是总类 using UnityEngine;using System.Collections;using ...

  8. node.js开发 npm包管理工具 npm 和 cnpm区别

    npm 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用 np ...

  9. Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient报错,问题排查

    背景 最近在整合pyspark与hive,新安装spark-2.3.3以客户端的方式访问hive数据,运行方式使用spark on yarn,但是在配置spark读取hive数据的时候,这里直接把hi ...

  10. PHP导出XML格式的EXCEL

    <?php function Export(){ set_time_limit(0); ob_start(); $biz = new ZaikuBiz(); $biz->setSearch ...