How to use DHCP in Linux
DHCP is the Dynamic Host Configuration Protocol, which allows a networked machine to obtain its IP address and other information automatically from a DHCP server.
There are two methods through which a Linux system can obtain an IP address using DHCP:
1. Kernel level configuration.
2. User level configuration.
Kernel level auto-configuration:
To use kernel level auto configurtion select below options in the Linux kernel configuration.
-> Networking support (NET [=y])
-> Networking options
-> TCP/IP networking (INET [=y])
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
Advantage:
In case of your root file system in NFS and wanted to have a IP dynamicaly configirued though DHCP, kernel level DHCP will come to rescue you. Using kernel level DHCP you will have have a valid IP address by the time the Linux kernel have completed the booting and can immediately mount an NFS root file system.
Disadvantage:
1. Can only configure basic network parameters, which do not include items such as DNS servers.
User level auto-configuration
I will use DHCP client applet that comes Busybox named udhcpc
As per Busybox:
udhcpc is a DHCP client geared primarily toward embedded systems, while striving to be fully functional and RFC compliant. The udhcp client negotiates a lease with the DHCP server and runs a script when a lease is obtained or lost.
User level auto-configuration is much more flexible, but has the does require that there is a root file system available when the system has finished booting which does not depend on the network being configured. This file system is usually on a Flash, SD/MMC, etc.,
In order to use udhcpc, the Linux kernel must be configured with packet socket support (CONFIG_PACKET):
-> Networking support (NET [=y])
-> Networking options
<*> Packet socket
Once the udchpc obtained or lost lease it will run a script. This script should configure the system ip, gateway, and resolv.conf etc. The busybox provides sample scripts, which is placed in the examples/udhcp/ directory.
copy the sample scripts to /etc/udhcpc/ of your device.
edit the file /etc/udhcpc/sample.script changed the path where the scripts are located.
exec /etc/udhcpc/sample.$1
Create a dummy script named sample.fail
$ touch /etc/udhcpc/sample.fail
Now start the DHCP client.
$ udhcpc -i wlan0 -s /etc/udhcpc/sample.script Configuring IP using DHCP udhcpc (v1.18.3) started Sending discover... Sending select for 192.168.7.10... Lease of 192.168.7.10 obtained, lease time 604800 deleting routers route: ioctl 0x890c failed: No such process adding dns 192.168.7.1 Initializing completed
That’s it.





December 8, 2011 at 6:40 PM
I can not find /udhcp/ directory in my busybox. Maybe you have a solution?
darkam_nn@hotmail.com
December 8, 2011 at 7:28 PM
It should be there in busybox. got to this link http://busybox.net/downloads/BusyBox.html and search for udhcp.
May be it is hided because of dependency, use as below. Start the ncursers based menuconfig then press / to active search, in the input box enter udhcp and it should show the details of the package and search match.
All the best.
December 8, 2011 at 9:22 AM
Hi,
I work in same field and involved in such works. If you are searching some one who can do work for you try freelancing website. like http://www.freelancer.com.
Otherwise contact some consulting companies, even the company I work does embedded software/hardware consulting (www.e-consystems.com). It is better to rely on companies.
All the best.
Best Regards,
Mohamed Thalib h.