dhcpcd is an implementation of the DHCP client specified in RFC2131. A DHCP client is useful for connecting your computer to a network which uses DHCP to assign network addresses. dhcpcd strives to be a fully featured, yet very lightweight DHCP client.
This package is known to build and work properly using an LFS-10.1 platform.
Download (HTTP): https://roy.marples.name/downloads/dhcpcd/dhcpcd-9.4.0.tar.xz
Download (FTP): ftp://roy.marples.name/pub/dhcpcd/dhcpcd-9.4.0.tar.xz
Download MD5 sum: c36715fc629bc40aa94aae06fa1724c2
Download size: 252 KB
Estimated disk space required: 3.6 MB (with tests)
Estimated build time: less than 0.1 SBU (with tests)
LLVM-11.1.0 (with Clang), ntp-4.2.8p15, chronyd, and ypbind
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/dhcpcd
Recent releases of dhcpcd
implement privilege separation. Additional installation steps are
necessary to set up the proper environment, which are performed by
issuing the following commands as the root
user:
install -v -m700 -d /var/lib/dhcpcd && groupadd -g 52 dhcpcd && useradd -c 'dhcpcd PrivSep' \ -d /var/lib/dhcpcd \ -g dhcpcd \ -s /bin/false \ -u 52 dhcpcd && chown -v dhcpcd:dhcpcd /var/lib/dhcpcd
Install dhcpcd by running the following commands:
./configure --libexecdir=/lib/dhcpcd \ --dbdir=/var/lib/dhcpcd \ --privsepuser=dhcpcd && make
To test the results, issue: make test.
Now, as the root
user:
make install
--libexecdir=/lib/dhcpcd
:
The default /libexec
is not
FHS-compliant. Since this directory may need to be available early
in the boot, /usr/libexec
cannot be
used either.
--dbdir=/var/lib/dhcpcd
:
The default /var/db
is not
FHS-compliant
--with-hook=...
: You can optionally
install more hooks, for example to install some configuration files
such as ntp.conf
. The set of hooks is
in the dhcpcd-hooks
directory in the
build tree.
To configure dhcpcd, you need to first
install the network service script, /lib/services/dhcpcd
included in the blfs-bootscripts-20210110 package (as
user root
):
make install-service-dhcpcd
the network
service script /lib/services/dhcpcd
contained in bootscripts
up to blfs-bootscripts-20191204 is not compatible with latest
dhcpcd, as the location of the pidfile changed. To work around
this, issue the following command:
sed -i "s;/run/dhcpcd-;/run/dhcpcd/;g" /lib/services/dhcpcd
The default
for dhcpcd is to
set the hostname and mtu. It also overwrites /etc/resolv.conf
and /etc/ntp.conf
. These modifications to system
files are done by hooks which are stored in /lib/dhcpcd/dhcpcd-hooks
. Setup dhcpcd by removing or adding
hooks from/to that directory. The execution of hooks can be
disabled by using the --nohook
(-C
) command line option or by the
nohook
option in the /etc/dhcpcd.conf
file.
Finally, as the
root
user create the /etc/sysconfig/ifconfig.eth0
configuration file
using the following commands. Adjust appropriately for additional
interfaces:
cat > /etc/sysconfig/ifconfig.eth0 << "EOF"
ONBOOT="yes"
IFACE="eth0"
SERVICE="dhcpcd"
DHCP_START="-b -q <insert appropriate start options here>
"
DHCP_STOP="-k <insert additional stop options here>
"
EOF
For more information on the appropriate DHCP_START
and DHCP_STOP
values, examine the man page for
dhcpcd.
Although not
usual, it is possible that you need to configure dhcpcd to use a fixed ip. Here, we give an
example. As the root
user create
the /etc/sysconfig/ifconfig.eth0
configuration file using the following commands. Adjust
appropriately for additional interfaces and for the actual ip and
router you need:
cat > /etc/sysconfig/ifconfig.eth0 << "EOF"
ONBOOT="yes"
IFACE="eth0"
SERVICE="dhcpcd"
DHCP_START="-b -q -S ip_address=192.168.0.10/24 -S routers=192.168.0.1"
DHCP_STOP="-k"
EOF
You can either use DNS servers in /etc/resolv.conf
from another system, your
preferred servers, or just the example /etc/resolv.conf.head
file below as is:
cat > /etc/resolv.conf.head << "EOF"
# OpenDNS servers
nameserver 208.67.222.222
nameserver 208.67.220.220
EOF
Last updated on 2021-02-19 11:42:41 -0800