Update lfs-uefi.txt
[linux_from_scratch_hints.git] / OLD / dhcpcd.txt
blob840df65249a5b47a5a1d41a72bc0dbc85e2a02df
1 TITLE:          DHCP client daemon
2 LFS VERSION:    3.3+ (should work on older versions if bootscrips are updated)
3 AUTHOR:         D.J. Lucas <dj_me@swbell.net>
4                 Last updated 08/20/2002
6 SYNOPSIS:       How to setup a DHCP client daemon. This is used with most
7                 xDSL and cable gateways/routers and for cable ISPs.  Also
8                 used, nowadays, on almost all corporate networks to set up
9                 non mission critical servers and most workstations.
10 ______________________________________________________________________________
11 THIS HINT WILL NO LONGER BE UPDATED BEYOND 08/20/2002.  
12 ALL INFORMATION HAS BEEN INCLUDED IN THE BLFS BOOK AVAILIBLE AT:
14 http://beyond.linuxfromscratch.org/
16 Rest assured, you will find a much broader and more thorough collection 
17 of easy to follow instructions and 'hints' for things to do with your shiny 
18 new LFS sytem on the BLFS site.  Check it out!
19 ______________________________________________________________________________
21 HINT:  After reading the dhcpd hints by Simon Perreault <nomis80@videotron.ca>
22 and Thinus Pollard <thinusp@olienhout.org.za>, I had an excelent grasp on the
23 configuration and use of dhcpcd.  I, however, felt the need to expand on their
24 ideas and incorporate the use of the DHCP client into the network (ethnet on
25 previous versions) init script.  This will both reduce the amount of scripts in
26 /etc/rc.d/init.d/, and also allow for an easy change back to a static network
27 should the need arise.
29 NOTE:  Just a basic reminder....because this works on my system, dosen't mean
30 that it will work on yours, tho it should.  Even though these are just script
31 changes, IT IS ALWAYS A GOOD IDEA TO BACKUP any existing files that will be
32 changed, deleted, modified, moved, etc....    Also, I do not go into any of
33 the advanced options for cable/*DSL modems that may be required by some ISPs.
34 These options are covered in the man-pages for the client, however, if you are
35 having problems with broadband modems, look for the -D, -H, -I, and -i switches.
36 Furthur more, cable modem users will probably not want to use the -k option in
37 the ifdown-eth0 script below.  Change to this to killproc or ifconfig down 
38 on cable modem setups to preserve the cache file.  'man dhcpcd' for more info.
40 How to install and configure the DHCP client daemon according to the LFS
41 standards.
43 1. Get the current version of dhcpcd at:
44         ftp://ftp.phystech.com/pub/dhcpcd-1.3.22-pl1.tar.gz
45 2. Obtain the LFS patch for DHCPCD.
46         http://www.lucasit.com/linux/dhcpcd-1.3.22-pl1.patch.bz2
47 3. Unpack the archive, patch, and install.
48 _______________________________________________________________________________
49         tar -zxf dhcpcd-1.3.22-pl1.tar.gz 
50         bzip2 -d dhcpcd-1.3.22-pl1.patch.bz2 &&
51         cd dhcpcd-1.3.22-pl1 &&
52         patch -Np1 -i ../dhcpcd-1.3.22-pl1.patch &&
53         ./configure --prefix="" --sysconfdir=/var/lib \
54                 --mandir=/usr/share/man &&
55         make &&
56         make install
57 _______________________________________________________________________________
59 Command Explanation:  
61 patch -Np1 -i ../dhcpcd-1.3.22-pl1.patch
62 The LFS patch changes the location of the cache, info, and pid files to be
63 both LFS freindly and FHS compliant.  This was added to make sure that cleanfs
64 correctly removes the pid files when the system is restarted without being
65 properly shut down.  FYI: Cache files are now kept in /var/cache, info files
66 are still kept in <ConfigDir> which is now, by default /var/lib/dhcpc, and
67 pid files are now stored correctly in /var/run.  All three changes were made
68 to make the client FHS compliant.
70 --prefix=""   
71 We do not want to install dhcpcd in prefix=/usr because in a lot of systems,
72 usr may be network mounted.  Also, this is not a program that we'd have most
73 users access, so it makes sense to me to install in /sbin. However, it is 
74 your LFS system, so do as you see fit.
76 --sysconfdir=/var/lib  
77 Tells the install script to create the */dhcpc directory in /var/lib as this
78 is now the default location of <ConfigDir>. 
80 --mandir=/usr/share/man  
81 Tells the install script to place the man files in /usr/share/man.
82 _____________________________________________________________________________
84 4. Create the new device specific scripts.
86 If you are using a version of LFS prior to 3.3, see my old hint for the 
87 scripts that will work.  The old hint is availible here: 
89 http://hints.linuxfromscratch.org/hints/old/dhcpcd.txt
91 We will create the $nework_devices/ifup-eth? and $network_devices/ifdown-eth?
92 files. This method proves to be a much easier method for new device types that 
93 weren't accounted for in the base build.  Also, we now will not mess with your 
94 existing config files, so should you need to return to a static assigned IP, 
95 we can simply delete the scripts we've created. In the following example, we 
96 are creating a script for eth0, if you need for eth1, rename the files to 
97 ifup-eth1 and ifdown-eth1 respectively, and edit for eth1.
98 ______________________________________________________________________________
99 cat > /etc/sysconfig/network-devices/ifup-eth0 << "EOF"
100 #!/bin/sh
101 # Begin /etc/sysconfig/network-devices/ifup-eth0
103 source /etc/sysconfig/rc
104 source $rc_functions
106 echo "Bringing up the eth0 interface via DHCP..."
107 /sbin/dhcpcd eth0
108 evaluate_retval
109 # End /etc/sysconfig/network-devices/ifup-eth0
111 _______________________________________________________________________________
112 cat > /etc/sysconfig/network-devices/ifdown-eth0 << "EOF"
113 #!/bin/sh
114 # Begin /etc/sysconfig/network-devices/ifdown
116 source /etc/sysconfig/rc
117 source $rc_functions
119 echo "Bringing down the eth0 interface..."
120 /sbin/dhcpcd -k eth0
121 evaluate_retval
123 # End /etc/sysconfig/network-devices/ifdown
125 chmod 755 /etc/sysconfig/network-devices/ifup-eth0
126 chmod 755 /etc/sysconfig/network-devices/ifdown-eth0
127 ______________________________________________________________________________
129 5. Bootscrpt handling.
131 Another issue has come to surface with the way LFS handles shutdowns and
132 restarts in the new scripts.  By default, in runlevel 0 and runlevel 6, network
133 is called as K80, this causes a problem because dhcpcd is exacly as it's name
134 implies, a daemon.  In both of these runlevels, sendsignals is run at K50,
135 before the network script has a chance to run, therefore, the dhcp client
136 daemon is killed by the time the script runs.  I don't know if this is a good
137 idea or not, but it works for what little I have on my system.  It seems to me
138 that a lot of network services that will possibly be installed will be daemons,
139 and that sendsignals should be run after the network is properly shut down.
140 I'd appreciate any feedback that anybody could give on this statement.  Run
141 the following commands to eliminate this problem as I have.
142 ------------------------------------------------------------------------------
143 mv /etc/rc.d/rc0.d/K80network /etc/rc.d/rc0.d/K45network
144 mv /etc/rc.d/rc6.d/K80network /etc/rc.d/rc6.d/K45network
145 ______________________________________________________________________________
147 As you can see, this will run the network script at K45, prior to sendsignals
148 at K50, eliminating this problem.  There may be other problems that surface if
149 you do not move network dependent Kills before K45 on some systems.  This may
150 not be the ideal solution for all systems.  It's your own LFS, check it out.
151 It has also been suggested that sendsignals should be moved to K70 (moving 
152 everything currently behind it as well to allow for more room between the K40
153 and K50. This is up to you, again, it's your LFS system, do what you like!
154 _____________________________________________________________________________
156 6.  Changes to /etc/sysconfig/network
158 Note:  The dhcpcd client handles the route setup internally if a default gateway
159 is provided by the DHCP server.  If a card configured via DHCP is given a
160 default gateway by the DHCP server, then that card is automatically put into
161 the routing table as a default route.  If you should need to disable this 
162 feature, see the manpages for dhcpcd and route (man dhcpcd or man route)
164 You will need to chage the /etc/sysconfig/network file if the default route
165 device is now being configured by DHCP.  If your default route device is 
166 now set up by DHCP, then you'll need to comment out (#) the "GATEWAY" and the 
167 "GATEWAY_IF" variables.  Make a backup copy and fix it with the following:
168 _______________________________________________________________________________
169 cd /etc/sysconfig
170 cp network network.bak
171 sed 's/GATEWAY/# GATEWAY/' network.bak > network
172 _______________________________________________________________________________
174 7.  Before you reboot you need to test the system.  Start by running ifconfig
175 with no options to see which devices are enabled.  Disable all devices except
176 lo by running:
177 _______________________________________________________________________________
178 ifconfig <device name> down
179 _______________________________________________________________________________
181 Now start the network using the following command:
182 _____________________________________________________________________________
183 /etc/rc.d/init.d/network start
184 _____________________________________________________________________________
186 Look for any failures and try to track them down.  If you have no failures,
187 run ifconfig and make sure everything looks okay.  Also check that your
188 routing is set up correctly by running route with no argurments.  If
189 everything looks good, then stop the network.
190 _____________________________________________________________________________
191 /etc/rc.d/init.d/network stop
192 _____________________________________________________________________________
194 Again look for any failures and track them down.  Again run route and ifconfig,
195 and look for any interfaces that aren't supposed to be there.  If there are no
196 interfaces, besides lo and any static cards, returned by ifconfig and there
197 are no routes set,congratulations.  Reboot your system and continue on your
198 path with LFS.
200 If you do have failures that you cannot track down.  Please feel free to
201 e-mail me <dj_me@swbell.net> or better yet, use the blfs-suport mailing list
202 <blfs-support@linuxfromscratch.org>.  Be sure to include the full problem 
203 description (as much of it as you understand), the exact error message, and 
204 the text of all your relevant config files.  Also, if you are not subscribed
205 to the mailing list, please request that you be CC'd on all replies to your
206 inquiry for help.  If you do have problems, you've made a backup of everything,
207 so put the backups back where you got them from.
208 ______________________________________________________________________________
210 8.  Conclusion:  "I hope this helps somebody out there ;)" -- Thinus Pollard
211 I'd like to thank Thinus Pollard and Simon Perreault for their versions of
212 this hint....which had my LFS system up and running in under an hour.  I'd
213 also like to thank the following dedicated LFS users who took the time to track
214 down the problems in the previous versions of this hint.
216 Special thanks to: Robert Smol, Rich Jones, Phil Gendreau, Cli - corrected 
217 dhcpcd -k $Device, Markku Tikkanen, Tijmen Stam - provided cable modem info,
218 Steve Hayashi, Wolfgang Scheicher - provided dhcpcd default gateway and routing
219 info, Carl Spelkens - corrected the runlevels before I even wrote this hint,
220 and Oliver Brakmann - provided the patch for correcting the locations of the 
221 state, cache, and pid files.
224 The new scripts in 3.3+ have disolved quite a few of the issues encountered in
225 the previous hints. So a big thanks to Gerard and the entire LFS Devel crew!  
226 Many many thank for a truely incredible project!  As always, please send any 
227 tips, suggestions, flames...etc, to: dj_me@swbell.net.
229 -- D.J. Lucas <dj_me@swbell.net>